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

Какая утилита используется для анализа нагрузки на файловую систему?

1.7 Middle🔥 171 комментариев
#Linux и администрирование#Мониторинг и логирование

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

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

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

Для анализа нагрузки на файловой системе в Linux-окружении, типичном для DevOps, основной и наиболее мощной утилитой является iotop и ее «сестра» для блочных устройств — iostat, которая входит в пакет sysstat. Однако, вопрос о «нагрузке на файловую систему» может трактоваться шире: это не только ввод/вывод (I/O), но и мониторинг использования дискового пространства, инодов, а также отслеживание того, какие процессы активно работают с файлами. Поэтому я расскажу о ключевых инструментах, которые мы, как DevOps-инженеры, используем для комплексного анализа.

Основные утилиты для мониторинга I/O (дисковой активности)

1. iostat (часть пакета sysstat)

Это классический инструмент для получения статистики по использованию CPU и дисковым подсистемам. Она показывает средние значения за время работы системы и может выводить данные в режиме реального времени. Ключевые метрики: await (среднее время ожидания обслуживания I/O-запроса), %util (процент использования устройства), tps (количество передач в секунду).

# Установка (например, на Ubuntu)
sudo apt install sysstat

# Просмотр сводной статистики по всем дискам с обновлением каждые 2 секунды
iostat -dx 2

# Вывод расширенной статистики только по определенному устройству (например, sda)
iostat -dx /dev/sda 2

2. iotop

Аналог top, но для дискового I/O. Показывает процессы в реальном времени, сортируя их по объему чтения/записи. Это незаменимо, когда нужно быстро найти «виновника» высокой дисковый нагрузки.

# Установка
sudo apt install iotop

# Запуск с выводом накопленной статистики ввода-вывода
sudo iotop -o

# Запуск в режиме только вывода процессов, совершающих I/O
sudo iotop --only

3. pidstat (также из sysstat)

Более продвинутый инструмент для мониторинга активности конкретных процессов, включая I/O. Может показывать статистику по каждому процессу отдельно, что удобно для детального анализа.

# Мониторинг дискового I/O всех процессов с обновлением каждую секунду
pidstat -d 1

Утилиты для анализа использования дискового пространства и инодов

Нагрузка на файловую систему — это также вопрос свободного места и инодов (структур, описывающих файлы).

  • df — базовая утилита для проверки использования дискового пространства и инодов на смонтированных файловых системах.
    # Показать использование пространства в человеко-читаемом формате
    df -h
    
    # Показать использование инодов
    df -i
    
  • du — для оценки объема, занимаемого конкретными директориями. Часто используется в связке с sort для поиска самых «прожорливых» папок.
    # Найти топ-10 самых больших директорий в текущем каталоге
    du -ah . | sort -rh | head -n 10
    

Продвинутые инструменты и трассировка

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

  • blktrace и blkparse — инструменты для трассировки запросов на уровне блочного устройства. Позволяют увидеть полный путь I/O-операции: от запроса ядра до физического диска. Анализ их вывода (например, с помощью btt) помогает выявить проблемы с очередями, задержками и паттернами доступа.

    # Запуск трассировки для устройства /dev/nvme0n1
    sudo blktrace -d /dev/nvme0n1 -w 5  # трассировка 5 секунд
    # Затем объединение данных
    blkparse -i nvme0n1 -d trace.bin
    
  • fatrace (File Activity Trace) — утилита для отслеживания активности файловой системы в реальном времени. Показывает, какие процессы читают, пишут или создают какие файлы.

    sudo fatrace | grep -v "mozilla"  # отследить всю активность, фильтруя, например, шум от браузера
    

Практический подход DevOps-инженера

В реальной работе мы редко используем одну утилиту. Стандартный пайплайн анализа выглядит так:

  1. Верхнеуровневая диагностика: Сначала df -h и df -i — чтобы исключить банальное переполнение.
  2. Выявление общей картины по I/O: iostat -dx 2 — смотрим на %util, await. Если показатели высоки (>80% util или await > 10-20 мс для HDD / > 1-2 мс для SSD), переходим к шагу 3.
  3. Поиск процессов-нарушителей: sudo iotop -o — находим PID и имя процесса, создающего основную нагрузку.
  4. Детальный анализ процесса: pidstat -d -p <PID> 1 или strace -p <PID> -e trace=file (чтобы увидеть конкретные системные вызовы к файлам).
  5. Глубокий анализ паттернов доступа (если проблема хроническая): Используем blktrace и анализируем логи, чтобы понять, случайный это доступ или последовательный, какова глубина очереди и т.д.

Кроме того, в Production-средах мы настраиваем системы постоянного мониторинга (Prometheus с node_exporter, Datadog, Zabbix), которые собирают метрики с iostat (через node_exporter's diskstats collector) и df, строят графики и отправляют алерты при достижении порогов. Это позволяет не ждать проблему, а предупреждать ее.

Итог: Универсального ответа нет. iotop и iostat — это «швейцарские ножи» для оперативного анализа I/O-нагрузки. Но для полного понимания нагрузки на файловую систему DevOps-инженер должен владеть целым арсеналом: от базовых df/du до сложных blktrace, интерпретируя их данные в контексте конкретного приложения и инфраструктуры.

Какая утилита используется для анализа нагрузки на файловую систему? | PrepBro