Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

I/O Wait High Linux / DevOps

Тестирование скорости диска и IOPS в Linux: утилиты fio и dd для новичков

Обновлено: 27.08.2026 · Официальная документация ↗

Почему дисковая подсистема тормозит весь сервер

Очень часто сервер имеет мощный процессор и большой объем RAM, но сайты работают медленно, а запросы к базам данных висят секундами. Причина кроется в низкой скорости операций ввода-вывода (IOPS — Input/Output Operations Per Second).

  • Высокий показатель %wa (iowait) в утилите top или htop (выше 15–20%).
  • Задержки при записи логов и транзакций баз данных.
  • Очереди дисковых операций в отчете команды iostat -x 1.

Типичные показатели производительности накопителей

Тип накопителяСлучайный IOPS (4K Read/Write)Задержка (Latency)
HDD (7200 rpm)~75 – 150 IOPS~10 – 20 мс
SATA SSD~50 000 – 90 000 IOPS~0.5 – 1 мс
NVMe SSD (PCIe 4.0)~500 000 – 1 000 000+ IOPS~0.02 – 0.05 мс

Методика измерения скорости диска с помощью fio

Устаревшая команда dd измеряет только линейную запись больших файлов. Для реального тестирования баз данных используется индустриальный стандарт — утилита fio.

  1. Шаг 1. Установка утилиты fio:
    sudo apt update && sudo apt install fio -y
  2. Шаг 2. Тест случайного чтения (Random Read IOPS — показатель для баз данных):
    fio --name=randread --ioengine=libaio --iodepth=32 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=30 --group_reporting
  3. Шаг 3. Тест случайной записи (Random Write IOPS):
    fio --name=randwrite --ioengine=libaio --iodepth=32 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=30 --group_reporting
  4. Шаг 4. Быстрый тест линейной скорости записи через dd:
    dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
    # Обязательно удалите проверочный файл:
    rm -f testfile randread* randwrite*

На что смотреть в результатах fio: Ищите строку IOPS=... и значение lat (msec/usec). Для комфортной работы СУБД MySQL/PostgreSQL случайный IOPS на запись должен составлять не менее 5 000–10 000 операций/сек.

💡 Практика специалистов: При жалобах на медленную работу 1С или интернет-магазина мы в первую очередь запускаем fio. Перенос базы данных с медленного HDD или сетевого SAN на локальный NVMe SSD дает ускорение генерации страниц в 3–10 раз без оптимизации кода.

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

Что означает параметр --direct=1 в тестах fio?

Он отключает кэширование операций операционной системой в RAM, заставляя утилиту обращаться напрямую к физическому накопителю.

Почему тест скорости на виртуальном хостинге (VPS) показывает нестабильные результаты?

На дешевых VPS физический диск делится между «соседями» по серверу (Noisy Neighbors). В моменты пиковой нагрузки чужих виртуальных машин ваш IOPS может падать.

Как в реальном времени посмотреть, какой процесс нагружает диск?

Установите утилиту iotop (sudo apt install iotop -y) и запустите sudo iotop -o. Она покажет процессы, выполняющие реальную запись/чтение.

Что такое I/O wait в выводе top?

Это процент времени, в течение которого процессор простаивает без работы, ожидая ответа от медленного диска.

Полезные материалы
Рекомендуем