NVMe (Non-Volatile Memory Express) — открытый стандарт интерфейса и протокола для твердотельных накопителей, подключаемых через шину PCIe. Разработан специально для NAND-флеш памяти и устраняет ограничения протокола AHCI, созданного под механические HDD. NVMe поддерживает до 65 535 очередей команд с 65 535 командами в каждой (AHCI — 1 очередь, 32 команды), что и обеспечивает кратный рост IOPS.
Как работает
NVMe-накопители подключаются к контроллеру PCIe напрямую через слот M.2, U.2 или AIC (Add-In Card). Протокол NVMe разработан с учётом параллелизма флеш-памяти: несколько каналов флеш-чипов обслуживаются параллельно через несколько очередей. Контроллер NVMe оптимизирован под случайные операции малыми блоками (4K random) — именно их использует большинство баз данных и файловых систем.
Поколения PCIe влияют на скорость NVMe: PCIe 3.0 ×4 — максимум ~3500 МБ/с, PCIe 4.0 ×4 — ~7000 МБ/с, PCIe 5.0 ×4 — ~14 000 МБ/с. Большинство серверных NVMe 2023–2024 года работают на PCIe 4.0. PCIe 5.0 NVMe доступны (Samsung PM9D3a, Seagate Nytro 5350H), но пока дороже.
Протокол NVMe-oF (NVMe over Fabrics) расширяет интерфейс NVMe на сетевые хранилища: по RDMA (InfiniBand, RoCE), TCP или Fibre Channel. Это позволяет строить сетевые хранилища с задержкой, близкой к локальному NVMe — 10–20 мкс против 100–200 мкс у iSCSI.
История
Работа над стандартом NVMe началась в 2007–2008 годах: рабочая группа под руководством Intel объединила 90+ компаний. NVMe 1.0 опубликован в марте 2011 года. Первые коммерческие SSD — Intel SSD 910 (PCIe, 2012) и Samsung SM951 (M.2, 2015). NVMe 1.4 (2019) добавил поддержку многопутевого ввода-вывода. NVMe 2.0 (2021) расширил поддержку зональных пространств имён (ZNS) для оптимизации под флеш-память QLC. NVMe-oF стандартизирован в 2016 году.
NVMe форм-факторы
- M.2 2280 — потребительский и серверный форм-фактор, 22×80 мм.
- U.2 (SFF-8639) — серверный форм-фактор 2,5", поддерживает горячую замену, доступен в 15 мм высоте.
- EDSFF (E1.S/E1.L/E3.S) — новый серверный стандарт для высокой плотности хранения.
- AIC (Add-In Card) — PCIe-карта для установки в слот расширения сервера.
На что обращать внимание
Для серверного применения важно различать TLC и QLC NAND: TLC (Triple-Level Cell) имеет выносливость 1000+ P/E циклов на ячейку и подходит для интенсивной записи (OLTP-базы данных). QLC (Quad-Level Cell) — дешевле, но 300–500 P/E циклов, подходит для read-heavy нагрузок (аналитика, CDN-кэш). Серверные SSD (Samsung PM9A3, Intel Optane P5800X) имеют TBW (Total Bytes Written) в сотни петабайт против 300–600 TBW у потребительских.
История NVMe
NVMe (Non-Volatile Memory Express) — протокол для твердотельных накопителей, разработанный консорциумом NVMHCI Workgroup. Спецификация NVMe 1.0 опубликована в 2011 году. Первые коммерческие NVMe-накопители появились в 2012–2013 годах (Samsung XS1715, Intel SSD DC P3600). NVMe 1.3 (2017) добавил поддержку Streams для оптимизации записи. NVMe 2.0 (2021) включил Zone Namespace (ZNS) для оптимизации под QLC NAND. Стандарт PCIe 5.0 (2021) удвоил пропускную способность до 8 ГБ/с на один x4-слот.
Применение в хостинге
NVMe кардинально ускоряет базы данных: MySQL и PostgreSQL при интенсивном OLTP получают 3–5-кратный прирост IOPS по сравнению с SATA SSD. Для серверов Redis NVMe важен при включённом RDB/AOF-персистентности. Время восстановления бэкапа с NVMe-носителя сокращается в 10–20 раз по сравнению с HDD.