5.1UNIX文件系统概念
UNIX文件的概念:字节序列,字节流,设备的文件
1)普通文件
包括文本、程序、二进制、数据文件等。普通一般的逻辑结构有:堆;顺序文件;索引顺序文件;索引文件;直接(散列)文件
$od –cb filename 按每字符以8进制显示文件内容
2)目录文件
目录文件包含若干目录项,如:“.”、“..”,目录项内容:目录文件名,索引节点号
特点:整个UNIX文件系统只有一个根节点,且要通过安装来实现。
3)特殊文件
UNIX将涉及系统硬件资源的内容称做“特殊文件”,(设备文件化)
特点:
◎文件和设备的I/O统一处理;
◎命令解释执行时文件名和设备名有同样的语法和语义;
◎设备和普通文件处于同样的保护机制下。
分三类:
管道文件(有名称管道,无名称管道);(P)
块设备(一般以512字节为块大小);(b)
字符设备(c)。
另外:-:普通;d:目录;|:链接
4)文件许可机制
用ls –l 可以查看时:
-rwxr-xr-x 1 zhang group 72 sep 27 06:11 test
文件列表的前面9个字符即文件许可机制
注意:对目录的读:指可在命令执行时列出文件中的登记项,执行:当命令要分析路径名时,可检索到该路径名。
chmod命令可以改变文件许可权,它和.profile文件中的umask的作用正好相反,它告诉系统在创建文件时不给予什么存取许可。(linux /etc/bashrc)
一般文本文件默认的许可权为:rw-r--r--
可执行文件和目录文件的许可权为:-rwxr-xr-x
umask 一般设定为022(002)
创建文件默认最大权限为666
默认创建的文件没有可执行权限x位。与umask 如果umask的部分位或全部位为奇数,在对应为奇数的文件权限位计算结果分别再加1就是最终文件权限值。
创建目录默认最大权限777
默认创建的目录属主是有x权限,即允许用户进入。 对于目录来说umask的设置是在假定文件拥有八进制777权限上进行。
5.2UNIX文件系统设计
UNIX中最出色的部分,结构简单,管理规范,使用灵活
5.2.1文件管理系统结构
用户可见层
从文件到文件记录
文件I/O控制,如i节点
完成主存与辅存之间数据交换
与外设通信
文件逻辑结构
逻辑I/O管理
基本I/O管理
基本文件系统
字符设备驱动 块设备驱动
Linux系统目录呈树形结构,文件系统只有一个根目录(通常用“/”表示),在根目录下面包含有下级子目录或文件的信息;子目录中又可含有更下级的子目录或者文件的信息。由于这种结构有点像树枝状,因此我们也把这种目录配置方式称为“目录树(directory tree)”,如图5.3。
Linux文件目录系统
图5.3 目录结构
5.3物理卷和逻辑卷
1)物理卷和物理分区
每个独立的硬盘称为一个物理卷,需要mount,umount,(/dev/disk0,/dev/disk1),磁盘块即物理分区,大小512B~4KB,磁盘容量以块计。
2)逻辑卷和逻辑分区
一个文件系统即一个逻辑卷,文件系统按逻辑卷构造,可以是一个或多个物理卷中分区的集合,逻辑分区与物理分区大小一致,有镜像时,一个逻辑卷可以对应多个物理卷。
3)卷组
由一个或多个物理卷及其对应的逻辑卷构成,卷组是最大的存储单位,卷组描述区存放在卷组的前部,记载有关物理卷、逻辑卷的大小、个数、对应关系等
硬盘1
硬盘2
硬盘n
1 2 3 n n+1
逻辑分区
物理卷
卷组,最多32个物理卷
逻辑卷,最多256个
存储设备被格式化文件系统后,有block和inode两部分。
block是用来存放数据的,常为4kb,连续八个扇区组成一个block。扇区是磁盘上的最小存储单位,大小为512字节。
inode包含有文件的元信息,文件的字节数、文件拥有者的User ID、文件的Group ID、文件的读/写/执行权限、文件的时间戳、 链接数、 文件数据block的位置 。
inode
【例5-1】用stat命令查看文件test.sh的inode信息:
[root@localhost ~]# stat test.sh
File: `test.sh'
Size: 195 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 398165 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-12-20 08:36:31.416803161 -0800
Modify: 2017-12-20 08:35:51.022804347 -0800
Change: 2017-12-20 08:36:20.330804697 -0800
【例5-2】用df命令查看每个硬盘分区的inode总数和已经使用的数量。
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 1164592 100783 1063809 9% /
tmpfs 125514 7 125507 1% /dev/shm
/dev/sda1 76912 38 76874 1% /boot