Linux文件系统

在这里插入图片描述

文件系统理解

文件系统是操作系统为寻找和管理磁盘中的文件的方法和数据结构
文件系统是文件在磁盘等存储设备上存储的结构,而当文件加载到内存中时操作系统需要对内存中的文件进行管理,这两者不相同

磁盘寻址的规则

磁盘的结构图如下。

磁盘存在磁头(head),扇区(section),柱面(Cylinders),CHS寻址便是由上述3个磁盘硬件来决定的。
操作系统事实上要对磁盘进行管理,磁盘可以被拉长,看作一个线性空间,进行逻辑存储。
在这里插入图片描述

将这些空间进行有规则的合并,则磁盘会被分为多个块,每个块被称为分区,为了管理每个分区,分区又被分为了多个分组,我们只需要对分组进行管理,分区就会被管理的很好了。

文件在分组上的存储结构

在这里插入图片描述
分组的存储结构如上。
我们在之前学过,文件 = 文件属性 + 文件内容,这两个都要存储在磁盘中,其中,分组中的inodeTable则是文件属性存放的地方,Date blocks,则时文件内容存放的地方。

inode是一个结构体,该结构体内存放的是文件的属性。
其中存在一个inode值,用来唯一标示一个分区中的某一文件。
实际上,操作系统寻找文件都是通过inode值寻找,而并非文件名,所以文件名不是文件的属性。

inode Bitmap:用来快速查找inode Table中某个位置是否存有文件。
Block Bitmap:用来快速查找Data blocks中某个位置十分存有内容。

inode中存有一个block数组,用来映射该文件的存储空间,也可以通过不断映射扩大存储的数据。

GDT:GDT用来管理一个分组,其中存储这该分组的各种信息。
Super Block:用来管理一个分区,在一个分区内它会出现在个别分组前。

删除一个文件,只需要将该文件所在的目录的文件名inode的映射关系删除,随后将inode Table和inode Bitmap中的关于该文件的内容清理,并不清理文件的内容。
新增一个文件,则是按照inode Bitmap,就近选择位置存储文件。

系统查找文件详解

在前面,我们知道系统寻找文件不是通过文件名查找的,而是文件的inode值,而inode值只有在分区内才有效果,所以我们首先要找到该文件在那个分区
实际上,每个分区都是挂接在目录上的,我们要找到分区,只需要通过目录即可。

如寻找一个文件,首先需要递推式的找到根目录,随后通过挂接在目录上的分区,寻找下一个文件。

如/home/user/linux/test.c
先查找/下挂接的分区,找到home目录的inode,随后在挂接在home目录下的分区,找到user目录,以此类推。
目录也是文件,也需要存储在内存中,目录的文件内容是该目录下的所有文件/目录的文件名与inode的映射,这就是为什么可以通过文件名找到inode的原因。

软硬链接

建立软硬链接,可以使用指令ln

ln -s 建立软连接
在这里插入图片描述
由此可以发现软连接会创建一个链接文件,指向被链接的文件。
软连接类似于快捷方式。
ln 建立硬链接
在这里插入图片描述
由此可以发现,硬链接不会创建文件,实际上硬链接只会在当前目录下新增一个指向被链接文件的映射。
当我们创建硬链接后,文件描述中的数字由1变为了2。
该数字代表inode的引用数,多个文件名可以映射到一个inode中。
对于建立硬链接有一些注意事项
1.用户不能对目录建立硬链接,否则会导致无限循环。
2.每个目录下存在.和. .目录,.目录是当前目录的硬链接,. .是前一个目录的硬链接,由此,目录中的目录个数 = 引用数 - 2

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值