Linux rm 处理 100kB 文件需要几分钟

Linux rm 处理 100kB 文件需要几分钟

我在具有 ZFS 文件系统的 Linux 机器上遇到了极其缓慢的文件删除速度:

$ ls -l
-rwxr-xr-x 1 root nfsnobody 297056 Jul 17  2018 somefile
$ time rm -f somefile
real    1m30.117s
user    0m0.000s
sys     0m0.705s

大多数情况下几乎正好需要 1.5 分钟。但并非每个文件都会发生这种情况:当时我试图删除 Python 安装中的文件,这些文件已经存在了一段时间(几天到几个月)。此外,如果我在同一位置创建一个文件,然后尝试删除它(几秒到几分钟后),问题不会发生,只需几毫秒。

$ dd if=/dev/zero of=file.txt count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0191559 s, 54.7 MB/s

$ time rm -f file.txt
real    0m0.014s
user    0m0.002s
sys     0m0.001s

关于如何开始调试这个问题,您有什么想法吗?是否有任何日志包含文件系统操作的记录?是否有办法启用某些日志记录以在特定rm操作期间获取较低级别的信息?

机器似乎运行正常,CPU 和 RAM 使用率较低,没有交换,磁盘有足够的剩余空间。这是机器中的内核:

$ uname -a
Linux servername 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

有关文件系统的附加信息:

$ df .
Filesystem       1K-blocks        Used   Available Use% Mounted on
mypool/wrk     67737890560 51963463040 15774427520  77% /wrk

$ zpool list
NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
mypool    98T  75.7T  22.3T         -    28%    77%  1.00x  ONLINE  -

相关内容