Как анализировать использование дискового ввода-вывода (iostat, iotop)?

В статье разберём:

  • как установить и использовать iostat для анализа устройств;
  • как применять iotop для поиска «прожорливых» процессов;
  • какие метрики учитывать при диагностике;
  • какие ошибки встречаются и как их решать.

Что понадобится

  • Ubuntu/Debian VPS с доступом по SSH.

  • Пакеты sysstat (для iostat) и iotop.

  • Права root или sudo.

Использование iostat для анализа дискового ввода-вывода

iostat входит в пакет sysstat и показывает общую статистику по дискам и CPU. Он помогает понять, есть ли проблемы с производительностью хранилища.

Установка

sudo apt update
sudo apt install -y sysstat

Базовый запуск

iostat

По умолчанию утилита выводит средние значения с момента запуска системы.

Мониторинг в реальном времени

# обновление каждые 2 секунды, 5 раз подряд
iostat -dx 2 5

Ключевые метрики

  • %util — загрузка устройства. Если часто >80%, диск перегружен.

  • r/s и w/s — количество операций чтения/записи в секунду.

  • await — среднее время обработки запроса (мс). Высокое значение — признак «тормозящего» диска.

  • svctm — среднее время обслуживания запросов (мс).

Анализ диска с помощью iostat

Совет: используйте iostat -mx для вывода в мегабайтах/секунду и более наглядной статистики.

Мониторинг процессов через iotop

iotop показывает, какие процессы больше всего используют диск в реальном времени — аналог top, но для I/O. Это помогает быстро выявить «прожорливые» сервисы.

Установка

sudo apt update
sudo apt install -y iotop

Запуск

sudo iotop

По умолчанию вывод обновляется раз в несколько секунд и показывает процессы с активным дисковым вводом-выводом.

Основные столбцы

  • DISK READ / DISK WRITE — текущая скорость чтения/записи процессом.

  • SWAPIN — использование подкачки.

  • IO% — доля времени, когда процесс ждал операций I/O.

  • COMMAND — команда, вызвавшая процесс.

Полезные опции

  • -o — показывать только процессы с активным I/O.

  • -a — накопительная статистика (сумма операций с момента запуска).

  • -b — пакетный режим (удобно для логирования).

Мониторинг процессов с помощью iotop

Совет: если iotop жалуется на отсутствие прав, добавьте пользователя в группу adm или запускайте через sudo.

Типичные ошибки и их решения

При работе с iostat и iotop иногда возникают ошибки. Разберём самые распространённые.

Ошибки при использовании iostat

  • Command ‘iostat’ not found — утилита не установлена.

    sudo apt install -y sysstat
  • No such file or directory для устройств — бывает, если в системе нет физических дисков (например, только виртуальные тома). В этом случае используйте lsblk или df -h для уточнения устройств.

Ошибки при использовании iotop

  • iotop: command not found — утилита отсутствует.

    sudo apt install -y iotop
  • iotop: cannot run as ordinary user — запуск без прав root. Решение:

    sudo iotop

    или добавьте пользователя в группу adm:

    sudo usermod -aG adm $USER
  • No I/O activity — на диске просто нет активных операций. Попробуйте сгенерировать нагрузку (например, с помощью dd):

    dd if=/dev/zero of=testfile bs=1M count=500
Ошибки и решения при работе с iostat и iotop

Совет: используйте iotop -o, чтобы выводить только активные процессы и не путаться в «пустых» строках.

Итоги

  • Установили iostat из пакета sysstat и научились читать ключевые метрики: %util, await, r/s, w/s.

  • Освоили iotop для мониторинга процессов, активно нагружающих диск.

  • Разобрали важные опции (-o, -a, -b) и их практическое применение.

  • Разобрали типичные ошибки при установке и запуске утилит.

Вывод: если нужно оценить общую нагрузку на диски — используйте iostat. Чтобы найти конкретные процессы, «съедающие» I/O, пригодится iotop. Вместе они дают полное понимание дисковой активности на VPS.

Итоги анализа дискового ввода-вывода через iostat и iotop