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
Dedicated Start US побудований на двох SATA SSD по 500 GB у RAID1 — $59 на місяць. Рівень Pro US несе два NVMe по 1 TB у RAID1 за $89. У французькій лінійці диски такі: 2×480 GB NVMe у Xeon E-2246G FR за $240, п’ять SSD по 500 GB у двопроцесорного 2× Xeon E5-2660 v4 за $340 і 2×1000 GB NVMe у EPYC 7401P FR за $420. У німецькій лінійці диски обираються при замовленні: у Dedicated Xeon E-2186G DE за $240 це 2×240 GB SSD або 2×2000 GB HDD, у Dedicated EPYC 7402P DE за $340 і EPYC 7502P DE за $430 — 2×480 GB SSD, 2×2000 GB HDD або 2×480 GB NVMe. 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 по блоковому пристрою на машині з даними.
Часті питання
Чи варто поєднувати в одному сервері NVMe і HDD, наприклад NVMe під базу, а HDD під бекапи?
Так, таке поєднання — звичайна практика: швидкий накопичувач відповідає за навантаження з дрібним випадковим записом, а механічний диск у сусідньому відсіку беруть під архів, локальні копії та медіафайли, де важлива ціна за обсяг, а не затримка відгуку. Головне — не тримати на одному фізичному диску водночас активну базу і великий архів, інакше їхні навантаження заважатимуть одне одному.
Чи дає RAID1 із двох NVMe приріст швидкості, чи лише відмовостійкість?
RAID1 передусім дає відмовостійкість: дані дзеркалюються на обидва накопичувачі, і вихід одного з ладу не зупиняє сервер. Читання іноді пришвидшується, бо контролер здатен забирати дані з обох дисків паралельно, а от запис швидшим не стає — він однаково дублюється на обидва накопичувачі водночас, і підсумкова швидкість запису обмежена повільнішим диском із пари.
Якщо SATA SSD вистачає для вебпроєкту, чи є сенс все одно брати NVMe?
Сенс з'являється там, де важлива не середня швидкість, а стійкість під піковим навантаженням: при різкому сплеску відвідувачів чи фоновому завданні на кшталт резервного копіювання паралельні черги NVMe не впираються в стелю так швидко, як єдина черга SATA. Для спокійного проєкту з рівномірним навантаженням різниця майже не відчувається, і переплата може не окупитися.
Як часто варто перевіряти ресурс запису диска, якщо характер навантаження заздалегідь невідомий?
Поки профіль навантаження не вивчений, розумно дивитися на атрибути SMART, пов'язані зі зносом, регулярно в перші тижні роботи сервера — це покаже реальну швидкість витрати ресурсу запису. Щойно динаміка стане зрозумілою і передбачуваною, частоту перевірок можна знизити і перейти на звичайний періодичний моніторинг разом з рештою показників сервера.