Скорость диска: полка и всплеск
Как считается ограничение скорости диска по ступеням, зачем нужен всплеск на 30 секунд, как измерить реальную скорость и что делать, если вы в неё упёрлись.
Обновлено 23 августа 2026 г.
Диск на VDS — NVMe, но скорость ограничена по ступени, чтобы одна машина не выедала общий ресурс узла. Понимание этих чисел избавляет от вопроса «почему база тормозит, хотя процессор свободен».
Как считается
Полка по записи — 60 МБ/с на ядро, но не ниже 60 и не выше 400 МБ/с. Чтение вдвое выше полки записи. Сверх полки доступен всплеск втрое выше её значения, длительностью 30 секунд.
| Ступень | Ядра | Запись, полка | Чтение, полка | Всплеск записи (30 с) |
|---|---|---|---|---|
| VDS-1 | 1 | 60 МБ/с | 120 МБ/с | 180 МБ/с |
| VDS-2 | 2 | 120 МБ/с | 240 МБ/с | 360 МБ/с |
| VDS-3 | 4 | 240 МБ/с | 480 МБ/с | 720 МБ/с |
| VDS-4 | 6 | 360 МБ/с | 720 МБ/с | 1080 МБ/с |
| VDS-5 | 8 | 400 МБ/с | 800 МБ/с | 1200 МБ/с |
| VDS-6 | 10 | 400 МБ/с | 800 МБ/с | 1200 МБ/с |
Всплеск закрывает то, что и должен: старт приложения, распаковку архива, накат миграции. Ровный поток на запись — копирование гигабайтов, сборка, перебор большой базы — идёт по полке.
Как измерить
sudo apt install -y fio
fio --name=w --rw=write --bs=1M --size=2G --numjobs=1 \
--runtime=60 --time_based --end_fsync=1 --directory=/var/tmp
Первые секунды покажут всплеск, дальше скорость сядет на полку — это нормальная и ожидаемая картина, а не неисправность.
Быстрая грубая проверка без установки пакетов:
dd if=/dev/zero of=/var/tmp/testfile bs=1M count=2048 oflag=direct
rm /var/tmp/testfile
Не гоняйте тесты диска на боевой машине в рабочее время. Тест честно займёт всю доступную полосу, и ваш сайт в эти минуты будет отвечать секундами. И не оставляйте тестовые файлы: два гигабайта на диске 40 ГБ — заметная доля, см. место на диске.
Как понять, что упёрлись именно в диск
sudo apt install -y sysstat
iostat -x 2 5
vmstat 2 5
Смотрите два показателя: %util близко к 100 и await в десятках миллисекунд означают очередь к диску. В vmstat признак тот же — растущий столбец b (процессы в ожидании) при низком проценте занятости процессора.
Ещё один симптом: высокий load average при почти простаивающем процессоре. Нагрузка в Linux считает и процессы, ждущие диск.
Кто именно пишет:
sudo iotop -o -b -n 3
Что делать, если упёрлись
- Разнести по времени. Копии, сборка реестра, отчёты — на ночь и не одновременно. См. задания по расписанию.
- Ограничить фоновые задачи.
rsync --bwlimit,nice -n 19 ionice -c3 <команда>для всего, что не срочно. - Уменьшить запись. Ограничить размер журналов, отключить излишнюю подробность в приложении, вынести кеш в память (
tmpfs), если он переживёт перезагрузку. - Настроить базу. У PostgreSQL и MySQL львиная доля записи — журнал транзакций. Больше памяти под буферы — меньше обращений к диску.
- Перейти на ступень выше. Полка растёт вместе с ядрами: с VDS-1 на VDS-2 — вдвое. Улучшение тарифа возможно только вверх, с доплатой за оставшиеся дни оплаченного срока.
Частые ошибки
- Меряют скорость через
ddбезoflag=direct. Данные оседают в кеше страницы, и цифры получаются фантастические. - Считают всплеск постоянной скоростью. Первые 30 секунд быстро, потом полка — это заложенное поведение.
- Держат подкачку на активном диске и уходят в неё. Своп при нехватке памяти превращает диск в узкое место: лучше ограничить контейнеры, см. ограничения ресурсов.