我在具有 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 -