Linux: свободное место на диске — df -h и inodes

Категория: Bash · Язык: Bash · Обновлено:

Свободное место на дисках показывает команда df -h: размер, занятое, доступное и точка монтирования для каждой файловой системы. Если места «нет», хотя файлов немного, проверьте inodes командой df -i. Размер конкретной папки определяет du -sh.

Основные команды

Bash
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

Столбец

Значение

Filesystem

Устройство или источник

Size

Размер файловой системы

Used

Занято

Avail

Доступно обычным пользователям

Use%

Доля занятого места

Mounted on

Точка монтирования

Значение Avail обычно меньше, чем Size − Used: часть места файловые системы резервируют для root.

Нет места, но диск не заполнен: inodes

Каждый файл занимает один inode. Миллионы мелких файлов могут исчерпать inodes раньше, чем закончится место:

Bash
df -i                  # занятые и свободные inodes
df -i /var

Если в столбце IUse% значение 100%, новые файлы создать нельзя, даже когда места на диске достаточно. Найти папки с большим числом файлов поможет команда:

Bash
for d in /var/*; do echo "$(find "$d" -xdev 2>/dev/null | wc -l) $d"; done | sort -rn | head

Размер конкретной папки

Bash
du -sh /var/log        # общий размер папки
du -h --max-depth=1 /var | sort -h | tail -5    # самые большие вложенные папки

Вывод для скриптов

Bash
df --output=pcent / | tail -1 | tr -dc '0-9'     # только число процентов: 67
df --output=avail -B1G / | tail -1               # доступно гигабайт

Проверка с порогом в скрипте мониторинга:

Bash
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.