文件系统概念
文件系统对与用户是方便用户管理数据,对于磁盘是方便将数据插入到磁盘当中。
文件系统属性
通常情况下,文件系统会将文件的实际内容和属性分开存放:
- 文件的属性保存在 inode 中(i 节点)中,每个 inode 都有自己的编号。每个文件各占用一个 inode。不仅如此,inode中还记录着文件数据所在 block 块的编号;
- 文件的实际内容保存在 block 中(数据块),类似衣柜的隔断,用来真正保存衣物。每个 block都有属于自己的编号。当文件太大时,可能会占用多个 block 块。
- 另外,还有一个 super block(超级块)用于记录整个文件系统的整体信息,包括 inode 和 block的总量、已经使用量和剩余量,以及文件系统的格式和相关信息等。
由此我们可以推断出,只要能找到文件 inode 所在的位置,自然就能知道这个文件存放数据的 block 号,从而找到文件的实际数据。整个过程如图 1 所示。
图 1 中,文件系统先格式化出 inode 和 block 块,假设某文件的权限和属性信息存放到 inode 4 号位置,这个 inode 记录了实际存储文件数据的 block 号有 4 个,分别为 2、7、13、15,由此,操作系统就能快速地找到文件数据的存储位置。
这种管理文件的系统称为索引式文件系统,Linux 文件系统(Ext 系列)就属于索引式文件系统。
注意1:
inode 节点并不存储文件的文件名,因为文件名是文件所在目录的数据,所以会保存在上一级目录的 block 块中。前面章节在讲权限命令的时候说过,要对文件的上一级目录拥有 w 权限,才能删除目录中的文件,就是因为文件名是保存在目录的 block 中的
注意2:
磁盘空间的现在根据inode和block两方面来现在,当系统中inode或者block其中的一项只要达到上限,那就没有办法向磁盘中存储数据。