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


Answers:


9

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

延迟分配通过将新写入的文件数据块到文件系统中的磁盘块的映射推迟到写回时间来进行。

当已知每个文件中的块总数(或至少是棒球场)时,这可以通过同时为文件分配大多数块来进行。这使块分配器(mballoc在MMK的答案中提到)可以更好地找到合适大小的可用空间区域来放置文件。


请记住,这确实只是ext4驱动程序的功能。现在,我不知道是不是非常 技术上 来讲,可能没有安装这样的选项旧FS(至少部分地)。到目前为止,DELALLOC仍被标记为ext4-only
Mirh

8

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

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


6

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

缺乏碎片整理的需求将停留在实现级别,具体情况因操作系统而异。也就是说,取决于实现方式,Ext2中的文件可能会碎片化也可能不会碎片化。

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

希望这可以帮助。


实际上,有一个e2defrag实用程序,并且可能需要它(在带有许多随机写入文件的相当完整的光盘上)。ext4的延迟分配器使这种可能性更低。但是,甚至ext2都有某种延迟的分配/写入,这使得运行碎片整理实用程序的要求比MS-DOS®的原始分配器要少。
mirabilos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.