【Linux系统编程十七】:(基础IO4)--文件系统(inode与软硬链接)

【Linux系统编程十六】:文件系统(inode与软硬链接)

一.磁盘硬件

Linux下的文件在磁盘中存储,文件的内容和属性是分开存储的!
文件的内容存储在数据块。
文件的属性存储在inode里。

我们首先需要先了解一下磁盘这个硬件的结构
在这里插入图片描述

磁盘的物理结构可以抽象成一个基于扇区数组的逻辑结构:
按着一定的算法,就可以按照LBA的方式访问磁盘的任意位置
在这里插入图片描述

因为这个扇区数组太大了,不好进行管理,所以我们首先对这个数组进行分区,划分成多个区域,只要能管理一个分区里的扇区,那么其他分区也就可以管理好。

但是每个分区还是比较大,所以我们又将每个分区分成若干个小块。block group想管理好磁盘,先管理好这些组块,管理好组块,就可以管理好分区,管理好分区就可以管理好磁盘。
每个组块由下面的几部分构成:
在这里插入图片描述

二.文件系统(inode)

每个块组都是由这6部分构成的,这部分就是文件系统。
Data blocks里存储的是文件的内容,文件的内容是以块的形式存储的。
inode里存储的是文件的属性,一个文件有唯一的inode。inode里还存储着一个块数组,这个块数组就是存储文件内容的块,所以只要找到该文件的inode,就可以根据该inode里的块数组找到该文件的内容。

Block Bitmap是干嘛的呢?它利用比特位的位置和块号映射起来,这样就可以表示这个块号是否被用。

inode Bitmap是干嘛的呢?它也是利用比特位的位和inode编号映射起来,那么比特位的内容就可以表示该inode是否是有效的。

在这里插入图片描述
在这里插入图片描述
其他部分的理解如图所示:
在这里插入图片描述
所以我们对于一个文件的增删查改,都是基于这个文件的inode,然后修改这个文件对应的inode bitmap 和 block bitmap里的内容,而不是真正的修改这个文件的内容。
但是存在一个问题,我们是怎么找到这个文件的?
我们原来的理解就是查找文件名字就可以查找到文件,现在理解文件系统,了解到,每个文件都有唯一的indoe编号。是根据inode的编号找到这个文件的。
但是文件的名字并不在inode里面,文件的名字并不属于文件的属性。
那文件的名字和文件的inode之间有什么联系呢?
在这里插入图片描述
目录也是文件,它有自己的inode,那么目录的数据块里存放的是什么呢?
目录的数据块里存放的是当前目录下所有文件的:文件名和inode的映射关系。

所以文件的文件名和inode之间存在着映射关系,这层关系存储在当前文件的目录的数据块里。
所以查找一个文件,必须要带有路径。这样目录将文件的文件名和inode映射起来。
所以查找一个文件,首先会先根据这个文件的indoe找到目录的数据块,就找到了文件的名字和inode映射关系。就可以找到文件了。

三.软硬链接

软硬链接是什么呢?
软连接是一个独立的文件,具有唯一的inode,也具有独立的数据块,而它的数据块里存放的是指向链接文件的路径。
就像window下的快捷方式,那些快捷方式并不是真正的程序,而只是一个文件标识。但是这个文件的数据块里存放的是该程序的存放路径。所以点击快捷方式,就可以执行程序。
在这里插入图片描述

硬链接不是独立的文件,因为它没有独立的inode,也就是硬链接形成的文件与链接指向的文件的inode一样。本质上就是在特定目录的数据块下新增,文件名和指向文件的inode的映射关系。多个文件名可以同时映射一个inode。
在一个目录文件中,有默认的两个隐藏文件,一个是.一个是…
.表示当前目录,…表示上一级目录。
那…是如何找到上上一级目录的呢?就是因为使用硬链接,…的inode和上一级目录的inode是一样的。.的inode和当前目录的inode是一样的。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小陶来咯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值