F
假设我在 Linux ext4 文件系统上有一个稀疏文件,并且进程P1
正在写入 50% 的不相交子集,F
同时P2
写入F
.我想在文件“增长”时最大限度地减少碎片。 (我将“增长”放在引号中,因为该文件是预先分配为稀疏文件的,但是当块被写入时,它们会用实际数据填充幻像块。)
我意识到,自从P1
和P2
并行运行以来,一个可能会领先于另一个,但除此之外,最好是在P1
写入块 1,3,5,7,... 的同时P2
写入 2,4,6,... ?或者更好地P1
写 1,2,3,4,...n/2 并P2
写 n/2+1,...., n?
答案1
内核会缓存写入内容,并在后台延迟地将它们刷新到磁盘,同时分配磁盘空间,从而最大限度地减少碎片。换句话说,你想太多了——别担心。
更具体地说,当它要刷新一些脏缓存缓冲区时,ext4 会分配足够的磁盘空间来保存缓存中的所有脏缓冲区,并保留额外的空间以供进一步增长。
您所描述的负载听起来很像位洪流。我最近通过 Bit torrent 下载了 Ubuntu 11.10 iso,检查后filefrag
发现它只分成 3 个片段,对于 700mb 的文件来说这还不错。