Linux-文件系统

1. 物理结构

计算机的存储硬件有很多,这里讲磁盘。

磁盘的物理结构大致分为:

  • 磁盘(数据存储)
  • 磁头
  • 音圈马达
  • 主轴

所有的数据都存储在磁盘上,磁盘有很多片,每一个面都有对应的磁头来对数据进行更改

磁头是怎么找到对应的数据的呢?

磁盘存储的数据以扇区为基本单位(每个扇区512byte)

磁盘被划分为

想找到某一个扇区,就要找到,哪一个柱面,哪一个盘面,哪一个扇区

C:柱面,通过磁头的摆动

H:盘面,也可以是磁头,找到对应的磁头

S:扇区,通过盘面的旋转

所有找到磁盘上的某一个扇区,就需要知道CHS

数据存储在磁盘的一个个扇区中,在一圈圈磁道上,我们可以把这个空间抽象成一个线性结构,就像磁带

2. 逻辑结构

逻辑结构是线性结构,就像数组

我们对于磁盘的管理,转变成对于数组的管理

操作系统对于硬件,做了一个软件封装

LBA是操作系统的一个算法,把数组下标,转化为对应的CHS

通过数组下标,就找到了对应的扇区上的数据

3. 文件系统的管理

先对大的区间进行分组,分成小的块组,在对块组进行区域划分

Block Group:文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相 同的结构组成

超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量, 未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息,Super Block的信息被破坏,可以说整个文件系统结构就被破坏了

块组描述符(Group Descriptor Table,GDT):,描述块组属性信息

块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没 有被占用

inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。

inode节点表(inode Table) : 存放文件属性如 文件inode编号,文件大小,所有者,最近修改时间等(128byte)

数据区(Data blocks):存放文件内容,多个4kb大小的集合

通过这样的结构,把文件的属性和内容分开存储,但是一个文件,知道了文件的inode,怎么找到对应的文件内容呢?

inode包含:

  • inode编号(OS层面上,一个文件的唯一标识符)
  • blocks[15]

其中blocks存的就是指向data block对应的指针数组

数组下表前12个指针,都指向对应的单个data block

下标为12,13,14,他们存放数据块编号所指向的数据块内容,存放的不再是文件内容,同样是属于该文件的数据块编号。

4. 目录

目录也是文件,目录文件的data block存的是 文件名与inode的映射关系

文件名 :inode

此时我们就清楚了为什么inode中包含文件的所有属性,但是就是没有文件名了,因为文件的文件名和它对应的inode存在上级目录的data blocks中

5. 文件操作

创建文件:

在inode Table 申请未被使用的inode

文件属性存入inode中

文件名和inode的映射关系保存在目录的data block

写入文件:

在目录的映射关系中找到对应的inode

通过inode找到存放文件数据的data block写入

block Bitmap更新

inode属性更新

读文件:

在目录的映射关系中找到对应的inode

通过inode找到存放文件数据的data block读取数据加载到内存上

删除文件:

在目录的映射关系中找到对应的inode

通过inode找到存放文件数据的data block

对应的block Bitmap置0 inode Bitmap 置0

如何找到目录,目录也是一个文件,也有对应的inode,这个目录的inode在上级目录的内容里,所以就要一路从/(根目录开始),操作系统对此问题的解决方案是:Dentry

关于这个具体看下面这个:

大佬写的

  • 31
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值