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

Kla*_*aus 5 btrfs synology

我正在运行带有 DSM 6.2.2-24922 的 Synology nas DS1817+,其 RAID5 卷采用 BTRFS 格式化。

使用 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
Run Code Online (Sandbox Code Playgroud)

为什么?看看iotop,它似乎读取和写入整个文件?!?

sho*_*hok 1

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

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

所以我认为你无法避免那么长的删除时间。看看这里有没有类似的案例。