Как понять, какой процесс перегружает диск на сервере? Разбираем работу утилиты iotop: установка, настройка и полезные приёмы для диагностики производительности Linux-систем.
Введение
Когда на сервере начинает «проседать» производительность, первая мысль администратора — проверить загрузку процессора и памяти. Но не всегда проблема в CPU или ОЗУ: иногда узким местом становится дисковая подсистема. В продакшене или на VPS замедление работы ввода-вывода способно обрушить сайт, сорвать бекап или сделать базу данных практически недоступной. Поэтому важно уметь быстро находить процессы, которые перегружают диск.
Одним из простых и удобных инструментов для диагностики в Linux является iotop. Он работает по аналогии с привычной командой top, но показывает именно активность ввода-вывода — чтение и запись на диск в реальном времени.
Проверка возможностей ядра
Для корректной работы iotop нужно, чтобы ядро поддерживало сбор статистики по дисковым операциям. Проверить это можно так:
cat /boot/config-uname -r | egrep "TASK_IO_ACCOUNTING|TASK_DELAY_ACCT"
В выводе должны быть строки:
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
Если они присутствуют, значит подсчёт IO поддерживается.
Установка iotop
В современных дистрибутивах установка утилиты не вызывает проблем:
На CentOS, AlmaLinux или RHEL:
yum install iotop -y
На Ubuntu/Debian:
apt install iotop -y
После этого инструмент будет доступен в системе.
Запуск и использование
Для запуска используем команду:
iotop
По умолчанию вывод будет динамическим, с обновлением данных каждые несколько секунд. В таблице отображаются PID, имя процесса, а также скорость чтения и записи на диск.
Ключевые параметры:
- -o — показывать только процессы, выполняющие IO в данный момент.
- -a — выводить накопленную статистику.
- -u username — отфильтровать по конкретному пользователю.
Пример:
iotop -oa
Это позволит увидеть, кто именно и в каком объёме грузил диск за всё время.
Что делать, если iotop не работает
На старых ядрах (например, в CentOS 5.x) iotop может не собирать статистику. В этом случае:
- Обновите ядро системы.
- Используйте альтернативы — например, pidstat -d из пакета sysstat или dstat.
- Для долгосрочного мониторинга полезно внедрить collectd или Prometheus с экспортёрами метрик диска.
Заключение
Iotop — это простой, но крайне полезный инструмент, который должен быть под рукой у каждого администратора. С его помощью можно в реальном времени определить, какой процесс «съедает» дисковую производительность, и принять меры: завершить тяжёлый процесс, перенести его выполнение на другое время или оптимизировать приложение.
На практике это особенно важно для серверов баз данных и веб-приложений, где задержки чтения-записи напрямую влияют на работу пользователей. Если вы управляете корпоративными сервисами или администрируете VPS, регулярный контроль ввода-вывода поможет поддерживать стабильность и предсказуемость системы.
Не стоит забывать, что диагностика — это лишь первый шаг. Если проблемы повторяются, нужно анализировать архитектуру приложения, распределять нагрузку, настраивать кеш и файрвол, а также пересматривать стратегию бекапов. В итоге именно системный подход к мониторингу и оптимизации дисковой подсистемы позволит вам избежать простоев и сохранить доверие клиентов.
Читайте в блоге:
- Docker Compose на Ubuntu 24.04: управление многоконтейнерными приложениями
- Интеграция WordPress с Nginx и MariaDB на Ubuntu 24.04: от базы данных до SSL
- Хостинг сайта на Ubuntu 24.04 LTS: NGINX, SSL и WordPress