Linux: свободное место на диске — df -h и inodes
Свободное место на дисках показывает команда df -h: размер, занятое, доступное и точка монтирования для каждой файловой системы. Если места «нет», хотя файлов немного, проверьте inodes командой df -i. Размер конкретной папки определяет du -sh.
Основные команды
df -h # все файловые системы, размеры в понятных единицах (K, M, G)
df -h /var # только раздел, на котором находится /var
df -hT # добавить тип файловой системы (ext4, xfs, tmpfs)
df -h --total # итоговая строка по всем разделамКак читать вывод df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 32G 16G 67% /
tmpfs 2.0G 0 2.0G 0% /dev/shmСтолбец | Значение |
|---|---|
| Устройство или источник |
| Размер файловой системы |
| Занято |
| Доступно обычным пользователям |
| Доля занятого места |
| Точка монтирования |
Значение Avail обычно меньше, чем Size − Used: часть места файловые системы резервируют для root.
Нет места, но диск не заполнен: inodes
Каждый файл занимает один inode. Миллионы мелких файлов могут исчерпать inodes раньше, чем закончится место:
df -i # занятые и свободные inodes
df -i /varЕсли в столбце IUse% значение 100%, новые файлы создать нельзя, даже когда места на диске достаточно. Найти папки с большим числом файлов поможет команда:
for d in /var/*; do echo "$(find "$d" -xdev 2>/dev/null | wc -l) $d"; done | sort -rn | headРазмер конкретной папки
du -sh /var/log # общий размер папки
du -h --max-depth=1 /var | sort -h | tail -5 # самые большие вложенные папкиВывод для скриптов
df --output=pcent / | tail -1 | tr -dc '0-9' # только число процентов: 67
df --output=avail -B1G / | tail -1 # доступно гигабайтПроверка с порогом в скрипте мониторинга:
usage=$(df --output=pcent / | tail -1 | tr -dc '0-9')
if [ "$usage" -ge 90 ]; then
echo "Диск заполнен на ${usage}%" >&2
fiЧастые вопросы
Почему df и du показывают разные размеры?
df берёт данные файловой системы, а du суммирует файлы. Расхождение дают удалённые файлы, которые держит открытыми процесс: найдите их командой lsof +L1 и перезапустите процесс.
Что делать, если диск заполнен?
Найдите крупные папки через du, очистите журналы и кэш пакетов, удалите старые образы и тома Docker. Затем снова проверьте df -h.
Как включить вывод df в мегабайтах?
Используйте df -m или df -BM. Для степеней десяти вместо двойки применяют df -H.