# df -h /
Filesystem Size Used Avail Use% Mounted on
rootfs 9.9G 7.2G 2.2G 77% /
# du -hx --max-depth=0 /
3.2G /
Как вы видете, df
говорит, что используется 7,2 ГБ, но du
могу найти только 3,2 ГБ. Сервер был перезагружен, так как я это заметил, так что это не удаленный файл. Дополнительно, lsof
не показывает мне ничего интересного. Что еще это может быть?
У меня была такая же проблема в моей системе ext4, и я просто хотел опубликовать свое решение для использования в будущем. Когда мой диск изначально был заполнен, я удалил кучу журналов из / var / log. Это очистило пару ГБ, но через несколько дней у меня снова закончилось место, а du -h и «mount --bind / / mnt» не указывали на виновника. В конце концов я его получил, когда запустил lsof.
lsof ... rsyslogd 1766 root 2w REG 9,1 12672375940 264014 /var/log/messages (deleted) ...
Когда я удалил файл журнала сообщений, служба rsyslog оставила его открытым, но скрытым. Выполнение команды «touch / var / log / messages; перезапуск службы rsyslog» устранило проблему, и мое дисковое пространство было освобождено.
Вывод lsof может быть немного подавляющим, особенно если у вас загруженная система (у меня это было более 1000 строк). Если в выводе lsof вы введете grep для «удалено», это должно помочь выявить проблемный процесс.
Поскольку вы используете -x
вариант, я полагаю, у вас смонтированы другие файловые системы? Возможно, у вас есть другой раздел, смонтированный поверх каталога, который не был пустым.
Убедитесь, что все папки "позади" ваших точек монтирования пусты. Исходя из опыта, я бы сказал, что, скорее всего, вы скрываете некоторые данные за точкой монтирования.
вы можете проверить, что находится в папке за точкой монтирования, не размонтируя диск / разделы (что может быть неплохо, если, например, вам придется размонтировать / usr). Просто сделай
# mount --bind / /mnt
# du -shx /mnt
также в качестве примечания:
# du -shx /
делает то же самое, что и ваш du ..., но немного короче (-s означает суммировать)
Может возникнуть пара проблем: (1) процесс имеет большой файл или количество открытых файлов, которые были удалены, или (2) у вас может быть какая-то проблема с файловой системой, исправленная с помощью fsck диска. Однако это можно сделать только тогда, когда привод не установлен. Некоторые Linux предоставляют метод FULL fsck корневого файла во время загрузки:
touch /forcefsck
а затем перезагрузка. Я знаю, что это существует в вариантах SuSE и RedHat.