2018.04.17
磁盘,单位是「块」。
文件,对人类来说,最小的存储单位。
无论东西多小,非得创建一个文件才能存储。
目录,一个特殊的文件。
记录文件所用到的磁盘块
连续记录:同一个文件的磁盘块放在一起。随机访问好(知道开头和偏离就可访问)。
磁盘利用率差(被删的文件磁盘块需要同等或更小的文件才能重新利用)。
链式:磁盘利用率非常高。随机访问差。
索引式:额外增加一个 inode(index node)磁盘块,记录文件属性以及该文件所使用的磁盘块。
磁盘利用率高,随机访问好。
目录
目录 inode 磁盘块:记录目录属性和目录内容所使用的磁盘块。
目录内容磁盘块:记录目录下文件或目录的 inode 块。
读取 /tmp/test.log 这个文件, 查找次序是这样的:
根目录 inode -> 根目录磁盘块 -> tmp 目录 inode -> tmp 目录磁盘块-> test.log 的 inode -> 读取磁盘块
删除文件
(1)、在目录中删除文件。
(2)、释放文件内容磁盘块到空闲磁盘块池。
(3)、释放文件 inode 磁盘块到空闲节点池。
但是,当操作到某步时,系统崩溃就可能出现空间永远无法释放了!
需要记录日志(journal)!
再操作前,记录要干的事,形成日志,写入磁盘后才开始操作。
操作完成后,擦除日志项。
管理空闲块
位图法:用 1 bit 数据记录磁盘块或 inode 块是否被使用。
ext2 文件系统
分区表记录每个分区的起始位置,以及哪个磁盘分区是活动分区, 这样系统就会找到它, 然后装载这个分区中的引导块。
引导块将会装载存储在本分区的操作系统。 不是引导块存储本分区操作系统。
磁盘分区表只有 64 个字节, 而每个分区项占用 16 个字节, 所以只能容纳 4 个分区。
想用多于 4 个分区, 你就需要把其中一个设为扩展分区, 然后在其中继续划分成逻辑分区。