Lecture 24: File Systems 5

回顾:

1. 文件系统实现

  • 连续的
  • 链表
  • FAT
  • 索引节点

2. 文件系统范例(在实现之上)

  • 日志结构文件系统(提高效率)
  • 日志记录(提高弹性和健壮性)
  • 虚拟文件系统(提高灵活性和集成)

本章小结:

  • 文件系统恢复
    • 磁盘检查工具(Scandisk)
    • FSCK
  • 磁盘碎片整理
  • Linux中的文件系统

恢复和压缩

文件系统一致性

一致性检验

  • 日志记录大大降低了文件系统中出现不一致的可能性。如果发生崩溃,日志将存储未运行的操作。
  • 然而,它仍然可能得到一些不一致(例如,数据块没有刷新到驱动器,典型的情况在USB驱动器上!)。
  • 这可能会有问题,特别是对于结构块,如i节点、目录和空闲列表
  • 系统实用程序(System utilities可用于恢复文件系统,例如:
    • 磁盘检查工具
    • FSCK
  • 有两种主要的一致性检查:块和目录。

检查块一致性

  • 块一致性检查块是否以正确的方式分配/使用
  • 通过建立两个表来检查块的一致性:
    • 表1计算一个块在文件中出现的频率(基于i-nodes)
    • 表2统计了一个块在空闲列表中出现的频率
  • 一致性文件系统的每个块在两个表中都有一个1
  • 通常,这是一个非常缓慢的过程,甚至需要几个小时(并且在卸载分区的情况下运行)。
一致性检查

恢复块一致性

  • 丢失的块:它在任何表中都不存在 ⇒ 添加到空闲列表中
  • 一个块在空闲列表中被重复计算(“灾难”即将发生)⇒ 重新构建自由列表
  • 一个块存在于两个或多个文件
    • 删除一个文件会导致将该块添加到空闲列表中
    • 删除这两个文件将导致在空闲列表中出现双条目
    • 解决方法:使用新的空闲块并复制内容(文件仍有可能损坏)

FSCK算法:
1. 遍历所有i节点
    -检索block
    -增加计数器
2. 遍历空闲列表
    -增加空闲块的计数器

恢复I-node一致性

检查目录系统:i-node计数是否正确
哪里会出错呢?:

  • I-node计数器大于包含该文件的目录数
    • 删除该文件将使i-node计数器减少1
    • 由于计数器将保持大于1,因此i-node /磁盘空间不会被释放以供将来使用
  • I-node计数器小于包含该文件的目录数
    • 删除文件将(最终)将i-node计数器设置为0,而文件仍然被引用
    • 文件/ i-node将被释放,即使文件仍在使用中
I-node计数器大于实际包含该文件的目录数。删除文件会导致内存浪费。
I-node计数器小于包含该文件的实际目录数。删除文件将导致丢失文件。

1. 递归遍历目录层次结构
    - 查看文件特定的计数器
    - 即每个文件与一个计数器相关联
2. 一个文件可能出现在多个目录下
    - 比较文件指标和i-node指标
    - 必要时更正

文件系统碎片整理(Defragmentation)

压缩

  • 开始时,所有空闲的磁盘空间都在一个连续的单元中。
  • 过了一段时间,创建和删除文件后,磁盘可能会严重碎片化(到处都是漏洞和文件)。
  • 碎片整理(Defrag)实用程序使文件块连续(非常慢的操作),并在磁盘上的一个或多个大的连续区域中释放空间。
  • Windows用户应该定期运行这个程序,除了在SSD上。
  • Linux (ext2/3)受碎片的影响较小
  • 对SSD进行碎片整理是适得其反的(在性能和SSD磨损)。

Linux文件系统历史记录

  • Minix文件系统:最大文件大小为64MB,文件名限制为14个字符
  • 扩展文件系统(extended file system,extfs):文件名长度为255个字符,最大文件大小为2GB
  • ext2”文件系统:更大的文件,更大的文件名,更好的性能
  • ext3-4”文件系统:日志等。

第二个扩展文件系统(ext2)

  • 第二个扩展文件系统(ext2)是Linux中最流行的文件系统之一。
  • 主要目标:
    • 通过在磁盘上均匀地分布目录,提高MINIX和extfs文件系统的性能
    • 允许更大的文件名和大小,改进目录实现

标准Unix文件系统 vs. 第二个扩展文件系统:

目录项:

  • 超级块(superblock)包含文件系统信息(例如i节点的数量,磁盘块)
  • 组描述符包含位图位置、空闲块数量、i节点和目录
  • 数据块位图i节点位图,用于跟踪空闲磁盘块和i节点(Unix使用列表)
  • 包含文件和磁盘块信息的i-node表
  • 包含文件和目录块的数据块

ext2分区被划分为几个块组,以便:

  • 如果可能的话,通过将i节点和文件以及父目录和文件存储在同一个块组中来减少碎片
  • 减少寻道时间并提高性能

所有块组具有相同的大小并按顺序存储(这允许直接索引)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值