Как узнать потребление диска
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Определение потребления диска в Linux-системах
Для мониторинга потребления дискового пространства в Linux существует ряд стандартных утилит, которые позволяют анализировать использование на разных уровнях: от общего объема до детализации по директориям и файлам. В DevOps-практике это критически важно для емкостного планирования (capacity planning), выявления аномалий (например, быстрорастущих лог-файлов) и оптимизации ресурсов.
Основные консольные утилиты
1. df (disk free)
Показывает общее, использованное и свободное пространство для смонтированных файловых систем. Ключевые флаги:
-h(human-readable) – вывод в удобочитаемом формате (ГБ, МБ).-T– отображение типа файловой системы (ext4, xfs, tmpfs).-i– информация об инодах (inodes), что особенно актуально для систем с множеством мелких файлов.
# Базовый пример с человеко-читаемым выводом
df -h
# Детальный вывод с типами ФС и инодами
df -hTi
Вывод показывает использование по каждому подключенному устройству/разделу, включая сетевые файловые системы (NFS) и временные (tmpfs).
2. du (disk usage)
Оценивает использование пространства конкретными директориями и файлами. Часто используется для поиска "тяжелых" объектов в файловой иерархии.
-s(summarize) – только итоговая сумма для указанной директории.-h– человеко-читаемый формат.--max-depth=N– ограничение глубины рекурсии.-x– не пересекать границы файловых систем (игнорировать смонтированные в поддиректориях тома).
# Узнать размер текущей директории
du -sh .
# Показать топ-5 крупнейших поддиректорий на глубине 1
du -h --max-depth=1 /var | sort -hr | head -5
# Найти все файлы > 100 МБ в /home (может требовать sudo)
find /home -type f -size +100M -exec du -h {} \; | sort -hr
3. ncdu (NCurses Disk Usage)
Интерактивная TUI-версия du с навигацией по клавиатуре. Позволяет быстро "проваливаться" в директории, сортировать содержимое и удалять файлы прямо из интерфейса. Устанавливается отдельно (apt install ncdu / yum install ncdu).
# Анализ /var с сохранением отчета для последующего сравнения
ncdu -xo- /var | tee /tmp/var_usage_$(date +%F).log
Мониторинг в реальном времени и расширенные методы
Для отслеживания динамики (например, при резком росте использования) применяются:
watch– периодический запуск команды с визуализацией изменений.
# Обновлять вывод df каждые 2 секунды
watch -n 2 'df -h / /var'
iotop/iostat(из пакетаsysstat) – мониторинг дисковых операций ввода-вывода, помогающий идентифицировать процессы, активно пишущие на диск.
iostat -dx 2 # Статистика по устройствам каждые 2 сек
Автоматизация и интеграция в DevOps-практики
В инфраструктуре, управляемой как код (IaC), мониторинг диска встраивается в пайплайны наблюдения (observability pipelines):
- Сбор метрик – агенты (node_exporter для Prometheus) собирают
node_filesystem_*метрики (использование в байтах/процентах, иноды). - Алертинг – в Prometheus Alertmanager или Grafana настраиваются правила:
node_filesystem_usage_percent > 85%– предупреждение.node_filesystem_usage_percent > 95%– критическое состояние.
- Логирование изменений – ежедневные отчеты через
cron:
# Пример cron-задачи для ежедневного отчета
0 2 * * * df -h > /var/log/disk_usage/$(date +\%Y\%m\%d).log
- "Самоисцеление" (self-healing) – автоматическая очистка временных файлов (например,
logrotateдля логов, скрипты удаления старых бэкапов) при достижении пороговых значений.
Рекомендации для production-сред
- Отдельные разделы для
/,/var,/home– это изолирует проблемы переполнения (например, логи в/varне "положат" всю систему). - Мониторинг инодов – особенно для сервисов, создающих миллионы мелких файлов (кэш, почтовые очереди). Команда
df -iпокажет, если лимит исчерпан, даже при свободном месте. - Использование LVM – для гибкого управления разделами (расширение томов "на лету" без остановки служб).
- Анализ роста в разрезе времени – инструменты типа
trendдля прогнозирования, когда закончится место.
В контейнеризованных средах (Docker/Kubernetes) добавляется уровень мониторинга volume'ов и ephemeral storage через docker system df или метрики cAdvisor, но базовые принципы остаются теми же: регулярный сбор данных, автоматическое оповещение и проактивное управление ресурсами.
Ответ сгенерирован нейросетью и может содержать ошибки
Получение информации о потреблении диска в Linux
Для анализа использования дискового пространства в Linux существует множество инструментов, от базовых команд до продвинутых утилит мониторинга. Как DevOps-инженер, я использую комбинацию этих методов для полного понимания ситуации с дисками.
Базовые консольные команды
1. df (disk free) - свободное пространство Самая распространенная команда показывает использование смонтированных файловых систем:
# Базовая информация
df -h
# Подробный вывод с типами файловых систем
df -hT
# Только определенная файловая система
df -h /var
Ключевые параметры:
-h- human-readable (ГБ, МБ)-T- отображение типа файловой системы-i- информация об использовании inode
2. du (disk usage) - использование директорий Показывает, какие директории занимают больше всего места:
# Размер текущей директории
du -sh
# Рекурсивный анализ с сортировкой
du -h --max-depth=1 /var | sort -hr
# Топ-10 самых больших директорий
du -ah /path | sort -rh | head -10
Продвинутые утилиты анализа
1. ncdu (NCurses Disk Usage) Интерактивная утилита для детального анализа:
# Установка
apt-get install ncdu # Debian/Ubuntu
yum install ncdu # RHEL/CentOS
# Запуск анализа
ncdu /var
2. Baobab (GUI-анализатор) Для графических интерфейсов отлично подходит Baobab, который показывает данные в виде круговой диаграммы.
Мониторинг в production-среде
В production-среде я настраиваю автоматический мониторинг через:
1. Prometheus + node_exporter
# Конфигурация alert в Prometheus
groups:
- name: disk_alerts
rules:
- alert: HighDiskUsage
expr: (node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100 > 85
for: 5m
labels:
severity: warning
annotations:
summary: "Высокое использование диска на {{ $labels.instance }}"
2. Создание custom-метрик
#!/bin/bash
# Скрипт для сбора метрик диска
USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
echo "disk_usage_percent $USAGE" | curl --data-binary @- http://prometheus:9091/metrics/job/disk_monitor
Автоматизация и алертинг
Для DevOps критически важно автоматизировать мониторинг дискового пространства:
1. Bash-скрипт для проверки
#!/bin/bash
THRESHOLD=85
CURRENT=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$CURRENT" -gt "$THRESHOLD" ]; then
echo "ВНИМАНИЕ: Использование диска ${CURRENT}% превышает порог ${THRESHOLD}%"
# Отправка уведомления в Slack/Telegram
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"🚨 Disk usage is ${CURRENT}%\"}" \
$SLACK_WEBHOOK
fi
2. Использование Ansible для сбора метрик
- name: Collect disk usage across servers
hosts: all
tasks:
- name: Get disk usage
shell: df -h | grep -E '^/dev'
register: disk_usage
- name: Display critical usage
debug:
msg: "{{ item }}"
when: item.split()[4] | replace('%', '') | int > 85
loop: "{{ disk_usage.stdout_lines }}"
Анализ логических томов (LVM)
Для систем с LVM требуются дополнительные команды:
# Показать информацию о физических томах
pvs
# Показать информацию о группах томов
vgs
# Показать информацию о логических томах
lvs
Практические рекомендации для DevOps
- Регулярный мониторинг - настройте ежедневные проверки через cron
- Автоматическая очистка - удаление старых логов, кэшей
- Использование ротации логов - logrotate для управления размером логов
- Мониторинг inode - иногда место есть, но inode закончились
- Настройка алертов - уведомления при достижении 80%, 90%, 95% заполнения
Пример комплексного решения
#!/bin/bash
# Комплексный мониторинг диска
echo "=== Disk Usage Report ==="
date
echo ""
echo "1. Filesystem overview:"
df -hT --total
echo ""
echo "2. Top 10 largest directories in /:"
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -11
echo ""
echo "3. Inode usage:"
df -i
echo ""
echo "4. LVM status (if applicable):"
which lvs >/dev/null 2>&1 && sudo lvs || echo "LVM not available"
Для эффективного управления дисковым пространством в DevOps-практике я рекомендую комбинировать:
- Регулярный мониторинг через Prometheus/Grafana
- Автоматические алерты при достижении пороговых значений
- Политики хранения данных с четкими сроками жизни
- Использование облачных решений для динамического расширения томов при необходимости
Этот комплексный подход позволяет предотвращать инциденты, связанные с нехваткой дискового пространства, и поддерживать стабильную работу инфраструктуры.