我正在运行带有 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 上运行时。
所以我认为你无法避免这么长的删除时间。看看这里对于类似的情况。