NVMe против SSD и HDD: как диск влияет на скорость сайта и как это измерить

В описании тарифов диск обычно упоминают одной строкой — «NVMe» или «SSD», — и мимо неё легко пройти, глядя на количество ядер. На практике именно диск чаще всего определяет, как быстро открывается админка, за сколько отрабатывает выгрузка каталога и переживёт ли сайт наплыв посетителей.
Разберём, чем эти типы дисков отличаются на самом деле, где разница видна невооружённым глазом, а где ею можно пренебречь — и как измерить скорость диска на своём сервере несколькими командами.
Три типа дисков за три абзаца
HDD — механический диск с вращающимися пластинами и подвижной головкой. Чтобы прочитать данные, головке нужно физически доехать до нужного места: на это уходят миллисекунды. Для последовательного чтения больших файлов он до сих пор годится и стоит дёшево, но на множестве мелких обращений — а это ровно то, чем занимается база данных — он безнадёжно проигрывает.
SSD — микросхемы памяти без движущихся частей, подключённые по интерфейсу SATA. Задержка падает примерно в сто раз, но сам интерфейс упирается в потолок около 550 МБ/с — он проектировался ещё под механические диски.
NVMe — те же микросхемы, но подключённые напрямую к шине PCI Express, минуя устаревший интерфейс. Отсюда и скорость в несколько гигабайт в секунду, и главное — способность обрабатывать десятки тысяч параллельных запросов вместо одной очереди.
Цифры, которые имеют значение
Сравнивать диски по гигабайтам в секунду — самая частая ошибка. Для сайта важнее две другие характеристики: IOPS (сколько мелких операций в секунду диск успевает выполнить) и задержка отклика.
Ориентировочно: HDD выдаёт 100–200 IOPS при задержке в единицы миллисекунд; SATA SSD — порядка 50–90 тысяч IOPS при задержке около 0,1 мс; NVMe — сотни тысяч IOPS при задержке в десятки микросекунд. Разница между HDD и SSD измеряется сотнями раз, между SSD и NVMe — в среднем от трёх до десяти раз.
Перевести это на язык сайта просто: страница интернет-магазина с фильтрами делает десятки запросов к базе, и каждый из них ждёт диск. Когда очередь запросов растёт, разница в задержке умножается на их количество — так «сайт слегка подтормаживает» превращается в «страница грузится шесть секунд».
Где разница видна, а где нет
Заметно сильнее всего: работа базы данных, админка WordPress и Битрикса, распаковка и установка пакетов, сборка проектов, импорт и выгрузка каталогов, восстановление из резервной копии, запуск контейнеров Docker.
Почти незаметно: раздача статичных страниц и картинок (их всё равно кеширует память и браузер), VPN-туннель, простой Telegram-бот, отдача видео — там узкое место в сети, а не в диске.
То есть для VPN или бота переплачивать за самый быстрый диск смысла нет. А вот для сайта с базой данных это первое, на что стоит смотреть после объёма памяти.
Все наши тарифы — на NVMe. Сервер готов примерно через минуту после оплаты.
Создать серверКак измерить скорость диска на своём сервере
Проверить, что вам действительно досталось, можно за пять минут. Если сервера ещё нет: в панели NodexGo нажмите «Создать сервер», выберите локацию (рядом с каждой показан ваш реальный пинг), тариф, образ Ubuntu 24.04 и период оплаты — 1, 3, 6 или 12 месяцев. IP-адрес и пароль root придут в панель и на почту, после чего подключаемся:
ssh root@IP-адрес-сервераСтавим инструмент для честного замера. Утилита fio умеет нагружать диск ровно так, как это делает база данных, — мелкими случайными операциями:
apt update && apt install -y fioПервый тест — последовательное чтение, та самая цифра «гигабайты в секунду» из рекламы:
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --runtime=30 --time_based --group_reporting --filename=/root/fiotestВторой тест — то, что действительно происходит на боевом сервере: случайные операции блоками по 4 КБ в 16 потоков. Именно эта цифра отвечает за скорость сайта:
fio --name=randrw --rw=randrw --rwmixread=70 --bs=4k --iodepth=16 --size=1G --numjobs=4 --runtime=30 --time_based --group_reporting --filename=/root/fiotestВ выводе смотрите на строку IOPS и на задержку lat (avg). Для NVMe нормальны десятки тысяч IOPS и задержка в сотни микросекунд. Если видите сотни IOPS и миллисекунды — под вами механический диск или сильно перегруженное хранилище.
После теста уберите за собой файл, он занимает гигабайт:
rm -f /root/fiotestКак понять, что тормозит именно диск
На работающем сервере проще всего посмотреть на нагрузку по устройству. Ставим набор утилит и запускаем наблюдение:
apt install -y sysstat
iostat -x 5 3Ключевая колонка — %util. Значения около 100% означают, что диск занят постоянно и стал узким местом. Соседняя колонка await показывает среднее время ожидания операции: для NVMe это доли миллисекунды.
Ещё один надёжный признак — процессы, которые висят в состоянии ожидания ввода-вывода. Проверить их можно так:
top -bn1 | head -3В строке %Cpu смотрите на значение wa (iowait): устойчивые 20–30% означают, что процессор простаивает в ожидании диска.
Как выжать из NVMe максимум
Быстрый диск легко испортить неверными настройками. Первое: файловая система ext4 по умолчанию записывает время последнего доступа к каждому файлу — это лишние записи на ровном месте. Отключается одним параметром в /etc/fstab:
nano /etc/fstab/dev/vda1 / ext4 defaults,noatime 0 1Второе: база данных должна знать, что под ней быстрый диск. Для MySQL и MariaDB имеет смысл поднять лимит операций ввода-вывода — стандартное значение рассчитано на механику:
nano /etc/mysql/mysql.conf.d/mysqld.cnf[mysqld]
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_flush_neighbors = 0systemctl restart mysqlТретье: следите за свободным местом. Заполненный на 95% накопитель теряет в скорости и способен уронить базу данных — проверяйте регулярно:
df -hЧто важнее диска
Честный порядок приоритетов при выборе сервера выглядит так: сначала памяти должно хватать (её нехватка убивает процессы и обнуляет любую скорость диска), затем нужен быстрый диск, и только потом — дополнительные ядра. Процессор в веб-проектах упирается в потолок реже всего.
И помните: самый быстрый диск не спасёт сайт без кеширования и с тяжёлыми запросами к базе. Оптимизация обычно даёт больший прирост, чем смена железа, — но начинать с заведомо медленного диска всё равно не стоит, потому что упрётесь вы в него очень быстро.
Коротко
HDD сегодня годится только под хранение архивов и резервных копий. SATA SSD — рабочий вариант для сайта без большой базы. NVMe — то, что нужно магазину, панели администрирования, базе данных и контейнерам: разница ощущается в первый же день работы в админке.
Проверить свой сервер можно командами fio и iostat из этой статьи. Если окажется, что упираетесь не в диск, а в память, в карточке сервера в панели есть кнопка «Увеличить мощности»: тариф меняется на старший, диск и IP-адрес сохраняются, переустанавливать ничего не нужно.
NVMe на всех тарифах — от 1 vCPU / 2 ГБ до 16 vCPU / 32 ГБ.
Посмотреть тарифы