#Когда возникает проблема и к каким системам относится
Система показывает заполненную файловую систему, но сумма файлов по du заметно меньше. Это бывает из-за удалённых открытых файлов, отдельных точек монтирования, метаданных или особенностей ФС. Rocky Linux на ext4, XFS или Btrfs; сравнивать значения df и du следует для одного и того же смонтированного тома.
#Основные причины: как отличить одну от другой
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Удалённый открытый файлИмя удалено, но процесс продолжает писать | lsof +L1 указывает процесс | Согласованно закрыть файл через корректную остановку процесса |
| Разные области подсчётаdu считает только текущий каталог или пересекает несколько томов | findmnt показывает другие точки | Сравнивать одинаковую файловую систему с du -x |
| Различия метаданных/квотXFS/ext4/Btrfs учитывают блоки, резерв, snapshots по-разному | df и du не совпадают без открытых файлов | Исследовать именно тип файловой системы |
#Пошаговая диагностика и устранение неисправности
- Шаг 1. Уточните, какая файловая система переполненаКоманда df показывает блоки и тип ФС; df -i сообщает об исчерпании inode — отдельная причина отказов записи. Запишите точную точку монтирования, а не удаляйте случайные каталоги.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
df -hTdf -ifindmnt -T /var
- Шаг 2. Сравните занятое место на одном и том же томеЕсли /var — отдельный том, du -x не переходит на другие разделы. На большом сервере расчёт может быть тяжёлым, запускать его лучше при низкой нагрузке.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
sudo du -xhd1 /var 2>/dev/nulldf -h /var
- Шаг 3. Найдите удалённые файлы, удерживаемые процессамиКоманда lsof +L1 показывает файлы со счётчиком ссылок меньше одного. Если lsof нет, не устанавливайте пакеты при полном диске вслепую; зафиксируйте проблему для администратора. Не пытайтесь очистить дескриптор через /proc вручную.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
command -v lsofsudo lsof +L1
- Шаг 4. Уточните, кто владеет найденным файломЗапишите PID и имя процесса, сравните имя с systemd service. Даже если размер велик, перезапуск службы может прервать работу приложения или стереть несохранённые данные; согласуйте это заранее.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
ps -eo pid,user,comm,args | head -35systemctl --failed
- Шаг 5. Проверьте вложенные точки монтированияДанные, записанные в каталог до монтирования отдельного диска, скрываются под ним; штатный du их не увидит. Не размонтируйте рабочие тома на сервере для проверки: требуется план обслуживания либо загрузка с внешнего носителя.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
findmnt -R /varlsblk -f
- Шаг 6. Проверьте специфику ext4/XFS/BtrfsРезерв ext4, распределение метаданных XFS и разделяемые экстенты/снимки Btrfs не обязаны совпадать с суммой обычных файлов. Не уменьшайте резерв и не стирайте снимки без понимания политики копирования.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
findmnt -no FSTYPE,SOURCE,TARGET /varstat -f -c "type=%T blocks=%b free=%f avail=%a" /var
- Шаг 7. Повторите расчёт после адресного устраненияСравните значения df и du по той же точке монтирования. Если место освобождено после закрытия открытого файла, в новом lsof его больше нет; если причина системная, передайте сохранённые значения администратору вместо удаления логов вручную.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
df -hT /vardf -i /varsudo du -xhs /var 2>/dev/null
#Как убедиться, что неисправность устранена
После согласованного исправления на нужном томе появляется свободное место, df и du объяснимо соотносятся, а сервисы снова могут создавать файлы.
#Если предложенный способ не сработал
При сохраняющемся расхождении исследуйте конкретную файловую систему (XFS, ext4, Btrfs), снимки и фоновые процессы; не выполняйте mkfs, отключение квот и ручную чистку /var/lib.