深入理解文件系统

磁盘物理结构

几个重要概念: 

  1. 柱面(Cylinder)

    硬盘由多个叠加的盘片组成,每个盘片都有两面,每面包含很多磁道。同一位置的磁道叠加在一起形成一个柱面。也就是说,柱面是通过多个盘片上相同半径的磁道组成的一个圆柱形结构。在硬盘读写数据时,磁头移动到一个柱面位置,可以访问该柱面上所有磁道的数据。
  2. 磁道(Track)

    磁道是硬盘盘面上的一个圆形环。每个磁道可以存储一定量的数据。在早期的硬盘设计中,每个磁道的数据容量是相同的,但在现代硬盘中,外侧磁道因为周长较长,通常会存储更多数据。
  3. 扇区(Sector)

    扇区是磁道上的一小段,每个扇区通常存储512字节或更多的数据。一个磁道被分割成多个扇区,这是硬盘数据存取的基本单位。当计算机读写硬盘时,它会指定扇区的地址,这包括柱面号、磁头号(盘面的一面)和扇区号。

在硬盘中,数据是通过定位到特定的柱面、选择正确的磁头(即确定盘面和磁道),然后读写特定扇区中的数据来存取的。这种结构使得硬盘能够快速准确地定位数据,但也导致了硬盘操作的复杂性,尤其是在处理大量数据时。

磁盘寻址

磁盘寻址是指定位和访问磁盘上数据的方法。对于硬盘来说,有几种常见的寻址方式:

  1. CHS(柱面-磁头-扇区)寻址

    这是早期硬盘使用的传统寻址方式。在这种模式下,每个扇区的位置由其柱面号、磁头号(即盘面号)和扇区号确定。随着硬盘容量的增加,CHS寻址因其地址范围限制而逐渐被新技术所替代。
  2. 逻辑块寻址(LBA)

    逻辑块寻址是现代硬盘最常用的寻址方式。在LBA模式中,磁盘上的扇区被顺序编号,从0开始。这种方式简化了接口设计,使得操作系统无需关心磁盘的几何结构(如柱面、磁头和扇区的具体数量)。

这两种寻址方式其实是可以转化的,例如总共有6个盘面,一个盘面有100个磁道,一个磁道有400个扇区。如果要访问编号为20074的扇区,对应的CHS就是0号盘面/Header (20074/(100*400) = 0),50号磁道/Cylinder(20074/400=50),74号扇区(20074%400)

磁盘逻辑结构

操作系统如何管理?

首先磁盘的空间是很大的,第一步就是对空间进行分区。但是每个分区依旧很大,就将每个区继续划分,划分成很多group

Boot Block:这是文件系统的启动块,包含了启动计算机所需的引导加载程序。它是文件系统的第一部分,通常在磁盘的最开始位置。

每个group又会细分很多块:

  1. Super Block

    超级块包含了整个文件系统的关键信息,如文件系统的大小、块大小、空闲块和inode的数量、块组的数量等。它是文件系统管理的核心部分。
  2. Group Descriptor Table

    组描述符表包含了每个块组的信息,例如其中的块和inode表的起始位置、空闲块和空闲inode的数量等。这有助于文件系统快速定位和管理各个块组。
  3. Block Bitmap

    块位图用于跟踪每个块组中哪些块是空闲的哪些是已使用的。通过块位图,文件系统可以有效地分配新的数据块。
  4. inode Bitmap

    inode位图类似于块位图,但它用于跟踪inode的使用情况。每个位代表一个inode,该位图帮助文件系统管理inode的分配。
  5. inode Table

    inode表存储了文件系统中所有文件和目录的元数据。每个inode包含了文件的权限、大小、创建和修改时间、以及数据块的位置等信息。
  6. Data Blocks

    数据块是文件系统存储文件数据的基本单位。每个文件的数据都被分割到一个或多个数据块中。

inode和data block的对应关系

inode 结构

inode是文件系统中的一个数据结构,用于存储文件的元数据。这些元数据包括:

  • 文件类型(如普通文件、目录等)
  • 权限(读、写、执行权限)
  • 所有者和组信息
  • 文件大小
  • 时间戳(如创建时间、最后修改时间、最后访问时间)
  • 指向文件数据块的指针

2. 文件数据的定位

inode中包含了几种类型的指针,这些指针直接或间接指向存储文件内容的数据块。这些指针通常分为几个级别:

  • 直接指针:这些指针直接指向存储文件数据的数据块。通常,一个inode会有多个直接指针(例如,在某些UNIX系统中,可能有12个直接指针)。

  • 间接指针:当文件较大,直接指针不足以指向所有数据时,inode会使用间接指针。间接指针指向一个数据块,而这个数据块内部存储的是指向其他数据块的更多指针。这些间接指针可以是单级间接、双级间接,甚至三级间接:

    • 单级间接指针(一次间接)指向一个块,该块内含有指向实际数据块的指针。
    • 双级间接指针(二次间接)指向一个块,该块内含有指向其他块的指针,而这些块再指向实际数据块。
    • 三级间接指针(三次间接)则更进一层,可以让inode定位到更大量的数据。

3. 数据存储

每个文件的内容被分割成块大小的片段存储在这些数据块中。文件系统根据文件大小和inode中记录的指针来读取或写入数据到正确的数据块中。

4. 效率与管理

这种结构允许文件系统有效地管理大文件和小文件。小文件可能只需要一个或几个直接指针就足够了,而大文件则需要更复杂的间接指针结构。通过这种方式,文件系统可以在保持高效数据访问的同时,优化存储空间的使用。

简单示意图:

 谈几个问题

什么是磁盘格式化

磁盘格式化并不是将磁盘的每个数据块的数据都抹除,不仅会降低效率而且会降低硬件的使用寿命。一般就是将分区的属性删除,将inode和数据块的位图都清除。因此,格式化不会将磁盘的数据都抹除只是修改了属性,如果误删了重要数据,最好的解决方法就是什么都不做,找专业的人使用专业的软件来恢复数据。

新建一个文件,系统要做什么

找到当前路径确定分区,在这个分区的inode位图寻找一个未使用的inode,将文件属性写入inode,通过数据块位图为inode分配可使用的数据块,将文件内容写入数据块

删除一个文件,系统要做什么

找到当前文件的路径确定所在分区(不同分区的inode不共用),在inode Table找到文件inode,通过inode中的数据块指针,将数据块位图对应的位标记为无效位(让它可以再被分配,并没有抹除数据块的数据),最后将inode位图对应的位也标记为无效位

修改一个文件,系统要做什么

找到当前文件的路径确定所在分区,在inode Table找到文件inode,通过inode中的数据块指针,找到对应数据块,修改数据。如果写入数据很多,就会再分配数据块。

查找一个文件,系统要做什么

根据所给路径确定所在分区,根据所给的inode在inode位图中寻找,如果对应的位是有效的就说明该文件存在。

symbolic link&hard link

如何理解目录

目录也是文件也有自己的inode,当然也有自己的数据即使是一个空目录,因为每个目录都有.和..

目录的数据是什么?
文件名和对应文件的inode,这也是为什么一个目录下不能有同名文件的底层原理

计数也是inode中的一个文件属性,表示有多少个目录条目指向该inode,后面会提到 

symbolic link

特点:

  1. 软连接是一个指向目标文件或目录的快捷方式。
  2. 软连接可以跨文件系统。
  3. 删除软连接不会影响目标文件,但删除目标文件会导致软连接变为无效链接(dangling link)。
  4. 软连接可以指向不存在的文件或目录。
  5. 软连接是一个独立的文件,具有自己的inode。

创建命令:

ln -s <目标文件或目录> <软连接名称>

删除链接:

unlink <软连接名称>

原理:

symbolic link文件是一个新创建的文件,分配自己独有的inode,但是数据块存储的是被链接文件的绝对路径

hard link

特点:

  1. 硬连接是一个文件的另一种引用,同一个文件有多个硬连接。
  2. 硬连接不能跨文件系统。
  3. 删除硬连接或目标文件不会影响文件本身,只要至少还有一个硬连接存在,文件内容就不会被删除。
  4. 硬连接不能指向目录,只能指向文件(在大多数文件系统中)。硬链接指向目录可能出现闭环:
  5. 硬连接共享同一个inode,因此它们指向同一数据块。

创建命令:

ln <目标文件> <硬连接名称>

原理:

hard link并没有创建新的文件,而是在目录中为被链接的文件的inode新增一个新的映射。同时让inode的引用计数器+1

总结:

  • 软连接类似于Windows中的快捷方式,删除目标文件会导致软连接失效。
  • 硬连接是文件的等价副本,删除硬连接不影响文件内容,只有当所有硬连接都被删除时,文件内容才会被删除。
  • 31
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值