У ёмкости файловой системы есть как минимум два ограничения: блоки данных и объекты метаданных, например inode. df сообщает распределение с точки зрения файловой системы, а du обходит достижимые пути и суммирует приписанное им использование. Значения отвечают на разные вопросы и не обязаны совпадать.
Файловая система · Урок 9
Использование диска
Узнайте, как `df` и `du` показывают разные представления потребления блоков и inode файловой системы.
Ёмкость файловой системы через `df`
Покажите тип смонтированной файловой системы и удобные для чтения показатели блоков:
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 6.2G 2.3G 3.6G 40% /
Size, Used и Avail берутся из учёта файловой системы. Доступное место может быть меньше разности общего и использованного из-за зарезервированных блоков, метаданных, политики распределения, квот или округления. Запустите df с путём, чтобы получить файловую систему, содержащую его:
$ df -hT /var/log
О чём прежде всего сообщает df?
Ёмкость inode
Файловые системы, выделяющие inode-подобные объекты, могут исчерпать их при наличии свободных блоков:
$ df -i /var
Множество мелких файлов может занять все inode. Удаление одного большого файла освобождает много блоков, но обычно только один inode; удаление множества ненужных мелких файлов снижает давление inode. Некоторые файловые системы выделяют метаданные динамически и иначе отображают эти понятия.
Что может произойти, если в файловой системе есть свободные блоки, но нет свободных inode?
Использование путей через `du`
Суммируйте выделенное пространство, достижимое под одним каталогом:
$ du -sh /var/log
Сравните непосредственных потомков, оставаясь в одной файловой системе:
$ sudo du -xhd1 /var | sort -h
Показанные параметры GNU означают удобный формат, максимальную глубину один и одну файловую систему. Разрешения могут скрыть поддеревья и дать неполную сумму. По умолчанию du также может учитывать файлы с жёсткими ссылками только один раз, различать видимый размер и выделенные блоки и по-разному обрабатывать разреженные файлы в зависимости от параметров.
Какая команда суммирует выделенное использование под /var/log?
Почему `df` и `du` различаются
Распространённые причины:
- процесс удерживает удалённый файл открытым, поэтому его блоки остаются выделенными, но пути для
duуже нет; - метаданные файловой системы, зарезервированное место, журналы, reflink, снимки или сжатие влияют на учёт;
- внутри обходимого дерева смонтирована другая файловая система;
- разрешения не дают
duпрочитать некоторые каталоги; - видимый и выделенный размеры разреженных файлов различаются.
Для удалённых, но открытых файлов проверьте авторизованные процессы инструментом вроде lsof +L1; перезапустите ответственную службу или отправьте ей сигнал обычным способом, не обрезая неизвестные дескрипторы.
Почему df может показывать занятое место, которое основанный на путях du не находит?
Исследование без усугубления инцидента
Начните с заполненной файловой системы из отчёта df, найдите её цель монтирования через findmnt, затем сужайте поиск du в пределах той же файловой системы. Учитывайте снимки, слои контейнеров, журналы, кеши пакетов и политику хранения приложений. Не удаляйте файлы лишь из-за большого размера; сначала определите владельца, резервирование, нормативные требования и поведение службы.
Как безопаснее всего поступить, найдя большой файл?
Урок завершён
Вы завершили Использование диска
Теперь вы можете согласовывать отчёты о месте на уровне файловой системы и путей.
Использовать
dfдля ёмкости блоков смонтированной файловой системы.Использовать
df -iдля давления inode, где это поддерживается.Выполнять ограниченные обходы
du, чтобы приписывать использование достижимым путям.Исследовать удалённые открытые файлы и особенности учёта конкретной файловой системы.
Применять правила владения и хранения до удаления данных.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт