Как проверить свободное дисковое пространство на сервере?

«Как проверить свободное дисковое пространство на сервере?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для оперативной проверки свободного места на сервере я использую стандартные утилиты, часто в составе скриптов мониторинга или перед развертыванием обновлений.

Быстрая проверка всех файловых систем:

df -h
  • -h: Вывод в гигабайтах/мегабайтах.
  • Что смотрю в выводе: Столбцы Size, Used, Avail и особенно Use% для каждого смонтированного раздела (Mounted on).

Целевая проверка конкретного раздела (например, корневого или /var):

df -h / /
var

Это покажет информацию только для указанных путей, что удобно для скриптов.

Автоматизация и мониторинг: Часто встраиваю проверку в скрипты или конфиги систем мониторинга (например, Prometheus node_exporter уже собирает эти метрики). Пример простого bash-скрипта для алерта:

#!/bin/bash
THRESHOLD=90
USAGE=$(df / --output=pcent | tail -1 | tr -d '% ')
if [ $USAGE -gt $THRESHOLD ]; then
    echo "WARNING: Disk usage on / is at ${USAGE}%" | mail -s "Disk Alert" admin@example.com
fi

Глубокий анализ при нехватке места: Если df показывает, что раздел почти заполнен, перехожу к анализу содержимого, чтобы понять, что занимает место. Комбинация du и sort — мой основной метод:

# Найти топ-10 самых больших директорий в корне, исключая смонтированные тома
sudo du -h -x --max-depth=1 / 2>/dev/null | sort -rh | head -11
  • -x: Не пересекать границы файловых систем (игнорирует смонтированные в / отдельные тома, например, /boot).
  • --max-depth=1: Показывать только непосредственные поддиректории.
  • 2>/dev/null: Подавить ошибки доступа.

Важно для DevOps: В облачных средах или при использовании логических томов (LVM) проблема часто решается не очисткой, а увеличением размера тома. После df проверяю наличие свободного пространства в группе томов: sudo vgs или sudo lvs.