df
Использование дискового пространства — отчёт о занятом и свободном месте на файловых системах
Описание
df (disk free) — утилита для отображения информации об использовании дискового пространства на смонтированных файловых системах. Команда показывает общий размер, использованное и свободное пространство, процент заполнения и точку монтирования для каждого раздела.
Данные df берёт из системного вызова statfs(), обращаясь напрямую к файловым системам. Это означает, что df отображает пространство на уровне файловой системы, а не физических блоков диска — учитываются зарезервированные блоки, inodes и особенности конкретной ФС. В Linux реализация из пакета coreutils (GNU df).
Используйте df для быстрой проверки свободного места на всех разделах. Если диск почти заполнен, но причина неясна — дополните анализ командой du, которая покажет размеры конкретных директорий и файлов.
Синтаксис
Если указан путь file, df показывает информацию о файловой системе, на которой находится этот файл/директория. Без аргументов — все смонтированные файловые системы.
Поля: Filesystem — устройство/ФС, Size — общий размер, Used — занято, Avail — доступно, Use% — процент заполнения, Mounted on — точка монтирования.
Флаги и опции
| Флаг | Описание |
|---|---|
-h | Human-readable: размеры в K, M, G, T (степени 1024). Наиболее удобный режим |
-H | Human-readable со степенями 1000 (как производители дисков: 1 GB = 1000 MB) |
-T | Показать тип файловой системы (ext4, xfs, tmpfs, nfs и т.д.) |
-t type | Показать только файловые системы указанного типа. Пример: df -t ext4 |
-x type | Исключить файловые системы указанного типа. Пример: df -x tmpfs |
-i | Показать использование inodes вместо блоков. Важно: можно исчерпать inodes при полном диске по счётчику |
-a | Включить все файловые системы, в том числе с нулевым размером (pseudo-FS) |
-l | Только локальные файловые системы (исключить NFS и другие сетевые) |
--total | Добавить итоговую строку с суммой по всем ФС |
-P | POSIX-формат вывода (совместимость, не переносит строки) |
-B size | Блок для вывода. Пример: -BM — в мегабайтах, -BG — в гигабайтах |
--output=list | Выбрать и упорядочить поля вывода (source,size,used,avail,pcent,target) |
Паттерны использования
Стандартная проверка диска
# Читаемый вывод — самый частый случай df -h # С типом файловой системы df -hT # Только реальные диски (без tmpfs и т.п.) df -hT -x tmpfs -x devtmpfs
Место для конкретного пути
# На какой ФС находится /var/log? df -h /var/log # Где хранится /home? df -h /home # Проверить наполненность перед деплоем df -h /var/www/html
Мониторинг использования inodes
# Проверить inodes (важно для серверов с логами)
df -i
# Читаемый + inodes
df -ih
# Симптом: "No space left" при df -h показывает место
# Причина: исчерпаны inodes!
df -i / | awk 'NR>1 {print $5}' # % use inodes
Итоговое пространство всех разделов
# Сумма по всем ФС df -h --total # Только локальные диски с итогом df -hl --total # Пространство в гигабайтах (ровно) df -BG
Парсинг в скриптах
# Получить % заполнения конкретного раздела
df -P / | awk 'NR==2 {print $5}'
# Выведет: 38%
# Алерт если > 90%
USAGE=$(df -P / | awk 'NR==2 {gsub(/%/,"",$5); print $5}')
if [ "$USAGE" -gt 90 ]; then
echo "WARNING: disk usage ${USAGE}%"
fi
Пользовательский формат вывода
# Только нужные поля df --output=source,size,used,avail,pcent # Добавить тип ФС df --output=source,fstype,size,avail,pcent,target # Отсортировать по % заполнения df -h | sort -k5 -rn
Советы и предупреждения
df -h покажет, что место заканчивается, но не где. Затем используйте du -sh /* 2>/dev/null | sort -rh | head -20 — чтобы найти директорию с наибольшим потреблением. Эта пара команд решает 90% задач по диагностике заполнения диска.
В ext4 по умолчанию 5% дискового пространства зарезервировано для root (tune2fs -m). Это объясняет, почему
Used + Avail < Size. На больших дисках (несколько ТБ) это значительный объём — уменьшите до 1–2%: tune2fs -m 2 /dev/sda1.
Если
df -h показывает свободное место, но операции записи завершаются с ошибкой — проверьте inodes: df -i. При значении IUse% равном 100% запись невозможна. Причина обычно — тысячи мелких файлов (логи, сессии, кэш). Решение: очистить или переместить директорию с мелкими файлами.