【问题标题】:Fragmentation in modern file systems现代文件系统中的碎片化
【发布时间】:2017-05-03 08:47:38
【问题描述】:

我正在修补 Pintos OS 文件系统并想知道:

现代文件系统如何处理碎片问题,包括内部、外部和数据?

【问题讨论】:

  • 碎片化什么?
  • 文件位于不同扇区,不连续。

标签: file linux-kernel operating-system filesystems


【解决方案1】:

好的,你感兴趣的是文件碎片。

答案是它完全取决于文件系统和操作系统。在传统的太监文件系统的情况下,磁盘本质上是碎片化的。没有任何连续文件的概念。文件存储在更改的数据块中。这就是为什么要对分区进行分页,而太监上的大多数数据库系统都使用分区的原因。

允许连续文件的“硬”文件系统以不同的方式管理它们。一个文件由一个或多个“范围”组成。如果初始范围被填满,文件系统管理器会创建一个新范围并链接到它。在某些系统中,有许多文件创建选项。可以指定文件的初始大小并为后续分配保留空间(即,第一个扩展区的大小和附加扩展区的大小)。

当硬文件系统出现碎片时,有不同的处理方法。在某些系统中,“碎片整理”的正常方法是将映像备份到辅助存储然后恢复。这可以是正常系统维护过程的一部分。

其他系统使用“碎片整理”实用程序,这些实用程序要么作为常规系统计划的一部分运行,要么手动运行。

磁盘碎片问题经常被夸大。如果您的磁盘具有合理的空间量,那么您实际上不会产生太多的文件碎片。磁盘碎片——是的;但是,如果您有足够的可用磁盘空间,这并不是什么大问题。当 (1) 您没有足够的可用连续磁盘空间或 (2) [很可能有合理的磁盘空间] 您有一个不断获取添加数据的文件时,就会发生文件碎片。

【讨论】:

    【解决方案2】:

    大多数文件系统确实有处理碎片的方法。不过,我将描述不太复杂的常用文件系统的情况。

    对于Ext2,每个文件有12 个直接块指针,指向文件所在的块。如果它们还不够,则有一个单独的间接块指向block_size / 4 块。如果它们仍然不够,则有一个双间接块指向block_size / 4 单间接块。如果还不够,还有一个指向block_size / 4 双重间接块的三重间接块。这样,文件系统允许在块边界处分片。

    对于 ISO 9660,它是 CD 和 DVD 的常用文件系统,文件系统不支持按原样进行分段。但是,可以使用多个连续的目录记录来将一个大(超过 2G/4G,最大可描述文件大小)文件拆分为可描述文件。这可能会导致碎片化。

    对于FAT,文件分配表描述了磁盘上所有数据簇的位置和状态,以便允许碎片化。所以当读取下一个簇时,驱动会在文件分配表中查找下一个簇的编号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 2012-11-06
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多