Btrfs:删除大文件需要很长时间

Btrfs:删除大文件需要很长时间

我正在运行带有 DSM 6.2.2-24922 的 synology nas DS1817+,其中包含使用 BTRFS 格式化的 RAID5 卷。

使用 DSM FileStation 或直接在 ssh 会话中使用“rm filename”删除大文件需要很长时间。

bash-4.3# ls -al
total 31362720
drwxr-xr-x 1 root root         154 Apr 13 05:09 .
drwxr-xr-x 1 root root          86 Apr 13 05:09 ..
-rw------- 1 root root 42949672960 Apr 13 05:09 Zoll-VM-flat.vmdk

bash-4.3# time rm Zoll-VM-flat.vmdk 

real    7m24.817s
user    0m0.000s
sys     0m6.435s

为什么?看 iotop 好像读取并写入了整个文件?!?

答案1

btrfs是一个使用 4K 块作为基本“记录”大小的 CoW 文件系统。对于重写工作量很大的大文件(作为您的虚拟机磁盘文件)将造成巨大的数据和元数据碎片。您可以通过运行filefrag -v <diskfile>和计算碎片数量来检查数据碎片;当更改每个碎片时,应该创建/修改元数据记录。

对于传统机械磁盘上​​的卷,删除此类文件将需要相当长的时间,尤其是在 raid5/6 上运行时。

所以我认为你无法避免这么长的删除时间。看看这里对于类似的情况。

相关内容