«NVMe» в тарифе ничего не говорит о том, что реально получит ваш сайт или база данных. Разбираем, чем накопители отличаются на практике, когда это вообще имеет значение, и как парой команд fio проверить скорость диска на своём сервере, а не верить цифрам из рекламы.

В карточке тарифа диск почти всегда описан одним словом - SSD, NVMe, реже просто «быстрый диск». За этим словом может стоять локальный накопитель, воткнутый в тот же физический сервер, или сетевое хранилище, до которого VPS достаёт через ту же сеть, что и десятки соседей. Разница между NVMe и SSD настоящая, но проявляется не везде: на статическом сайте вы её не заметите, на нагруженной базе данных она решает, выдержит сервер пиковую нагрузку или ляжет. Разберём, что там реально отличается, и как парой команд fio проверить не паспортные цифры производителя, а то, что получает лично ваш сервер.

Коротко. NVMe и SSD отличаются от HDD принципиально - у механического диска есть головка, которая физически едет по пластине, и это добавляет миллисекунды на каждую операцию. NVMe отличается от SATA SSD интерфейсом и параллельностью: та же флеш-память внутри, но в разы больше IOPS и на порядок меньше задержка под случайной нагрузкой - базы данных, много мелких файлов, десятки параллельных подключений. На последовательном чтении большого файла или на лёгком сайте разница почти не видна. Слово «NVMe» в тарифе не гарантирует эти цифры лично вам: диск может быть сетевым и разделённым между клиентами. Единственный способ узнать правду про свой сервер - прогнать fio и посмотреть на реальные IOPS и задержку, а не на маркетинг.

Что отличается: IOPS, задержка, последовательная и случайная нагрузка

Диск для сервера описывают не одной «скоростью», а несколькими вещами сразу.

IOPS (input/output operations per second) - сколько операций чтения или записи диск делает за секунду; обычно это один блок фиксированного размера, например 4 килобайта, а не целый файл. Задержка (latency) - время между запросом такой операции и ответом: у HDD это единицы миллисекунд, у SSD и NVMe - микросекунды, тысячные доли миллисекунды.

Последовательная нагрузка (sequential) - это чтение или запись подряд идущих блоков, как при копировании большого файла или бэкапе. Случайная нагрузка (random) - операции в разных, не связанных местах диска: так ведёт себя база данных с тысячами мелких строк или сайт, параллельно отдающий множество мелких файлов кэша.

На механическом диске случайная нагрузка почти всегда упирается в головку, которой физически нужно доехать до нужной дорожки. На SSD и NVMe данные читаются электрически, без движущихся частей, и случайный доступ там не намного медленнее последовательного - именно здесь разница между типами накопителей заметна сильнее всего.

Когда это важно, а когда почти нет

Практический вопрос не «какой диск быстрее», а где именно вы упрётесь в его скорость. Играет роль для баз данных под активной записью (MySQL, PostgreSQL), для сайтов с массой мелких файлов (кэш-плагины WordPress, тяжёлые сборки ассетов), для очередей сообщений и любых сервисов, которые часто пишут на диск небольшими порциями - это и есть случайная нагрузка, десятки тысяч мелких операций в секунду, где механический диск или медленный SSD физически не успевают. Почти не заметна на статическом сайте, который отдаёт файлы в основном из кэша операционной системы в памяти, на бэкапе, который пишется раз в сутки одним потоком, и там, где диск вообще не узкое место - телеграм-бот скорее упрётся в CPU или лимиты API, чем в диск. Платить за NVMe там, где хватило бы SATA SSD, не ошибка, но лишняя переплата при ограниченном бюджете.

NVMe против SSD против HDD в цифрах

Цифры ниже - типичные диапазоны для самих накопителей по независимым обзорам и документации хранилищ на сентябрь 2026 года, не гарантия для конкретного VPS. Это паспортные характеристики железа - сколько выжимает голый диск в лаборатории. Что реально получит ваш сервер через гипервизор и, возможно, через сеть, покажет только fio, не эта таблица.

Тип диска

Случайный 4К IOPS (сырой накопитель)

Задержка случайного чтения

Где это реально ощущается

HDD, 7200 об/мин

~100-200

единицы-десятки миллисекунд

почти нигде на активной VPS-нагрузке, годится под архив и холодные бэкапы

SATA SSD

десятки тысяч, до ~100 000 у верхних моделей

~0,05-0,2 миллисекунды

сайты, лёгкие базы данных, средняя нагрузка

NVMe

от сотен тысяч до нескольких миллионов у топовых моделей

~0,01-0,1 миллисекунды

нагруженные базы данных, много мелких файлов, высокая параллельность запросов

Разрыв между SATA SSD и NVMe на бумаге выглядит внушительно - в разы по IOPS, на порядок по задержке, но вы упрётесь в него, только если нагрузка действительно случайная и параллельная. А вот разница между HDD и любым SSD - не «в разы», а в сотни-тысячи раз именно на случайном доступе, и это единственная строка таблицы, которую стоит принимать как данность без собственного замера.

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

fio (Flexible I/O Tester) - стандартный инструмент для тестирования дисков в Linux: он создаёт управляемую нагрузку любого паттерна и показывает точные IOPS, пропускную способность и задержку, а не просто «скопировал файл и засёк время на глаз».

Установите пакет - в базовых репозиториях Ubuntu его нет «из коробки» - и создайте отдельную папку под тестовые файлы, чтобы потом одной командой всё убрать:

sudo apt install fio -y

mkdir -p ~/fiotest && cd ~/fiotest

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

fio --name=seq-write --filename=testfile --size=1G \

--rw=write --bs=1M --direct=1 --ioengine=libaio \

--numjobs=1 --iodepth=16 --group_reporting

  • --direct=1 - ключевой флаг: запись идёт в обход дискового кэша операционной системы. Без него часть данных фактически осядет в оперативной памяти, и результат покажет скорость RAM, а не диска.
  • --bs=1M - размер блока за одну операцию, типичный для последовательного копирования файлов.
  • --iodepth=16 - сколько операций диск держит «в полёте» одновременно; с одним запросом за раз современный NVMe не разгонится до паспортных цифр, ему нужна очередь.
  • --filename - важно, чтобы файл лежал именно на том диске, который вы проверяете, а не в /tmp: на части образов это tmpfs, то есть оперативная память, и тест тогда измерит скорость RAM. Проверить точку монтирования: df -T /tmp.

fio печатает подробную статистику построчно, но по-настоящему важен только итоговый блок в самом конце. Вот реальный результат этой команды - снят на тестовом сервере во время подготовки статьи (KVM VPS, Ubuntu 24.04, 2 vCPU, обычный виртуальный диск, не выделенный NVMe):

Run status group 0 (all jobs):

WRITE: bw=839MiB/s (879MB/s), io=1024MiB, run=1221msec

Это реальные цифры одного конкретного сервера в конкретный момент, не эталон и не обещание для любого VPS - у вас на своём сервере получатся другие числа, в этом и смысл теста.

Прочитать тот же файл обратно - та же команда с --rw=read вместо --rw=write, остальные флаги без изменений.

Главный тест - случайная нагрузка вперемешку с чтением и записью, которая ближе всего к тому, как база данных отвечает на запросы от нескольких пользователей одновременно:

fio --name=rand-rw --filename=testfile --size=1G \

--rw=randrw --rwmixread=70 --bs=4k --direct=1 \

--ioengine=libaio --numjobs=4 --iodepth=32 \

--runtime=30 --time_based --group_reporting

На том же тестовом сервере итоговый блок этого теста выглядит так:

Run status group 0 (all jobs):

READ: bw=295MiB/s (310MB/s), io=8856MiB, run=30001msec

WRITE: bw=127MiB/s (133MB/s), io=3805MiB, run=30001msec

За кадром этого блока fio также посчитал iops (75,6 тысячи на чтение, 32,5 тысячи на запись) и среднюю задержку clat около 1,2 мс на чтении и 1,1 мс на записи - на четырёх параллельных потоках с глубиной очереди 32 это ровно то «единицы миллисекунд под тяжёлой параллельной нагрузкой», о которых речь в следующем разделе.

  • --rw=randrw --rwmixread=70 - 70% чтения и 30% записи вразнобой по файлу, ближе к типичной базе данных, чем чистое чтение или чистая запись.
  • --bs=4k - блок 4 килобайта, стандартный размер страницы для большинства баз данных и файловых систем, поэтому IOPS меряют именно на нём, не на мегабайтных блоках.
  • --numjobs=4 - четыре параллельных процесса одновременно бьют по диску, имитируя несколько подключений вместо одного потока запросов.
  • --runtime=30 --time_based - тест идёт ровно 30 секунд вместо остановки по достижении объёма, так результат усреднённый, а не случайно повезший.

После тестов уберите за собой - тестовый файл занимает целый гигабайт:

cd ~ && rm -rf ~/fiotest

Как читать результат: что нормально, а что тревожный знак

В итоговом блоке смотрите на три числа: bw (пропускная способность, МБ/с), iops и среднюю задержку clat (completion latency). Для случайного 4К-теста это и есть главный результат, для последовательного важнее bw.

  • Нормально: средняя задержка на SSD или NVMe держится в десятых долях миллисекунды, под тяжёлой параллельной нагрузкой - в единицах миллисекунд; IOPS в случайном тесте заметно выше, чем у HDD из таблицы выше, обычно на порядок.
  • Тревожный знак: средняя задержка на диске, заявленном как SSD или NVMe, регулярно уходит в десятки миллисекунд - это уровень механического диска, и либо диск перегружен другими клиентами, либо перед вами не то, что написано в тарифе.
  • Знак, который легко пропустить: fio кроме среднего печатает и процентили - 99-й, 99.9-й. Если среднее выглядит прилично, а 99-й процентиль в разы выше - это не общая медленная скорость, а прерывистые провалы: кто-то ещё на этом хранилище периодически забирает всю пропускную способность. Так на практике выглядит «шумный сосед», даже когда средние цифры в отчётах провайдера в порядке.

Почему «NVMe» в тарифе не гарантирует вам эти цифры

Тип накопителя в описании тарифа - это то, что физически стоит в стойке у провайдера. Он не говорит, как этот накопитель до вас доходит.

Локальный диск физически стоит в том же сервере, что и гипервизор с вашей машиной: путь до данных короткий, через шину PCIe и виртуальный драйвер. Сетевое хранилище (network-attached storage, распределённые системы вроде Ceph и аналогов) физически лежит на других серверах, а VPS обращается к нему через внутреннюю сеть провайдера. Даже с самыми быстрыми NVMe на другом конце к задержке диска добавляется задержка сети и работа программного слоя, раздающего данные множеству клиентов сразу. Два тарифа с одинаковой пометкой «NVMe» могут стоять на совершенно разной архитектуре хранения - со стороны клиента это видно только по факту замера, не по названию в карточке.

Второй фактор - переподписка (oversell): провайдер продаёт объём и скорость диска нескольким клиентам сразу, рассчитывая, что не все упрутся в максимум одновременно. Один сосед с неаккуратным скриптом резервного копирования способен на время просадить IOPS всем, кто делит с ним физический накопитель. Это нормальная экономика хостинга, а не обман, но именно из-за неё одна и та же строчка в тарифе на практике выдаёт разные цифры у разных провайдеров и даже у одного - в разное время суток.

Что проверить перед покупкой и что делать, если диск уже тормозит

Перед покупкой тарифа посмотрите, указан ли тип диска именно на той линейке и локации, которую берёте - иногда он отличается между обычными тарифами и линейками с пометкой «максимальная производительность» на одном и том же сайте. Если у тарифа есть тестовый период, потратьте часть его не только на проверку, что сайт открывается, а на реальный прогон fio - до того, как на сервере появятся ваши данные и трафик.

Если сервер уже работает и вы подозреваете диск - начните не с fio, а с малого. Колонка wa в команде vmstat 1 5 (подробно разобрана в статье про подбор CPU и RAM) показывает долю времени, когда процессор простаивает в ожидании ответа от диска - устойчиво высокое значение здесь первый повод присмотреться к хранилищу. Дальше уточните картину пакетом sysstat:

sudo apt install sysstat -y

iostat -x 1 5

Колонка %util показывает занятость диска за интервал. Задержку в актуальных версиях sysstat (проверено на Ubuntu 24.04, пакет 12.6.1) iostat -x печатает не одной общей колонкой await, а раздельно - r_await и w_await, задержка чтения и записи в миллисекундах со стороны приложения; на более старых версиях sysstat (это ближе к тому, что может стоять на Ubuntu 22.04) объединённая колонка await ещё встречается рядом с раздельными - смотрите на то, что реально выводит команда на вашем сервере, а не на конкретное имя колонки. Если оба показателя, %util и await-колонки, стабильно высокие именно тогда, когда сайт или база тормозят - есть основание запускать fio прицельно, в подтверждение диагноза, а не наугад. Делайте это в окно с наименьшим трафиком: fio сам создаёт дополнительную нагрузку и может на время замедлить работающие сервисы.

Если у сервера не KVM, а OpenVZ или похожая контейнерная виртуализация, показания диска и памяти могут быть менее однозначными по причинам из статьи KVM или OpenVZ - там же объясняется, почему на контейнерной виртуализации выше и общий риск шумного соседа, не только по диску.

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

В чём разница между NVMe и SSD на VPS?

Оба - твердотельные накопители без движущихся частей, но NVMe использует более быстрый интерфейс и обрабатывает намного больше параллельных операций одновременно. Разница проявляется на случайной нагрузке с высокой параллельностью - нагруженной базе данных, множестве мелких файлов; на лёгком сайте или последовательном чтении большого файла она на глаз незаметна.

Что такое IOPS и задержка диска простыми словами?

IOPS - количество операций чтения или записи, которые диск успевает сделать за секунду. Задержка - время ожидания ответа на одну такую операцию. Высокий IOPS и низкая задержка вместе означают, что диск быстро обрабатывает много мелких запросов одновременно - критично для баз данных и почти неважно для статического сайта.

Как проверить скорость диска на VPS через fio?

Установите пакет командой sudo apt install fio -y, прогоните последовательный тест записи и чтения с флагом --direct=1 (чтобы не мерить кэш вместо диска), а затем тест случайного чтения-записи блоками по 4 килобайта с несколькими параллельными потоками - он ближе всего имитирует реальную базу данных. Итоговые bw, iops и средняя задержка в конце вывода и есть ответ на вопрос, что реально выдаёт диск.

Нужен ли NVMe для обычного сайта или блога?

Как правило, нет. Небольшой сайт отдаёт файлы в основном из кэша операционной системы в памяти, а не с диска напрямую, и упирается в диск в последнюю очередь. NVMe становится заметен, когда на сервере активно работает база данных, много одновременных посетителей или сервис с интенсивной случайной записью.

Почему диск на VPS может работать медленнее, чем заявлено в тарифе?

Причины две: «NVMe» в описании может относиться к сетевому хранилищу, где к скорости накопителя добавляется задержка внутренней сети провайдера, и переподписка - когда несколько клиентов делят один физический накопитель, и активность соседа временно снижает доступную вам скорость. Проверить реальную картину можно только замером через fio на своём сервере, а не по названию в карточке тарифа.

Что такое сетевое хранилище и чем оно отличается от локального NVMe?

Локальный NVMe физически установлен в том же сервере, где работает ваша виртуальная машина, и путь до данных короткий. Сетевое хранилище физически лежит на других серверах провайдера, а VPS обращается к нему через внутреннюю сеть - даже на быстрых накопителях это добавляет задержку сети и зависимость от того, сколько других клиентов обращается к тому же хранилищу одновременно.

Коротко

  • NVMe и SSD - твердотельные накопители без движущихся частей; HDD - механический и на случайной нагрузке уступает им не в разы, а в сотни-тысячи раз.
  • Разница между NVMe и SATA SSD - в разы по IOPS и на порядок по задержке - видна на случайной, параллельной нагрузке: базах данных, множестве мелких файлов. На статике и последовательном чтении она почти незаметна.
  • fio - стандартный инструмент для честного замера; ключевой флаг --direct=1 обходит кэш ОС, иначе тест меряет скорость оперативной памяти, а не диска.
  • В итоговом отчёте fio смотрите на bw, iops и среднюю задержку - а для скрытых проблем ещё и на 99-й процентиль: большой разрыв со средним значением выдаёт «шумного соседа», даже если средние цифры выглядят нормально.
  • Слово «NVMe» в тарифе не говорит, локальный это диск или сетевое хранилище с накладными расходами на сеть - выяснить можно только замером на своём сервере.
  • Если сервер уже тормозит - начните с колонки wa в vmstat 1 5 и с iostat -x 1 5, и только потом переходите к прицельному тесту fio.

Что дальше

Общий порядок выбора сервера, включая диск, ядра и память, разобран в пилар-статье как выбрать VPS. Если сомневаетесь, хватает ли серверу CPU и RAM, а не только диска - смотрите статью сколько CPU и RAM нужно серверу. А про то, как тип виртуализации влияет на риск шумного соседа и предсказуемость ресурсов в целом - в статье KVM или OpenVZ.