操作系统L17
文件系统管理类和优化
Disk space management 磁盘空间管理
- 文件通常存放在磁盘上
- 存储 n 字节文件的策略
- 分配n个连续字节的磁盘空间
- 如果文件增长,则必须将其移动到磁盘上,这是一项昂贵的操作并会导致外部碎片化。
- 分配 [n/k] 个大小为 k 字节的块
- 块不需要相邻。
- 分配n个连续字节的磁盘空间
block size 块大小
- 当块大小增加时,磁盘空间利用率降低
- 内部碎片化,空间效率降低
- 这意味着每个文件,甚至一个1字节的文件,都要占用一整个柱面,小的文件浪费了大量的磁盘空间
- 当块大小减小时,数据传输速率降低
- 时间效率降低
- 大文件会跨越多个块,需要多次寻道与旋转延迟才能读出它们
- 通常大小 k = 512 字节、1k (UNIX) 或 2k

Keeping Track of Free Blocks 记录空闲块
使用位图 bit-map
- Free blocks ->1, Allocated blocks -> 0
- 具有 (n) 个块的磁盘需要具有 (n) 位的位图
- 空闲块由 1 表示
- 已分配块由 0 表示
- 16GB 磁盘有 \(2^{24}\)个 1-KB 并且需要 \(2^{24}\) 位 → 2048 个块
- 使用链表 =\(2^{24}\)/255 = 65793 个块
使用磁盘块的链表
- 具有 1 KB 块和 32 位磁盘块号。
- 每个块保存尽可能多的空闲磁盘块号。
- → 1024 * 8/32 = 256 个磁盘块编号
- → 255 个空闲块(和)1 个下一个块指针.





File System Backup 文件系统备份
- 备份是为了处理:从灾难或愚蠢中恢复。
- 备份的注意事项
- 整个或部分文件系统
- Incremental dumps 增量转储:仅转储已更改的文件
- 压缩 Compression
- 备份活动文件系统
- 安全
转储磁盘的两种策略:
- Physical dump 物理转储:
- 从块 0 开始到最后一个磁盘块,按序输出到磁带上
- 优点:简单快捷
- 缺点:备份一切
- Logical dump 逻辑转储:
- 从一个或多个指定目录开始,并递归转储自某个给定基准日期以来已更改的所有文件和目录




File System Consistency 文件系统一致性
- 大多数操作系统都有一个实用程序,称为文件系统检查器,用于测试文件系统的一致性。
- 例如,UNIX 中的 fsck,Windows 中的 sfc
- 可以进行两种类型的一致性检查:
- 块的一致性检查
- 文件的一致性检查
块一致性检查
- 构建两个表,每张表中为每个块设立一个计数器,都初始化为 0
- 第一个表中的计数器跟踪每个块在文件中出现的次数。
- 第二个表的计数器记录在空闲表或空闲位图中的出现次数,
- 然后,程序读取所有 i 节点并使用 i 节点构建文件中使用的所有块的列表(在读取每个块时在其文件计数器+1)。
- 检查空闲列表或位图以查找所有未使用的块(为空闲列表中的每个块在其空闲列表计数器+1)
文件系统状态
- 一致
- 每一块在第一个表计数器中为1,或者在第二个表计数器中为1
- 块丢失
- 将丢失的块添加到空闲列表
- 空闲列表中的重复块
- 磁盘块4在空闲块中出现了两次,重新建立空闲表
- 重复数据块
- 将数据块复制到空闲块


- 检查目录
- 使用一张计数器表,一个文件对应于一个计数器,从根目录开始检验,递归检查每个目录,对每个目录的每个文件,将文件使用计数器加1。完成后,会得到一张由i节点号索引的表,说明每个文件被多少个目录包围。
- 从根目录开始保留每个文件的计数器列表,递归检查每个目录。
- 对于每个文件,增加文件 i-node 的计数器
- 将计算值与存储在每个 i 节点中的链接计数进行比较。
- i-node 链接计数 > 计算值 = 目录条目数。
- 即使删除所有文件,i-node 链接计数 > 0。因此不会删除 i-node。
- 解决方案:设置 i-node 链接计数 = 计算值
- i-node 链接计数 < 计算值

- 目录将指向未使用的 i-node
- 解决方案:设置 inode 链接计数 = 计算值
问题







Check Points
- Please describe the two methods for keeping tracks of free blocks.
- freelist bitmap
- Please describe the two strategies for dumping a disk.
- physical logical
- Please describe the two types of consistency checks .
- block file
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yeの博客!