其中:
通用块设备层: 为了统一不同硬盘驱动的接口,将这些接口抽象出来形成统一的接口
VFS:把不同的文件系统做一个抽象,提供统一的API访问接口,常用的api有:mount,umount,open,close,mkdir等
文件系统的来源
便于磁盘空间的管理
如果我们顺序把数据按顺序存放,我们需要记住每个文件存放的起始位置和结束位置,并且在删除,插入后无法进行管理
方便数据的组织和查找
通过文件系统将所有数据组织成非常有条理的树形结构
提高磁盘空间的使用率
频繁的释放和使用空间之后,可能会留下很多小空间(空洞),文件系统会进行空洞和数据的交换,提高磁盘使用率
基础概念
一个块由多个扇区组成,磁盘读写的的单位是块。每个分区都可以使用不同的文件系统。
索引文件系统
将一个文件所有的块建立索引表,索引表映射文件所有的块。而索引表就是inode
inode有15个索引项,其中前12个映射数据块,第13个为一级间接索引表,他会映射一个块,这个块也是一个索引表,可以映射256个块地址,第14个为二级索引表,15为三级索引表。如果一个块的大小为4K的话,可知一个文件最大为64GB。
目录其实也是一个inode,只是其中的数据块指向的是目录项,目录项指向目录内各个文件以及文件的inode编号。
硬链接和软连接
硬链接是多个文件名共用一个inode,从其中一个对文件进行修改后,其他文件也能看到修改结果,但是删除一个文件名不影响其他文件名的访问
软连接是A文件的内容是B文件的路径,A文件和B文件使用不同的inode,如果修改A则B也能看到,如果删除B,则A无法对文件进行访问。
超级块
所有inode的详情都存放在这里了,所有关于文件系统的基本信息都记录在超级块中,因此超级块的位置和大小是固定的,它被固定存储在各个分区的第2个扇区中,通常占用1扇区的大小。
ext2, ext3, ext4
Ext3对Ext2只是增加了一个日志功能而已,Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,提供更加的性能和可靠性,更丰富的功能,更大的文件系统和更大的文件。(Ext3支持最大16TB文件系统和最大2TB文件,Ext4分别支持1EB的文件系统,和16TB的文件)