【lesson41】理解文件系统(2)

文章目录

  • 理解文件系统

理解文件系统

我们之前学过,一个文件可以有多个datablock块,但是如果这个文件太大了怎么办?datablock中,不是所有的datablock只能存文件数据,也可以存其它块的块号
【lesson41】理解文件系统(2)_第1张图片
inode Vs 文件名
找到文件的流程:知道inode编号->分区特定的块组->inode table块->属性和内容

那么我们怎么知道inode编号呢?
Linux中,inode属性里,没文件名的说法

预备知识:
1.一个目录下,可以保存很多文件,但是这些文件没有重复的文件名

2.目录时文件吗?
是->有自己的inode和datablock块。
而datablock块中存:文件和inode编号的映射关系。他们互为key值。
进入目录:必须有x权限
创建文件:必须有w权限
显示文件名与属性:必须有r权限
这些都是因为目录有自己的datablock块,所以要对datablock进行r\w,必须要有对应的r\w权限
inode编号是依托与目录结构

三个问题:
1.创建文件,系统做了什么
a.首先我们肯定是在目录下创建文件的。
b.其次OS根据文件系统,找到目录所对应的分区。
c.然后找到块组中的inode Bitemap找到第一个为0的比特位,将0置1后返回该比特位的位置下标的大小就是inode号。
d.再根据inode号找到inode table对该文件的信息进行初始化
e.之后再用Block Bitmap,找到对应空闲的block块号
f.再用block块号,找到空闲的block块,然后写入文件和inode的映射关系
【lesson41】理解文件系统(2)_第2张图片

2.删除文件,系统做了什么
a.根据文件名,找到inode
b.根据inode,将对应的inode Bitmap置为0
c.再将根据data block块号的BlockBitmap置为0
d.删除文件名和inode的映射关系
这样就删除了,不用清空数据,之后覆盖即可。
所以我们就可以理解文件恢复,就是根据之前的inode编号,找到对应的inode table然后恢复数据data block块。
恢复数据的前提:inode编号,没有被再次使用,inode table和data block内容没有被覆盖。

3.查看文件系统做了什么
a.根据文件名,找到inode
b.根据inode找到对应的datablock table
c.然后再显示datablock table的内容即可

软硬链接:
软:

ln -s testLink1.txt soft.link

硬:

ln testLink2.txt hard.link

创建软硬链接的过程
【lesson41】理解文件系统(2)_第3张图片
我们再根据信息看一下软硬链接的区别
【lesson41】理解文件系统(2)_第4张图片
我们看到软硬链接的本质区别:软链接有自己的inode,硬链接没有
软链接有自己独立的inode—>所以软链接是一个独立的文件
硬链接没有独立的inode---->所以硬链接不是一个独立的文件

软链接相当于Windows下的快捷键。

软链接特性:软链接的文件内容,是指向文件对应的路径
在这里插入图片描述
硬链接:
创建硬链接不是真正创建文件----->那么创建硬链接做了什么?---->就是在指定目录下,建立了文件名和指定的inode映射联系,仅此而已

属性中有个数字就是硬链接数
【lesson41】理解文件系统(2)_第5张图片
我们看一下如果删掉testLink2.txt会怎么样
【lesson41】理解文件系统(2)_第6张图片
发现硬链接数变成1.
用图帮助理解
【lesson41】理解文件系统(2)_第7张图片
当我们删除一个文件的时候,并不是立即将该文件inode删除,而是将这个文件的引用计数count–。
当引用计数count=0的时候,这个文件和文件inode才应该被删除。
引用计数count=0,表示没有文件和他关联了---->没有用户关系这个文件了!

测试以上思路,创建多个硬链接
【lesson41】理解文件系统(2)_第8张图片
我们发现确实如此

语法删除软硬链接
软链接

unlink + 文件名

【lesson41】理解文件系统(2)_第9张图片
硬链接

unlink + 文件名

【lesson41】理解文件系统(2)_第10张图片
我们创建一个目录,发现目录的引用计数是2,为什么?

【lesson41】理解文件系统(2)_第11张图片
1.首先目录本身会建立和inode的映射关系
【lesson41】理解文件系统(2)_第12张图片

2.其次目录里面的 . 文件也会建立和inode的映射关系
【lesson41】理解文件系统(2)_第13张图片
我们在test目录下再建文件夹会发现引用计数变成3
【lesson41】理解文件系统(2)_第14张图片
这是因为d1中的 … 也和test的inode建立了映射关系
【lesson41】理解文件系统(2)_第15张图片

acm
下面解释一下文件的三个时间:

  1. Access 最后访问时间
  2. Modify 文件内容最后修改时间
  3. Change 属性最后修改时间

你可能感兴趣的:(linux,服务器,数据库,Linux,文件系统)