管理文件的软件,在内核中实现,将磁盘创建成文件系统后,磁盘分成两部分:元数据区和数据区元数据区主要存储跟文件数据本身无关的信息,主要有inode表,每一个条目标识文件的基本属性(属组、属主、权限、时间戳、大小等)。

   目录也是个文件,但是这个文件比较独特,主要用于实现建立文件名和文件inode号之间的映射关系,通过目录可以找到某个文件的名称和inode号的对应关系。因此如果使用基于名称管理文件,首先找到目录,这个目录有这个文件,再找文件名称对应的inode。inode中记录文件所占据的磁盘块。

   格式化完成以后,磁盘就分成大小固定的磁盘块(data blocks),这些块也是有编号的,因此文件存储在磁盘中的时候到底占据了哪些磁盘块并且存储了数据的,inode就标识文件使用了哪些磁盘块。

   如果分区很大效率也不高,为了快速找到空闲inode和空闲磁盘块,引入了两种机制:inode bitmap(快速实现查找,扫描位图就知道那个inode是空闲的)和block bitmap。当块非常大的时候,数据块非常多,位图也非常大,就需要在元数据区进行分组每一个块组中定义了这个组应该拥有的inode和属于这个组的块位图。

   一共有多少个组,每个组包含哪些块呢?这些信息都包含在超级块super block中。

   磁盘编号为0的扇区不可能属于任何一个分区,成为MBR(主引导记录:bootloader 446字节,filesystem table 64字节,每16个字节引导一个主分区 2字节  )。bootloader使得某个分区可以安装并启动操作系统,MBR至关重要,有些病毒专门感染MBR,0扇区坏掉的话即使硬盘可用也没法安装操作系统。可以使用dd命令备份MBR。

   除了磁盘的0扇区之外,任何一个分区中的第一个扇区(引导扇区)不会拿到直接使用,是这个分区的引导扇区。所以引导扇区有两级结构,一个是硬盘的引导扇区一个是分区的引导扇区。

   分区为什么要有引导扇区呢?多系统互存时,MBR中的bootloader中存放的是一个选择挑选的菜单引导程序,引导到相应的分区中的引导扇区。MBR中只能装一个系统引导程序,另一个引导程序需要装所在分区的引导扇区中。

   每一个块组包含:超级块、块组描述符、数据块位图、inode位图、inode表、数据块。

   超级快并非每个块组中都有,dumpe2fs(-h查看所有信息)查看哪些块组中保存的super block。

   文件系统其实是个软件。