为什么 ext2 和后继者不需要碎片整理?

Atu*_*tur 9 ext4

ext2/ext3/ext4 文件系统系列不需要碎片整理。

什么样的底层设计可以帮助这个文件系统不被碎片化?

Aar*_*ron 9

ext4 文件系统保持碎片检查的一种方法是延迟分配过程(ext4 的默认分配模式)。

延迟分配的工作原理是将新写入的文件数据块映射到文件系统中的磁盘块,直到写回时间。

当每个文件中的块总数(或至少一个大概)已知时,这是通过同时为文件分配大部分块来实现的。这允许块分配器(mballoc在 MMK 的回答中提到)更好地找到合适大小的可用空间区域来放置文件。


小智 8

在 ext3 文件系统中,每个块的磁盘都有一个块分配器,因此很有可能发生碎片。

但是,在 ext4 文件系统中,有一个多块分配器可以延迟将块写入磁盘,以便它可以在单个磁盘块中一次分配多个块以允许连续写入 - 因此,发生碎片的可能性较小(仍有可能,只是可能性较小)


小智 6

至少对于 Ext2(和 Ext3,我认为,虽然我不太确定),磁盘格式/结构中没有任何内容可以防止碎片整理。

不需要碎片整理将驻留在实现级别,这将因操作系统而异。也就是说,根据实现,Ext2 中的文件可能会或可能不会碎片化。

如果避免了碎片,那很可能是由于物理块的延迟分配造成的。也就是说,在实现的某个级别,文件系统将缓存数据(并通过逻辑块号访问它),直到它被写入/提交到磁盘。当数据最终写入磁盘时,必须分配物理块。分配算法可以(也可以不)为数据分配多个连续的可用物理块。

希望这可以帮助。