MAATRIX / Блог / Что такое IOPS и почему они решают

Что такое IOPS и почему они решают

Что такое IOPS: разбор для VPS простыми словами
Блог MAATRIX · 2026-07-07

IOPS — самый важный и самый недооценённый параметр диска. Именно в него упираются базы данных и нагруженные сайты, а не в красивые гигабайты в секунду. Разберём, что это, чем отличается от линейной скорости и как измерить.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

IOPS простыми словами

IOPS (Input/Output Operations Per Second) — число операций ввода-вывода в секунду, которые диск успевает обработать. Одна операция — это одно чтение или запись небольшого блока данных. Если МБ/с отвечает на вопрос «сколько данных за секунду», то IOPS — «сколько отдельных обращений к диску за секунду».

Разница принципиальна. Скопировать один фильм на 5 ГБ — это линейная нагрузка, тут важны МБ/с. А вот база данных, отвечая на запрос, делает сотни мелких случайных чтений в разных местах диска — тут важен именно IOPS. Реальный сервер почти всегда работает во втором режиме.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS с высоким IOPS

Почему база данных упирается в IOPS

Представьте базу с миллионом строк. Пользователь запрашивает несколько записей по индексу. Диску приходится прыгать в разные физические места и читать много мелких блоков. Это классическая случайная нагрузка — здесь важно, сколько отдельных операций в секунду вытянет накопитель.

На HDD, который даёт ~150 случайных IOPS, база под нагрузкой встаёт в очередь: головке физически нужно доехать до каждого блока. На NVMe, где счёт идёт на сотни тысяч IOPS, те же запросы обслуживаются практически мгновенно. Поэтому перенос базы с HDD на NVMe часто ускоряет приложение в разы — без единой правки кода. В MAATRIX диски NVMe, и это убирает типичное узкое место баз.

Случайные и последовательные операции

IOPS всегда указывают с уточнением: случайные (random) или последовательные (sequential), чтение или запись, и с каким размером блока (обычно 4К для баз). Это не мелочь — цифры отличаются в разы.

  • Последовательное чтение — данные лежат подряд, диск читает их потоком. Максимальные МБ/с.
  • Случайное чтение 4К — обращения разбросаны по диску. Здесь виден настоящий потолок IOPS.
  • Случайная запись — самая тяжёлая нагрузка, особенно для баз с частыми апдейтами.

Когда провайдер или производитель называет «миллион IOPS», уточняйте условия. Часто это идеальный последовательный сценарий, а реальная случайная нагрузка даёт цифру скромнее.

Как измерить IOPS на своём VPS

Точный инструмент — fio. Измерим именно случайное чтение блоками 4К, как работает база. Тест создаст временный файл, поэтому запускайте его в разделе с достаточным местом:

sudo apt update && sudo apt install -y fio
fio --name=iops-test --filename=./fiotest --size=1G \
  --rw=randread --bs=4k --direct=1 --ioengine=libaio \
  --iodepth=64 --numjobs=1 --runtime=30 --time_based
rm -f ./fiotest

В выводе ищите строку read: IOPS=... — это и есть число случайных операций в секунду. Для оценки записи поменяйте --rw=randread на --rw=randwrite. На NVMe вы увидите десятки и сотни тысяч, на HDD — сотни.

IOPS, латентность и глубина очереди

У IOPS есть спутник — латентность, задержка отдельной операции. Высокий IOPS при низкой задержке — идеал. Иногда диск выдаёт большой IOPS только при огромной глубине очереди (iodepth), но каждая операция при этом ждёт долго. Для интерактивных задач важна именно низкая задержка одиночной операции.

# та же fio, но смотрим latency в выводе
# строки clat/lat показывают задержку в микро/миллисекундах
fio --name=lat --filename=./ft --size=512M --rw=randread \
  --bs=4k --direct=1 --ioengine=libaio --iodepth=1 \
  --runtime=20 --time_based
rm -f ./ft

При iodepth=1 вы видите честную задержку одной операции. У NVMe она — десятки микросекунд, у HDD — миллисекунды, то есть в сотни раз выше.

Частые ошибки

  • Смотреть только на МБ/с — реальный сервер живёт на случайных IOPS, а не на линейной скорости.
  • Не уточнять условия теста — «миллион IOPS» без указания блока и режима ничего не значит.
  • Держать базу на HDD — гарантированная очередь и тормоза под нагрузкой.
  • Игнорировать латентность — высокий IOPS при большой задержке не спасёт интерактивную задачу.

Если приложение тормозит и вы видите высокий iowait в top — почти наверняка не хватает IOPS. Переезд на NVMe (как в MAATRIX) решает это радикальнее, чем добавление ядер.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS с высоким IOPS

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Чем IOPS отличается от МБ/с?

МБ/с — объём данных в секунду при линейной нагрузке. IOPS — число отдельных операций в секунду при случайной. Серверу важнее IOPS.

Сколько IOPS нужно базе данных?

Зависит от нагрузки, но HDD с его ~150 IOPS почти всегда мало. NVMe даёт десятки-сотни тысяч, чего хватает большинству баз с запасом.

Как измерить IOPS на VPS?

Используйте fio с параметрами --rw=randread --bs=4k --direct=1. Строка read: IOPS=... в выводе покажет число случайных операций в секунду.