4.1.1 什么是文件系统

文件系统是操作系统用于明确磁盘或分区上相关文件的方法和数据结构,通俗的说法就是在磁盘上组织文件的方法。在使用前,都需要针对磁盘做初始化操作,并将记录的数据结构写到磁盘上,这种操作就是建立文件系统,在有些操作系统中称之为格式化。

Linux支持多种不同的文件系统,包括ext2、ext3、ext4、zfs、iso9660、vfat、msdos、smbfs、nfs等,还能通过加载其他模块的方式支持更多的文件系统。虽然文件系统多种多样,但是大部分Linux系统都具有类似的通用结构,包括超级块(superblock)、i节点(inode)、数据块(data block)、目录块(directory block)等。其中,超级块包括文件系统的总体信息,是文件系统的核心,所以在磁盘中会有多个超级块,以防止由于磁盘出现坏块导致全部文件系统无法使用。i节点存储所有与文件有关的元数据,也就是文件所有者、权限等属性数据以及指向的数据块,但是不包括文件名和文件内容。数据块是真实存放文件数据的部分,一个数据块默认情况下是4KB。目录块包括文件名和文件在目录中的位置,并包括文件的i节点信息。