前言:对于普通的文件而言,不仅有实际数据还有诸如文件权限,文件属性等元数据(meta data),对于Linux操作系统而言,文件系统通常将前者(实际数据)放置于data block中,权限和属性放置到inode中。
inode:记录文件的元数据(meta dada),一个文件占用一个inode,同时记录此文件的数据所在的block号码;
block:实际记录文件的内容,若文件太大时,会占用多个block。
注:除此之外还有个一个超级块(superblock)的概念,等到磁盘分区和文件系统的相关内容时,再详细讲解。
1. Inode和Block的对应关系
2. Inode表结构
对于Inode表结构需要注意的是:
1. 直接指针共计12个,直接指向存储的数据区域
如Block大小为4096,则前12个直接指针共计可以保存48KB大小的文件
2. 一级指针(间接块指针)可存储文件大小计算
按照每个指针占用4个字节,则一级指针指向的Block可保存4096/4个指针;
可指向1024个Blocks,一级指针可存储文件数量大小为1024*4098=4MB
3. 二级指针(双重间接块指针)可存储文件大小计算
同样指向Blocks大小为4096,则二级指针可保存的Block指针数量为(4096/4)(4096/4)=1024*1024,
则二级指针可保存的文件数量大小为(1024*1024)*4096=4GB
4. 三级指针(三重间接块指针)可存储文件大小计算
以一级、二级指针计算方法类推,三级指针可存储的文件数据大小为(1024*1024*1024)*4096=4TB
3. 目录的存储方式
对于目录而言,其存储方式和普通文件是有区别的,对于目录/data/test/{test1.txt,test2.txt},存储方式如下所示:
总结:
1. 对于文件夹而言,其数据块中放置的是在目录内文件名文件名并不是放置在节点表中。
2. 如果使用rm命令删除test1.txt或者test2.txt文件,删除的是节点表以及在文件夹数据块中的相关记录删除掉。
3. 对于用户能够删除某文件?需要关注的是用户对于文件所在文件夹是否有相关权限。
4. 硬链接
本质:同一个文件的的不同名字。
硬链接的特征:
1. 硬链接其本质就是对同一个文件起多个文件名,所以作为一个inode号可以对应多个文件名。
2. 文件有相同的inode及data block。
3. 只能对已存在的文件进行创建。
4. 不能跨分区创建硬链接。
5. 不能对目录进行创建,只可以对文件创建。
6. 删除一个硬链接文件并不影响其他有相同inode号的文件。
5. 软链接
本质:文件数据块中存放另一文件的路径名的指向的文件。
软链接的特征:
1. 软链接文件有自己的文件属性和权限等。
2. 可对不存在的文件或目录创建软链接。
3. 软链接可跨分区创建。
4. 软链接可对文件或目录创建。
5. 创建软链接时,链接计数不会增加。
6. 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接被称为死链接。
若被指向路径文件被重新创建,死链接可恢复为正常的软链接。
6. 软链接和硬链接的详细实验
请参看ln命令详解:https://www.jianshu.com/p/b673a5abf1c8