一、3种区块
Linux的文件系统中有3种区块:superblock,inode,block。
superblock
记录文件系统的整体信息,包括inode和block的总量,使用量,剩余量,文件系统的格式与相关信息等。
inode
记录文件的属性信息,包括权限,拥有者,所属组,修改时间等,并且保存真正存放数据的block序号。
block
存放具体数据,目录文件的block存放的是下面文件的<文件名,inode序号>。
二、4类文件
Linux的文件可分为4类:一般文件,目录文件,软符号链接文件与硬符号链接文件。
三、3种区块与4类文件的联系
接下来将以上3种区块与对这4类文件的操作联系起来。
3.1、增加
3.1.1、对一般文件
分配一个inode区块,根据文件大小分配一定数量的block区块,inode区块保存这些block区块的序号。
在所在目录中对应的block区块中增加一行记录,有该文件的<文件名,inode序号>。
3.1.2、对目录文件
分配一个inode区块,一般分配一个block区块[如果目录下面文件过多,可以分配多个block区块],inode区块保存这个block区块的序号。
在所在目录中对应的block区块中增加一行记录,有该目录文件的<文件名,inode序号>。
3.1.3、对软符号链接文件
分配一个inode区块,没有block区块,inode区块有个软符号链接文件的特殊标识,并且保存有“链接到文件”的路径,这个路径必须得是绝对路径,否则可能出错,相当于Windows操作系统下的快捷方式。
在所在目录中对应的block区块中增加一行记录,有该文件的<文件名,inode序号>。
3.1.4、对硬符号链接文件
不分配inode区块,也不分配block区块,直接在所在目录中对应的block区块中增加一行记录,有“链接到文件”的<文件名,inode序号>。
3.2、删除
3.2.1、对一般文件
回收inode和所有的block区块。
在所在目录对应的block区块中删除相应的<文件名,inode序号>。
3.2.2、对目录文件
回收inode和所有的block区块。
在所在目录对应的block区块中删除相应的<文件名,inode序号>。
3.2.3、对软符号链接文件
回收inode区块。
在所在目录对应的block区块中删除相应的<文件名,inode序号>。
3.2.4、对硬符号链接文件
在所在目录对应的block区块中删除相应的<文件名,inode序号>。
3.3、修改
3.3.1、对一般文件
修改的是block里面的内容。
3.3.2、对目录文件
修改的是block里面的内容。
3.3.3、对软符号链接文件
修改的是“链接到文件”的block里面的内容。
3.3.4、对硬符号链接文件
修改的是“链接到文件”的block里面的内容。
3.4、查看
3.4.1、对一般文件
查看的是block里面的内容。
3.4.2、对目录文件
查看的是block里面的内容。
3.4.3、对软符号链接文件
查看的是“链接到文件”的block里面的内容。
3.4.4、对硬符号链接文件
查看的是“链接到文件”的block里面的内容。
参考文献: [1]《鸟哥的Linux私房菜:基础学习篇》 [2]http://roclinux.cn/?p=754 [3]https://www.nixtutor.com/freebsd/understanding-symbolic-links/