NVMe, SATA SSD или HDD: какие диски ставить в сервер
Под базу данных и любую нагрузку с мелкой случайной записью берите NVMe: задержка около 0,1 мс против 0,5 мс у SATA SSD и 8–12 мс у механического диска. SATA SSD остаётся разумным выбором под веб-файлы и системный раздел. HDD оправдан только там, где нужен объём под архив и бэкапы, а скорость не критична.
- Случайная запись 4K: NVMe даёт сотни тысяч IOPS, SATA SSD — десятки тысяч, HDD — около 150.
- Интерфейс решает не всё: у NVMe 64 тысячи очередей против одной у SATA, и это видно под параллельной нагрузкой.
- Ресурс записи считают в DWPD: 0,3 DWPD хватает для веба, база под нагрузкой требует от 1 DWPD.
- В тарифах Pro и Enterprise ZevsHost стоят NVMe, в Start — SATA SSD; дополнительный HDD на 1 ТБ стоит $15 в месяц.
- Диски всегда берут парой и выше: одиночный накопитель означает простой при его отказе.
Чем носители отличаются физически
HDD ищет данные механически: блок головок перемещается к нужной дорожке, и пластина должна повернуться. Отсюда задержка в единицы миллисекунд и жёсткий потолок около 150 операций в секунду на случайном доступе — цифра, которая не меняется десятилетиями.
SSD читает ячейки электрически, поэтому задержка падает на два порядка. SATA SSD при этом заперт в протоколе AHCI с одной очередью команд на 32 позиции. NVMe работает по PCIe и поддерживает до 64 тысяч очередей, поэтому выигрывает не столько в линейной скорости, сколько на параллельных запросах.
Сравнение по цифрам
| Параметр | HDD 7200 | SATA SSD | NVMe |
|---|---|---|---|
| Задержка случайного чтения | 8–12 мс | около 0,5 мс | около 0,1 мс |
| Случайные операции 4K | около 150 | десятки тысяч | сотни тысяч |
| Линейное чтение | 150–250 МБ/с | 450–550 МБ/с | 2–7 ГБ/с |
| Очереди команд | 1 очередь, 32 команды | 1 очередь, 32 команды | до 64 тысяч очередей |
| Цена за терабайт | Самая низкая | Средняя | Высокая |
| Типичное применение | Архив, бэкапы, видеохранилище | Система, веб-файлы, почта | Базы, очереди, журналы, гипервизор |
Что выбрать под задачу
- MySQL или PostgreSQL под нагрузкой. Только NVMe: каждая транзакция это fsync, а он упирается в задержку носителя. Подробности — в статье про сервер под базу данных.
- Веб-сервер с кучей мелких файлов. SATA SSD справляется, если рабочий набор кешируется в памяти.
- Гипервизор с десятком ВМ. NVMe: гости генерируют перемешанный случайный поток, где HDD теряет смысл.
- Бэкапы и медиаархив. HDD: последовательная запись больших файлов, цена за терабайт решает.
- Журналы и очереди сообщений. NVMe с запасом по ресурсу записи.
Ресурс записи: DWPD и TBW
SSD изнашивается от записи. Производитель указывает TBW (общий объём записи за срок службы) или DWPD (сколько раз в день можно перезаписать весь объём диска в течение гарантийного срока).
Для веб-проекта достаточно 0,3 DWPD. База с активной записью, очередь сообщений или узел мониторинга требуют от 1 DWPD, иначе накопитель исчерпает ресурс за год-полтора. Текущий износ виден в атрибутах SMART и разбирается в статье про SMART-диагностику дисков сервера.
Как проверить диски на своём сервере
Сначала посмотрите, что физически стоит в машине, затем меряйте под нагрузкой, похожей на вашу.
# Список устройств: ROTA=1 означает механический диск
lsblk -d -o NAME,ROTA,SIZE,MODEL
# Для NVMe: модель, прошивка, объём
nvme list
# Износ и здоровье накопителя
smartctl -a /dev/nvme0n1 | grep -E 'Percentage Used|Data Units Written|Media'
# Случайная запись 4K с глубиной очереди 32 - профиль базы данных
fio --name=db --rw=randwrite --bs=4k --iodepth=32 --numjobs=4 \
--size=4G --runtime=120 --time_based --direct=1 \
--filename=/var/tmp/fio.tst > /root/fio-randwrite.log 2>&1
Смотрите не только IOPS, но и задержку в перцентилях: p99 важнее среднего, потому что именно долгие операции формируют видимые пользователю тормоза. Полная методика замера — в материале про бенчмарк выделенного сервера.
Никогда не указывайте --filename=/dev/sda или /dev/nvme0n1 на рабочей машине. fio пишет напрямую в блочное устройство и уничтожает таблицу разделов вместе с файловой системой. Восстановить это можно только из бэкапа, и деградировавший RAID тут не поможет: зеркало добросовестно скопирует разрушение на второй диск.
Тестируйте по файлу внутри смонтированной файловой системы, как в примере выше, и удаляйте его после замера. Перед запуском проверьте путь командой lsblk и убедитесь, что в --filename стоит обычный файл, а не устройство.
Диски в конфигурациях ZevsHost
Тарифы Start построены на двух SATA SSD по 500 GB в RAID1: $49 в месяц в Германии, $55 во Франции, $59 в США. Уровень Pro несёт два NVMe по 1 TB в RAID1 — $99, $95 и $89 соответственно. Dedicated Enterprise US за $149 собран на четырёх NVMe по 1 TB в RAID10, что даёт и избыточность, и удвоенную полосу.
Дополнительный HDD на 1 ТБ подключается за $15 в месяц и логично использовать его под локальные копии и медиа, а не под базу. Хранение резервных копий вне сервера стоит $10 в месяц. Выбор уровня массива разобран отдельно: RAID 0, 1, 5 и 10. Актуальные конфигурации — на странице аренды выделенных серверов.
Коротко
- Случайная нагрузка требует NVMe: разница с SATA SSD измеряется разами, с HDD — порядками.
- HDD остаётся оправданным под архивы и бэкапы, где важна цена за терабайт.
- Планируйте ресурс записи: от 1 DWPD под базу, 0,3 DWPD хватает вебу.
- Меряйте задержку в перцентилях, а не только средние IOPS.
- Никогда не запускайте fio по блочному устройству на машине с данными.