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 по блоковому пристрою на машині з даними.