#Что означает проблема и кому подходит инструкция
В Ubuntu команда df показывает заполненный раздел, а du по обычным папкам находит заметно меньше данных. Это не обязательно ошибка: занятое пространство могут держать удалённые, но открытые файлы, снимки файловой системы, резервирование или другая точка монтирования.
#Возможные причины и отличительные признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Удалённый файл всё ещё открытПроцесс держит файловый дескриптор после удаления лога. | lsof показывает (deleted) с большим размером. | После сохранения данных корректно перезапустить только нужный процесс. |
| Под каталогом скрыто смонтированное устройствоdu и df могут измерять разные файловые системы. | findmnt показывает вложенные точки и другие источники. | Сравнить строго одну и ту же файловую систему. |
| Резерв для root или метаданныеНа ext4 часть блоков зарезервирована; inode и служебные данные тоже занимают место. | df -i, tune2fs и тип файловой системы проясняют картину. | Не менять резерв вслепую на корневом разделе. |
#Диагностика и пошаговое устранение
- 1. Сверьте один и тот же разделОткройте Терминал Ubuntu. Команда
df -h /покажет занятые блоки корня;findmnt -T /— фактический раздел.du -xостаётся на одной файловой системе, что важно для сравнения. Если проблема не в корне, замените/на точный путь. - du только читает, но может выполняться долго; не запускайте часто на загруженном дискеLinux · Терминал (Bash)КомандаНужен sudodu только читает, но может выполняться долго; не запускайте часто на загруженном диске.
df -h /df -i /findmnt -T /sudo du -xhd1 / 2>/dev/null
- 2. Учитывайте скрытые файлы и точки монтированияЗапуск
duбез прав администратора не видит чужие каталоги и занижает сумму. Убедитесь, что сравниваются не разные диски, аdu -xохватывает нужный раздел. Просмотрите точки монтирования: под ними могли скрыться старые файлы, созданные в каталог до подключения носителя. Не размонтируйте системные разделы ради проверки. - Только чтение, вывод может содержать личные имена каталоговLinux · Терминал (Bash)КомандаНужен sudoТолько чтение, вывод может содержать личные имена каталогов.
findmnt -R /sudo du -xhd1 /var 2>/dev/null
- 3. Проверьте удалённые, но ещё открытые файлыЕсли пакет
lsofустановлен, выполните команду с правами администратора и ищите строкиdeleted; большой log, занятый работающим процессом, не освободится, пока процесс не закроет файл. Не очищайте файловый дескриптор через /proc наугад: можно потерять данные и нарушить запись.Linux · Терминал (Bash)КомандаНужен sudoТолько просмотр открытых файлов; если lsof отсутствует, установку согласуйте отдельно.sudo lsof +L1
- 4. Если найден удалённый журнал, выясните владельца процессаВ выводе lsof есть COMMAND и PID. Определите соответствующую службу через
systemctl status PID(в некоторых версиях systemctl поддерживает поиск по PID) илиps -p PID -o .... Перед перезапуском создайте копию нужного лога или свяжитесь с администратором приложения. Перезапуск службы освободит дескриптор, но оборвёт активные соединения. - PID — действительный номер из lsof; не запускайте буквенный PIDLinux · Терминал (Bash)КомандаPID — действительный номер из lsof; не запускайте буквенный PID.
ps -p PID -o pid,user,cmd
- 5. Проверьте свойства файловой системыПосмотрите тип ФС через
findmnt; для ext4 зарезервированные блоки учитываются особо. Не применяйте tune2fs к XFS, Btrfs, ZFS или контейнерному слою. На Btrfs снимки могут учитывать данные иначе — нужна диагностика средствами Btrfs, а не du.Linux · Терминал (Bash)КомандаНикаких действий с суперблоком и резервом без резервной копии.findmnt -T / -o TARGET,SOURCE,FSTYPE,OPTIONSdf -h /
- 6. Повторите сравнение после безопасного освобожденияКогда установленный процесс корректно закрыт или файл удалён штатным средством, повторите df и du на той же файловой системе. Если разрыв не изменился, проверьте доступность inode, состояние снимков и ошибки ФС; не стирайте журналы и системные каталоги вслепую.
- Проверка соответствия данных; команды ничего не удаляютLinux · Терминал (Bash)КомандаНужен sudoПроверка соответствия данных; команды ничего не удаляют.
df -h /sudo du -xhd1 / 2>/dev/nulldf -i /
#Как убедиться, что неисправность устранена
Результат — уменьшение реальной занятости по df с выясненной причиной расхождения. Если сокращение лишь визуально в du, место приложениям ещё не возвращено.
#Если результат не получен
Не повторяйте опасные действия наугад. Сохраните точную формулировку ошибки, вывод диагностики без секретов, версию Ubuntu и данные о затронутом компоненте. Верните лишь собственные изменения из резервной копии; если затронута загрузка, диски или рабочий сервер, воспользуйтесь консолью восстановления либо помощью администратора.