我有一个老化的邮件服务器……它只运行 courier postfix 和 smtp。它是一个 KVM VM,有两个驱动器,一个用于操作系统,一个用于数据。我有一个非常满的数据驱动器(报告 100% 已满,即使已使用和可用空间分布在 24GB 左右)。我不确定为什么或是什么占用了空间然后又释放了它。top 显示主要是 postfix 的 imapd 在执行操作。我无法在这台机器上获取 iotop。所以我想开始释放服务器上用户邮箱中的空间,我会执行 du -h -d1 来尝试找出最大的罪魁祸首是谁。好吧,这个命令运行得比以往任何时候都慢。所以由于它运行缓慢,我想我会发出一个屏幕命令:
du -h -d1 > 邮箱大小.txt
所以我可以在早上查看它并查看使用情况。它写了大约 6 个邮箱,最大的一个是 2.2GB,然后什么都没有。所以来到实际的机器上看看命令在它仍在运行时做了什么,看到了这个:
[root@xmail]# du -h -d1 > /root/mailboxsizes.txt
[14280.306953] INFO: task imapd:12559 blocked for more than 120 seconds.
[14280.307710] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[14280.309680] imapd D ffff8800d3d9cd98 0 12559 1 0x00000080
[14280.310591] ffff8800b17bbc20 0000000000000086 ffff880057bbce70 ffff8800b17bbfd8
[14280.310591] ffff8800b17bbfd8 ffff8800b17bbfd8 ffff880057bbce70 ffff8800d3d9cd90
[14280.313532] ffff8800d3d9cd94 ffff880057bbce70 00000000ffffffff ffff8800d3d9cd98
[14280.313532] Call Trace:
[14280.315669] [<ffffffff8168d159>] schedule_preempt_disabled+0x29/0x70
[14280.316637] [<ffffffff8168adb5>] __mutex_lock_slowpath+0xc5/0x1c0
[14280.316637] [<ffffffff81208e17>] ? unlazy_walk+0x87/0x140
[14280.318543] [<ffffffff8168a21f>] mutex_lock+0x1f/0x2f
[14280.319516] [<ffffffff81683c93>] lookup_slow+0x33/0xa7
[14280.320690] [<ffffffff8120c8f3>] path_lookupat+0x773/0x7a0
[14280.321718] [<ffffffff81183775>] ? filemap_fault+0x215/0x410
[14280.321718] [<ffffffff811de5e5>] ? kmem_cache_alloc+0x35/0x1e0
[14280.323363] [<ffffffff8120f23f>] ? getname_flags+0x4f/0x1a0
[14280.324348] [<ffffffff8120c94b>] filename_lookup+0x2b/0xc0
[14280.324348] [<ffffffff81210367>] user_path_at_empty+0x67/0xc0
[14280.325307] [<ffffffff811b1431>] ? handle_mm_fault+0x6b1/0xfe0
[14280.327150] [<ffffffff812103d1>] user_path_at+0x11/0x20
[14280.327965] [<ffffffff81203843>] vfs_fstatat+0x63/0xc0
[14280.328093] [<ffffffff81203dae>] SYSC_newstat+0x2e/0x60
[14280.328093] [<ffffffff81692875>] ? do_page_fault+0x35/0x90
[14280.330895] [<ffffffff8168ea88>] ? page_fault+0x28/0x30
[14280.331790] [<ffffffff8120408e>] SyS_newstat+0xe/0x10
[14280.331857] [<ffffffff81697089>] system_call_fastpath+0x16/0x1b
我是系统管理新手,除了与 imapd 有关的东西之外,我对这些都一无所知。我已经多次重启这台机器,但它几乎没有释放任何硬盘空间或资源。我不明白发生了什么,为什么 du 会像上面那样失败。我在这里主要想问从哪里开始?虽然这台机器很旧,而且总是有它的问题,但它以前从来没有出现过这种情况(尽管我承认数据驱动器空间不足),但如果我清除它,就会有东西把它吃掉。
为了完整性:
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.9G 0 2.9G 0% /dev
tmpfs 2.9G 0 2.9G 0% /dev/shm
tmpfs 2.9G 41M 2.8G 2% /run
tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup
/dev/vda3 21G 18G 2.1G 90% /
/dev/vdb 459G 435G 442M 100% /mail
/dev/vda1 976M 119M 790M 14% /boot
tmpfs 581M 0 581M 0% /run/user/0
tmpfs 581M 0 581M 0% /run/user/1000
top - 06:06:53 up 6:52, 3 users, load average: 36.42, 36.64, 31.74
Tasks: 346 total, 8 running, 338 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.4 us, 1.2 sy, 0.0 ni, 0.0 id, 89.9 wa, 0.0 hi, 0.0 si, 1.5 st
KiB Mem : 5946284 total, 130280 free, 2278016 used, 3537988 buff/cache
KiB Swap: 2516988 total, 1906332 free, 610656 used. 3362528 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19174 postfix 20 0 27028 5504 1488 R 8.3 0.1 0:38.53 imapd
19586 postfix 20 0 27028 5504 1488 D 7.6 0.1 0:32.18 imapd
19008 postfix 20 0 27028 5504 1488 R 7.0 0.1 0:48.61 imapd
19372 postfix 20 0 27464 5872 1504 D 4.3 0.1 0:30.38 imapd
20087 postfix 20 0 27028 5504 1488 D 4.3 0.1 0:23.27 imapd
20188 postfix 20 0 27028 5504 1488 D 4.3 0.1 0:23.31 imapd
20353 postfix 20 0 27028 5508 1488 D 4.3 0.1 0:23.05 imapd
19963 postfix 20 0 27028 5508 1488 D 4.0 0.1 0:23.85 imapd
20275 postfix 20 0 27028 5508 1488 D 4.0 0.1 0:22.56 imapd
18460 postfix 20 0 29348 5748 1588 R 3.7 0.1 0:38.09 imapd
20236 postfix 20 0 27028 5516 1488 D 3.7 0.1 0:22.86 imapd
32 root 20 0 0 0 0 S 1.7 0.0 5:57.44 kswapd0
20079 postfix 20 0 32728 9152 1520 S 1.7 0.2 0:01.90 imapd
19702 postfix 20 0 27028 5516 1488 D 1.3 0.1 0:27.77 imapd
18575 postfix 20 0 30472 6848 1596 D 1.0 0.1 0:14.86 imapd
19782 postfix 20 0 27028 5508 1488 D 1.0 0.1 0:27.02 imapd
1026 root 20 0 1174028 22616 8992 S 0.7 0.4 2:53.90 fail2ban-s+
不确定要看什么,然后尝试下一步找出我可以在哪里找到一些文件夹,并知道我们保留了谁的旧收件箱以清除它们,以便释放空间并希望使服务器性能更好。
我唯一的想法是,让 systemctl 暂时停止 postfix,看看 du 和 ls 是否工作得更好,并仔细检查 top 是否没有因此而被 ping 出去。
如果与 iostat 相关,则:
iostat
Linux 3.10.0-514.16.1.el7.x86_64 (xmail) 11/21/2024 _x86_64_ (3 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
5.95 0.01 1.29 88.86 0.65 3.24
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 11.92 252.15 61.60 6335865 1547820
vdb 1517.62 62131.62 78.76 1561227117 1979120