存储

什么是NVMe?

又称: NVM Express
定义

NVMe is a storage protocol that connects solid-state drives directly over PCIe, reaching roughly 500,000 random IOPS with sub-100-microsecond latency. Its deep parallel queue model is architecturally different from SATA, which inherits a single-queue design intended for mechanical disks.

为什么NVMe很重要

其深度并行队列模型在架构上不同于SATA,后者继承了为机械磁盘设计的单队列设计。对于基于数据库的应用程序,随机IOPS的差距是用户实际感受到的区别。

NVMe的实际应用

当你配置 NVMe 实例时,你首先会关注的是存储工作负载的队列深度。SATA 后端的服务器在高负载下最多只能达到几千 IOPS;NVMe 可以维持约 500,000 个随机 IOPS,延迟低于 100 微秒。将 sysbench 和 fio 测试改为测量 randread 和 randwrite,而不是顺序吞吐量,并观察数据库提交的差异。如果你针对 SAS 磁盘的块大小进行优化或忽略 I/O 调度器设置,你就会浪费硬件的大部分能力。如果搞错了,在处理真正触及磁盘的工作负载时,你的延迟会百倍增加。

人们对NVMe常见的误解

人们认为 NVMe 只是更快的 SSD,所以他们基于 GB 大小而不是 IOPS 来选择计划。纠正:NVMe 的差异在于并行队列模型,而不仅仅是原始带宽。巨大的 SATA 驱动器仍然会在单队列随机 I/O 上成为瓶颈;较小的 NVMe 驱动器在数据库工作负载上会击败它。大小很重要,但对于延迟敏感的工作,IOPS 是你忽视就会付出代价的指标。

NVMe —— 常见问题

NVMe 实现多少随机 IOPS?

大约 500,000 个随机 IOPS,根据已发布的定义。这大约是典型 SATA SSD 的一千倍。低于 100 微秒的延迟意味着对于小型的随机读写,你不是在等待磁盘机械部件或单个 SATA 队列——控制器和 PCIe 总线是唯一的路径。

网站需要 NVMe 吗?

只有当您的工作负载以随机I/O为主时(如数据库或缓存),才需要NVMe。静态文件分发或低流量网站无法察觉NVMe与SATA之间的差异。这种差距在持续混合工作负载下才会显现,此时SATA的单队列会饱和,延迟飙升。如果您运行Postgres或Redis,NVMe将保持您的尾部延迟较低。

NVMe在哪些地方出现

更多来自存储

IOPS
IOPS衡量存储设备每秒完成多少次单独的读或写操作。
RAID 10
RAID 10跨成对的驱动器镜像数据,并在镜像之间条带化,提供冗余和高性能,但成本是原始容量的一半。
快照
快照是虚拟机磁盘的时间点副本,即时创建并存储在同一基础设施上。