← Назад к вопросам

Как узнать потребление диска

1.3 Junior🔥 142 комментариев
#Linux и администрирование

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Определение потребления диска в 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):

  1. Сбор метрик – агенты (node_exporter для Prometheus) собирают node_filesystem_* метрики (использование в байтах/процентах, иноды).
  2. Алертинг – в Prometheus Alertmanager или Grafana настраиваются правила:
    • node_filesystem_usage_percent > 85% – предупреждение.
    • node_filesystem_usage_percent > 95% – критическое состояние.
  3. Логирование изменений – ежедневные отчеты через cron:
# Пример cron-задачи для ежедневного отчета
0 2 * * * df -h > /var/log/disk_usage/$(date +\%Y\%m\%d).log
  1. "Самоисцеление" (self-healing) – автоматическая очистка временных файлов (например, logrotate для логов, скрипты удаления старых бэкапов) при достижении пороговых значений.

Рекомендации для production-сред

  • Отдельные разделы для /, /var, /home – это изолирует проблемы переполнения (например, логи в /var не "положат" всю систему).
  • Мониторинг инодов – особенно для сервисов, создающих миллионы мелких файлов (кэш, почтовые очереди). Команда df -i покажет, если лимит исчерпан, даже при свободном месте.
  • Использование LVM – для гибкого управления разделами (расширение томов "на лету" без остановки служб).
  • Анализ роста в разрезе времени – инструменты типа trend для прогнозирования, когда закончится место.

В контейнеризованных средах (Docker/Kubernetes) добавляется уровень мониторинга volume'ов и ephemeral storage через docker system df или метрики cAdvisor, но базовые принципы остаются теми же: регулярный сбор данных, автоматическое оповещение и проактивное управление ресурсами.

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Получение информации о потреблении диска в 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

  1. Регулярный мониторинг - настройте ежедневные проверки через cron
  2. Автоматическая очистка - удаление старых логов, кэшей
  3. Использование ротации логов - logrotate для управления размером логов
  4. Мониторинг inode - иногда место есть, но inode закончились
  5. Настройка алертов - уведомления при достижении 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
  • Автоматические алерты при достижении пороговых значений
  • Политики хранения данных с четкими сроками жизни
  • Использование облачных решений для динамического расширения томов при необходимости

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

Как узнать потребление диска | PrepBro