Вопрос или проблема
Я использую устаревший почтовый сервер… он просто работает на Courier Postfix и SMTP. Это VM на KVM и у него два диска, один для ОС и один для данных. У меня очень заполненный диск данных (показывает 100% заполненным, хотя используемое и доступное пространство составляет около 24 ГБ). Я не уверен, почему или что занимает место и затем освобождает его. top показывает, что в основном работает только imapd от Postfix. Я не могу запустить iotop на этой машине. Поэтому я решил начать освобождать место в почтовых ящиках пользователей на сервере, выполнив команду du -h -d1, чтобы попытаться узнать, какие из них самые крупные нарушители. Эта команда выполняется МЕДЛИТЕЛЬНО, медленнее, чем когда-либо. Поэтому, так как это выполнялось медленно, я решил выполнить команду screen:
du -h -d1 > mailboxsizes.txt
Чтобы утром вернуться к этому и посмотреть использование. Она записала около 6 почтовых ящиков, самый большой из которых 2.2 ГБ, а затем ничего. Я пришёл на саму машину, чтобы увидеть, что команда делает, если она всё ещё работает, и увидел это:
[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
Файловая система Размер Использовано Доступно Использ % Смонтировано на
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
Задачи: 346 всего, 8 работающих, 338 спящих, 0 остановленных, 0 зомби
%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 Память : 5946284 всего, 130280 свободно, 2278016 использовано, 3537988 buff/cache
KiB Swap: 2516988 всего, 1906332 свободно, 610656 использовано. 3362528 доступно
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+
Я не знаю, на что смотреть и что пробовать, чтобы понять, где я могу просмотреть некоторые папки и узнать, чьи старые почтовые ящики мы держим, чтобы избавиться от них в попытке освободить место и, надеюсь, улучшить производительность сервера.
Единственная моя идея – временно остановить postfix с помощью systemctl и посмотреть, будет ли du и ls работать лучше, и дважды проверить, что top не будет перегружен в этом случае.
Также, на случай, если это имеет отношение, вот 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
Устройство: 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
Ответ или решение
К сожалению, у вас возникли серьезные проблемы с производительностью и управлением дисковым пространством на вашем почтовом сервере. Давайте рассмотрим основные аспекты вашего вопроса и шаги, которые вы можете предпринять для их решения.
Прежде всего, основные проблемы:
-
Полное дисковое пространство:
Ваш диск/dev/vdb
на 459 ГБ показывает 100% использование, хотя вы упоминаете, что у вас есть около 24 ГБ доступного пространства. Это говорит о возможных проблемах с файловой системой или недоступными/привязанными к моментальным образам файлами. -
Повышенная загрузка CPU и задержка процессов:
Процессыimapd
изpostfix
показывают высокий уровень блокировки, что может указывать на проблемы с доступом к диску или файловой системе. Это также объясняет медленное выполнение команд, таких какdu
.
Анализ вывода:
- Команда
du -h -d1
используется для определения размера директорий, но в вашем случае она выполняется медленно, и мы видим сообщения о блокировкеimapd
. Это может быть вызвано тем, чтоimapd
пытается получить доступ к файлам, блокируяdu
и мешая нормальному функционированию. - Высокий уровень
iowait
(88.86%) указывает на то, что процессор ожидает, когда устройство ввода-вывода завершит операции. Это может быть следствием недостаточной производительности диска или конфликтов доступа.
Рекомендуемые действия:
-
Остановка службы
postfix
:
Остановка почтового сервера временно может помочь вам проверить текущее состояние диска и выполнить командыdu
иls
без конфликтов. Запустите команду:systemctl stop postfix
Затем проверьте выполнение команд:
du -h -d1 /mail > /root/mailboxsizes.txt
-
Проверка файловой системы:
После остановки сервиса стоит провести проверку файловой системы на наличие ошибок. Используйте команду:fsck /dev/vdb
Убедитесь, что у вас есть резервные копии важных данных перед проведением этой операции.
-
Оптимизация хранения почты:
Проверьте, не содержат ли ваши почтовые ящики временные или заблокированные элементы, такие как большие вложения или неиспользуемые данные, которые можно удалить. Это может быть выполнено с помощью команд управления почтой или скриптов для очистки. -
Мониторинг использованию дискового пространства:
Убедитесь, что у вас установлены утилиты мониторинга, такие какncdu
, которые могут помочь анализировать используемое дисковое пространство более эффективно и с меньшим влиянием на производительность. -
Рассмотрите возможность обновления оборудования:
Если проблема сохраняется, возможно, стоит рассмотреть вариант увеличения объёма дискового пространства или улучшения производительности (например, путем перехода на SSD). -
Отключение несущественных процессов:
Проверьте другие запущенные процессы, которые могут использовать дисковое пространство или ресурсы, и отключите те, которые не являются необходимыми.
Заключение:
Проблемы с производительностью и управлением дисковым пространством могут вызвать значительные затруднения в функционировании вашего почтового сервера. Следуя вышеуказанным рекомендациям, вы сможете выявить корень проблемы и предпринять шаги для их устранения. Рекомендуется также поддерживать регулярные проверки и мониторинг системы, чтобы предотвратить возникновение подобных проблем в будущем.