文件系统重要的部分有inode/block/superblock。
图1 ext2档案系统示意图
档案系统最前面有一个开机磁区(boot sector),这个开机磁区可以安装开机管理程序。
基本上,inode 记录的档案资料至少有底下这些:
1) 该档案的存取模式(read/write/excute);
2) 该档案的拥有者与群组(owner/group);
3) 该档案的容量;
4) 该档案建立或状态改变的时间(ctime);
5) 最近一次的读取时间(atime);
6) 最近修改的时间(mtime);
7) 定义档案特性的旗标(flag),如 SetUID...;
8) 该档案真正内容的指向 (pointer);
inode 的数量与大小也是在格式化时就已经固定了,除此之外 inode 还有些什么特色呢?
1) 每个 inode 大小均固定为 128 bytes;
2) 每个档案都仅会占用一个 inode 而已;
3) 档案系统能够建立的档案数量与 inode 的数量有关;
4) 系统读取档案时需要先找到 inode,并分析 inode 所记录的权限与使用者是否符合,若符合才能够开始实际读取 block 的内容。
block
为实际记录文件内容的数据区域。
对文件来说,保存的是文件中的内容。对于目录来说,保存则是目录下的文件名及相应的inode。只有先通过目录,找到对于文件的inode才能查看到里面的信息。
Superblock (超级区块)
Superblock 是记录整个 filesystem 相关资讯的地方, 没有 Superblock ,就没有这个 filesystem 了。他记录的资讯主要有:
1) block 与 inode 的总量;
2) 未使用与已使用的 inode / block 数量;
3) block 与 inode 的大小 (block 为 1, 2, 4K,inode 为 128 bytes);
4) filesystem 的挂载时间、最近一次写入资料的时间、最近一次检验磁碟 (fsck) 的时间等档案系统的相关资讯;
5) 一个 valid bit 数值,若此档案系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。
Superblock 是非常重要的,因为我们这个档案系统的基本资讯都写在这里,因此,如果 superblock 死掉了, 你的档案系统可能就需要花费很多时间去挽救啦!一般来说, superblock 的大小为 1024bytes。
其它区块:
1)Group Description:纪录此 block 由由何处开始记录;
2)Block bitmap:此处记录那个 block 有没有被使用;
3)Inode bitmap:此处记录那个 inode 有没有被使用;
4)Inode table:为每个 inode 数据存放区;
5)Data Blocks:为每个 block 数据存放区。