为什么 ext2 和后续版本不需要碎片整理?

为什么 ext2 和后续版本不需要碎片整理?

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

什么底层设计可以帮助该文件系统不产生碎片?

答案1

ext4 文件系统控制碎片的一种方法是延迟分配(ext4的默认分配模式)。

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

这种方法的工作原理是,当知道每个文件中的块总数(或至少大致数量)时,同时为文件分配大多数块。这样,块分配器(mballocMMK 的答案中提到的)就可以更好地找到合适大小的可用空间来放置文件。

答案2

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

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

答案3

至少对于 Ext2(我认为还有 Ext3,尽管我不太确定)而言,磁盘格式/结构中没有任何东西可以阻止碎片整理。

无需碎片整理将存在于实现层面,这将因操作系统而异。也就是说,根据实现方式,Ext2 中的文件可能会或可能不会有碎片。

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

希望这可以帮助。

相关内容