linux文件系统
ext2文件系统示意图
启动扇区:安装启动引导程序MBR
data block:用于放置文件内容,格式化时每个block的大小就固定了,并且每个block都有编号,每个block最多只能放一个文件的数据
inode table:存放inode信息,inode重点介绍
inode记录的信息主要包括:
-
-
- 文件访问模式:r w x
- 文件所有者与组
- 文件大小
- 文件创建或改变的时间
- 最近一次读取的时间
- 最近修改的时间
- 定义文件特征的标志,如SetUID
- 文件真正内容指向
-
每个inode大小为固定的128bytes,每个文件对应一个inode,系统读取文件时先找到inode,然后分析inode所记录的权限与用户是否符合,符合才能开始读取block的内容,inode结构如下:
文件系统描述:记录每个block group的开始于结束的block号码,以及每个区段(superblock、bitmap、inodemap、datablock)分别介于哪个block号码之间,可以用dumpe2fs查看
block bitmap:记录哪些block是使用的和未使用的
inode bitmap:记录哪些inode是使用的和未使用的
与目录树的关系:
每一个目录同样对应一个inode,inode中记录该目录的相关权限和属性,该inode对应的block中记录在这个目录下的文件名与该文件名占用的inode号码数据,示意图如下
因此目录所占的空间均为block大小的整数倍
目录树的读取过程(以读取/etc/passwd文件为例):
连接文件
硬连接:文件内容是与inode相关的,文件名是与目录相关的,如果某个文件名对应到某个文件的inode号码,这就是一条硬连接
举例来说:假设在我的/home/yg目录下有一个test文件:
可以看到该文件inode序号为399406,目前只有一个连接指向它,然后我们创建一个硬连接test_link指向它,可以看到test test_link指向的是同一个inode,因而连接数变为2
硬连接的实际示意图如下:
删除文件时,只有当指向文件实际内容上所有的硬连接都被删除,才会将文件内容删除~硬连接不能跨文件系统,也不支持目录。
符号连接(软连接,类似windows的快捷方式)
符号连接是一个新文件,文件的内容就是指向文件的文件名,举例来讲,对/home/yg/test文件创建符号连接/root/symbol_link
示意图如下:
连接文件的内容就是目标文件的文件名 /home/yg/test 正好13个字节,和命令行中显示的结果一样。若文件被删除,则通过软连接将会访问失败。