Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
DISK_IO_BOTTLENECK Linux / DevOps

Диагностика производительности дисков в Linux: iostat, iotop, blktrace, fio

Обновлено: 21.08.2026
  • Аномально высокое значение %iowait в выводе top/htop.
  • Задержки ответов баз данных (MySQL, PostgreSQL) при чтении/записи.
  • Рост очереди запросов к дискам (aqu-sz) и времени отклика диска (await).

1. Анализ общей утилизации дисков через iostat

# Установка пакета sysstat
apt-get install -y sysstat || dnf install -y sysstat

# Мониторинг накопителей с интервалом в 1 секунду
iostat -xz 1 10

Ключевые метрики: r_await / w_await (>15-20 мс для SSD/NVMe критично), %util (насыщение контроллера), aqu-sz (длина очереди).

2. Поиск процессов, создающих дисковую нагрузку через iotop

# Режим отслеживания только активных процессов с выводом накопленного I/O
iotop -o -P -a

3. Бенчмарк производительности накопителя через fio

Тест случайного чтения/записи блоками 4k с симуляцией реальной нагрузки БД:

fio --name=randrw_test \
    --filename=/tmp/fio_testfile \
    --size=2G \
    --readwrite=randrw \
    --rwmixread=75 \
    --bs=4k \
    --ioengine=libaio \
    --iodepth=64 \
    --direct=1 \
    --runtime=60 \
    --time_based \
    --group_reporting

4. Глубокая трассировка очередей блочного уровня с помощью blktrace

blktrace -d /dev/sda -o - | blkparse -i -
Практический опыт инженера: Если iotop показывает высокий I/O у процесса jbd2/sda-8, проблема кроется в журнале файловой системы ext4 при частых вызовах fsync(). Временное решение для логов или некритичных данных — опция монтирования data=writeback,noatime.

Частые вопросы (FAQ)

Почему показатель %util может показывать 100%, но диск не тормозит?

Для современных NVMe SSD и аппаратных RAID-массивов с параллельными очередями (Multi-Queue) показатель %util отражает лишь наличие хотя бы одного запроса в обработке. Ориентируйтесь на задержку (await) и IOPS, а не на %util.

Зачем в fio указывать флаг --direct=1?

Флаг direct=1 отключает кэширование страниц операционной системы (Page Cache), направляя операции ввода-вывода напрямую на контроллер диска для измерения честной аппаратной производительности.