最近在拜读鸟哥的私房菜,觉得文件系统和磁盘这一块还挺绕的,于是抽时间整理了一下。
挂载
首先解释一下挂载的概念吧:当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为 “ 挂载点( mount point ) ” ,这样才可以读取这些设备,而这些对应的动作就是 “ 挂载 ” 。 将物理分区细节屏蔽掉。用户只有统一的逻辑概念。所有的东西都是文件。
文件系统
通常我们称一个可被挂载的数据为文件系统而不是分区。而文件系统中除了含有文件内容之外还含有许多属性(例如 权限wrx,用户组,所有者时间参数等)。
文件系统通常把文件数据和属性分开放置在不同的块中。Linux中把属性和权限放置到inode中,文件内容放置到data block块中,除此之外还有一个超级块(superblock)会记录整个文件系统的整体信息包括inode与block的总量使用量,剩余量等信息。
super block:记录此文件的整体信息,包括inode和block总量、使用量、剩余量以及文件系统的格式相关信息等。
inode:记录文件属性,一个文件占用一个inode,同时记录此文件数据所在的block号码。
block:实际记录文件内容,若文件太大时,会占用多个block。
注:文件系统一开始就将inode与block规划好,除非格式化,否则inode和block固定后就不再变动。
当文件系统高达数百G之后,将所有的inode和block放在一块是不明智的,因为数量太大了不容易管理。所有Ext2文件系统在格式化的时候基本上区分为多个块组(block group),每个块组都有自己的inode、block、superblock系统。