#Когда возникает ошибка в Debian и какие условия важны
На Debian df показывает занятое пространство на разделе значительно больше суммы каталогов от du. Такое расхождение возможно при удалённых, но ещё открытых файлах, отдельных точках монтирования, снимках файловой системы и резервировании блоков.
#Причины и как отличить их друг от друга
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Удалённый файл остаётся открытым процессом | df не уменьшился после удаления большого лога, du его больше не находит. | Найти fd с пометкой deleted и штатно закрыть владельца. |
| Сравниваются разные файловые системы | du идёт по каталогу, а df учитывает другой том или снимки. | Сверить findmnt и ограничить du одной файловой системой. |
| Служебные блоки или снимки | При ext4 часть блоков зарезервирована; на Btrfs/ZFS возможны снимки. | Проверить тип ФС и считать её особенности. |
#Пошаговая диагностика и устранение
- 1. Найдите раздел, на котором реально закончились блокиОткройте терминал Debian и прочитайте df -hT и df -i. Первое показывает байты, второе — количество inode. Если inode заполнены, удаление одного крупного файла может не решить проблему, а создание новых мелких файлов тоже будет запрещено. Не удаляйте системные каталоги вслепую.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
df -hTdf -i
- 2. Сверьте точку монтирования и измерение каталоговУкажите собственную точку в findmnt, затем запускайте du -x на той же файловой системе. Ключ -x не пересекает другие монтирования, а -s суммирует. На огромном разделе обход может идти долго и повышать дисковую нагрузку; не запускайте многократные измерения в часы пика.Linux · Терминал (Bash)КомандаНужен sudoТолько чтение файлов, может потребоваться время.
findmnt -T /varsudo du -xsh /var
- 3. Проверьте удалённые, но ещё открытые файлыЕсли большой журнал удалён, но процесс продолжает его писать, диск не освобождается до закрытия дескриптора. При наличии lsof используйте +L1 и ищите deleted с большим размером. Не обнуляйте произвольно /proc/PID/fd/NN: можно повредить данные запущенной службы.Linux · Терминал (Bash)КомандаНужен sudolsof может не быть установлен в минимальном Debian.
sudo lsof +L1
- 4. Определите, кто удерживает местоСопоставьте PID из lsof с именем процесса и конкретной службой через ps и systemctl status. Запланируйте штатную ротацию или перезапуск только этой службы после сохранения данных. Если процесс — база данных, сначала изучите механизм журналов самой БД, а не обрезайте открытые файлы.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
ps -p PID -o pid,user,comm,argssystemctl --failed --no-pager
- 5. Проверьте файлы и каталоги системного журналаПри включённом постоянном journald размер журналов можно оценить journalctl --disk-usage. Очистка через vacuum изменяет историю диагностики; в статье это не предлагается автоматически. Если место занято /var/log, проверьте logrotate и реальные имена файлов вместо удаления всех архивов.Linux · Терминал (Bash)КомандаНужен sudoОцениваем место, ничего не удаляем.
journalctl --disk-usagesudo du -xsh /var/log
- 6. Учитывайте тип файловой системыПросмотрите findmnt и lsblk -f. Для ext4 разница между общим и доступным пространством может объясняться резервными блоками; для Btrfs и ZFS — снимками либо квотами. Не выполняйте tune2fs -m, btrfs balance или zfs destroy без понимания назначения тома и резервной копии.Linux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
findmnt -no SOURCE,FSTYPE,OPTIONS /lsblk -f
- 7. Подтвердите освобождение на том же разделеПосле безопасного устранения конкретной причины повторите df -hT и du -xsh на том же пути. Если показатели не изменились, проверьте другие открытые удалённые файлы и иные подтома; не запускайте массовое удаление ради числа в процентах.
- Сравнение должно выполняться по той же точке и файловой системеLinux · Терминал (Bash)КомандаНужен sudoСравнение должно выполняться по той же точке и файловой системе.
df -hT /varsudo du -xsh /var
#Проверка результата и действия при неуспехе
Проблема устранена, когда нужный раздел имеет запас блоков и inode, а разница df/du объясняется конкретным владельцем файлов либо особенностью файловой системы.