系统运维专家

磁盘与文件系统

2018-07-15  本文已影响27人  小小运维

一、前绪

昨天天气太热,在家打完游戏感觉无聊,随便翻了翻之前的书,翻到《鸟哥的Linux私房菜》磁盘与文件系统那一章,看了看发现之前对磁盘的理解有误。所以今天简单整理了一下,做个记录。

二、磁盘的物理结构

我们经常看到的物理机械盘是这个样子的:


西数硬盘

拆开看下是这样的:


硬盘内部结构一
硬盘内部结构二
硬盘结构如下:
硬盘结构

三、分区结构

盘面一
上图是理论值,而实际上是这样的:
盘面二
以前总是以为扇区就是扇面,后来才知道扇区是柱面的一部分,柱面就是一个圆环。
以前总是以为磁盘像图盘面一那样,心里还琢磨:磁盘外围的扇区多浪费啊,后来才知道实际上是图盘面二那样。
还有些知识要知道,分区的最小单位是柱面(也就是圆环)。
每个柱面都有第一个扇区,每个扇区512byte,其中第一个扇区非常重要。里面有硬盘主引导记录(MBR)和分区表,MBR占446byte,分区表占64byte。
这个图还是比较好理解的: 第一个扇区的内容

分区表64byte,每个分区16byte,这16byte的内容如下:


每条分区记录

这个图是一个整体的认识:


MBR硬盘分区结构图

四、文件系统结构

以ext2为例,第一个扇区bootSector上面讲过,记录了分区的信息。


ext2文件系统示意图
  1. 超级块(superblock)
    记录整个文件系统相关信息的地方,例如inode和block的总量和使用数,还有block的大小等等
  2. 文件系统描述
    顾名思义,blockgroup开始和结束的号码
  3. 块对照表
    可以知道哪些block是空的
  4. inode对照表
    可以知道哪些inode是空的
  5. inodetable
    访问模式、文件大小、所有者、权限等
  6. datablock
    真正放数据的地儿

注意点,我们之前说过文件系统应该只有一个超级块,而这个表中发现每个组都有超级块,这是怎么回事呢。其实只有第一个组超级块不为空,后续的组里的超级块不一定含有信息,即使有也是和第一个超级块信息相同。

inodetable里的inode信息


inode结构示意图

五、其它

1K block 的 boot sector 示意图

在介绍开始流程的时候说过,可开机装置的第一个扇区非常重要,包含了2个主要的东西,MBR和分区表。其中MBR有446bytes,分区表有64bytes。
而boot sector有1024bytes,而一个文件系统的superblock也有1024bytes。boot sector在文件系统的最开始,而superblock也在文件系统的最开始。
那么boot sector和superblock的关系的关系是什么呢?
这其实和block size也有关系,block size分为1k,2k,4k的。
如果是1k的,那么boot sector在最前,即0号block,而superblock在1号block,后续是其他的内容。
如果block size是2k和4k的,那么block size和superblock就都在0号block了。也就是在一起了。

上一篇 下一篇

猜你喜欢

热点阅读