存储 · 详解
服务器中的 NVMe 对比 SSD 对比 HDD 用数据说话。
NVMe 对比 SSD 对比 HDD 其实是两个问题:数据存放在哪里,以及硬盘如何与处理器通信。机械硬盘把数据保存在旋转的盘片上,并移动磁头来读取。SATA SSD 把数据保存在闪存中,但仍沿用旧的磁盘接口。NVMe SSD 则将同样的闪存接到 PCIe 通道上,并使用专为闪存设计的协议,因此它能在微秒级响应,并同时处理数千个请求。
- 数据来自规格表
- 服务器工作负载
- 核查于 2026 年 10 月
下文将介绍:NVMe 究竟是什么、每种接口的总线瓶颈、为什么随机读取对三者的区分远大于顺序速度、每种硬盘的故障方式,以及数据库、虚拟机主机或备份机分别需要哪种硬盘。
定义
NVMe 存储是什么,以及不是什么
NVMe(NVM Express)是一种协议,而不是一种存储介质。NVMe 硬盘就是 SSD:与 SATA SSD 中相同的 NAND 闪存,但连接到 PCIe 通道而非 SATA 端口,并使用专为闪存而非旋转磁盘设计的命令集。
所以“NVMe 对比 SSD”这个问题略有偏差。真正的对比是 NVMe 对比 SATA SSD:相同的介质,通往处理器的路径不同。路径决定了上限。SATA 及其驱动模型 AHCI 诞生于机械硬盘时代,那时一块磁盘一次只能处理一个请求。
SAS 介于两者之间。它是企业级磁盘接口,每通道线速是 SATA 的两倍,且为双端口,可同时连接机械硬盘和 SSD。在它们之间,我们的服务器产品线支持 NVMe、SATA 和 SAS 硬盘;下方的产品目录部分展示了哪种机型支持哪种硬盘。
- 介质旋转盘片NAND 闪存
- 接口SATASASPCIe
- 协议AHCISCSINVMe
- 外形规格3.5 英寸2.5 英寸M.2U.2E1.S
带宽
NVMe 对比 SATA SSD:总线决定上限
SATA SSD 的读取速度无法超过约 600 MB/s,因为 SATA III 的运行速率为 6 Gb/s,其中五分之一用于编码。而采用四条 PCIe 3.0 通道的 NVMe 硬盘拥有约 3.9 GB/s 的可用带宽,这就是常见的“快六倍”说法的由来。PCIe 4.0 将其翻倍,PCIe 5.0 再次翻倍。
接口上限来自 SATA、SAS 和 PCI Express 规范,已扣除线路编码开销(SATA 和 SAS-3 为 8b/10b,PCIe 为 128b/130b)。机械硬盘数据来自当前 7200 转企业级规格表,外圈磁道。实际硬盘能达到的速度略低于其总线允许值。
顺序速度在复制大文件时很重要:恢复备份、迁移虚拟机镜像、读取视频。但对于大多数服务器工作负载,这并不是造成瓶颈的指标。下一节将讨论这一点。
延迟与 IOPS
随机读取是三种硬盘拉开差距的地方
数据库、邮件服务器或一组虚拟机需要读写分散在磁盘各处的小数据块。机械硬盘的每个请求都要等待磁头移动和盘片旋转到位;而闪存无需等待任何机械动作。这就是随机读取性能差距高达数千倍而非六倍的原因。
7200 转盘片旋转半圈的时间,即正确扇区到达前的平均等待时间。加上磁头寻道时间,机械硬盘每秒只能完成几百次随机读取。
AHCI,SATA 驱动模型:一个命令队列,深度为 32 条命令。每个处理器核心都必须排队等待。
NVMe:最多 65,535 个 I/O 队列,每个队列深度可达 65,536 条命令。Linux 通常为每个核心分配独立队列,因此核心之间无需相互等待。
规格表讲述着同样的故事。当前 7200 转企业级机械硬盘标称每秒约 170 次随机 4K 读取。企业级 SATA SSD 标称接近 100,000 次。企业级 PCIe 4.0 NVMe 硬盘标称约一百万次。你自己的实际数值会更低,且取决于块大小和队列深度,因此请在你租用的机器上用 fio 进行测量,而不是轻信任何人的图表,包括我们的。
可靠性
每种硬盘是如何损耗的
机械硬盘因机械部件而失效:轴承、磁头、电机。闪存因使用而失效:每个单元能承受的写入次数有限。两者在一般情况下都不“更可靠”;它们的失效方式不同,你需要针对每种方式做不同的规划。
机械硬盘:关注机械部件
旋转的硬盘不在乎你写入了多少数据,但它确实在乎热量、振动和使用年限。SMART 计数器(例如重新分配扇区和待处理扇区)通常会在硬盘报废前发生变化。请将它们纳入你的监控。
固态硬盘:关注写入量
闪存耐久度在数据表中以 TBW(写入的总太字节数)或 DWPD(保修期内每日整盘写入次数)标注。使用
smartctl -a或nvme smart-log读取磨损程度。读密集型的 Web 服务器永远不会达到该上限;繁忙的数据库日志则可能达到。断电保护是硬盘的一项功能
用于在断电时刷新硬盘缓存的电容器,企业级固态硬盘(无论是 SATA 还是 NVMe)都会配备。它们不属于 NVMe 协议的一部分,许多消费级 NVMe 硬盘都缺少这一功能。如果你的数据库依赖同步写入,请检查你所获得硬盘的数据表。
RAID 和备份,无论使用哪种硬盘
在 Linux 上,NVMe 硬盘通常使用
mdadm或 ZFS 在软件层面做镜像,而不是放在 RAID 卡后面。当一块硬盘损坏时,镜像可以保持服务器正常运行。但这并非备份:被删除的数据表会在两块硬盘上同时被删除。
容量规划
服务器用 NVMe:哪些工作负载需要它
当工作负载涉及大量小型随机读写,或多个核心同时访问磁盘时,选择 NVMe。当数据在首次读取后主要驻留在内存中时,选择 SATA 固态硬盘。当你需要数太字节的容量并且以长时间连续读取为主时,选择机械硬盘。
| 工作负载 | 硬盘 | 原因 |
|---|---|---|
| 数据库:PostgreSQL、MySQL、MongoDB | NVMe | 小型随机读取、每次提交都要等待的预写日志,以及大量并发连接。 |
| 虚拟机主机,Proxmox 或 KVM | NVMe | 每个客户机的磁盘对主机来说都是随机 I/O,而且客户机会一起排队。 |
| 构建服务器、CI 运行器 | NVMe | 每次构建都要写入、读取和删除成千上万个小文件。 |
| Web 和应用服务器 | SATA 固态硬盘或 NVMe | 代码和热数据在首次请求后就驻留在内存中;磁盘很少成为瓶颈。 |
| 媒体库、视频点播 | SATA 固态硬盘或 机械硬盘 | 大文件从头到尾顺序读取。网络端口通常比磁盘更早成为瓶颈。 |
| 备份和归档 | 机械硬盘 | 长时间顺序写入、很少读取,以及每太字节最低的成本。 |
较大的服务器通常会混合使用:操作系统和数据库放在闪存上,海量数据放在同一机箱内的机械硬盘上。机械硬盘的每太字节成本仍然最低,这也是保留它们的主要原因。对于数据库机器,请参阅 SQL 独立服务器;对于虚拟机主机,请参阅 Proxmox 服务器。
来自产品目录的实时数据
我们的独立服务器所采用的硬盘
在我们的配置器中,3 条服务器产品线中的 18 条支持 NVMe 固态硬盘,单盘容量最高可达 3.84 TB。这些数据直接来自配置器的产品目录,并会随其更新而变动。
| 硬盘 | 接口 | 服务器产品线 | 单盘容量 |
|---|---|---|---|
| NVMe SSD | PCIe, NVMe protocol | 3 | 238 GB to 3.84 TB |
| SAS SSD | SAS | 9 | 15.3 TB to 30.72 TB |
| SATA SSD | SATA, 6 Gb/s | 15 | 32 GB to 15.36 TB |
| SAS hard drive | SAS, spinning disk | 1 | 2 TB |
| SATA hard drive | SATA, spinning disk | 7 | 500 GB to 2 TB |
支持 NVMe 的机器
每台机器都会打开其配置器,你可以在其中选择硬盘、数量和阵列。
解答
NVMe 对比 SSD 对比 HDD:常见问题
服务器值得用 NVMe 吗?
对于数据库、虚拟机主机和构建服务器来说,值得:它们依赖随机 I/O,而 NVMe 提供随机 I/O 的速度比机械硬盘快数千倍,比 SATA 固态硬盘快数倍。对于将工作集保存在内存中的 Web 服务器,SATA 固态硬盘的性能几乎相同。在围绕 NVMe 做规划之前,请确认机器支持 NVMe:并非每个机箱都有相应的插槽。
服务器用 SATA 还是 NVMe:我应该选择哪个?
如果服务器运行数据库、托管虚拟机或需要处理大量用户同时写入,请选择 NVMe。如果机器只支持 SATA 硬盘,或者工作负载较轻且以读取为主,请选择 SATA 固态硬盘。如果需要大容量(例如备份和归档),请选择 SATA 机械硬盘。
NVMe 比 SSD 更快吗?
NVMe 硬盘本身就是一种 SSD。更快的是接口:一块使用四条 PCIe 3.0 通道的 NVMe 固态硬盘带宽约为 3.9 GB/s,而 SATA 固态硬盘约为 600 MB/s,并且命令队列深度也大得多。在 PCIe 4.0 和 5.0 上,带宽每一代翻倍。
什么是 NVMe 存储服务器?
指硬盘为通过 PCIe 连接的 NVMe 固态硬盘的服务器,通常采用 U.2、E1.S 或 M.2 规格。它可以是一台在本地 NVMe 上运行数据库的单机,也可以是一台装满 NVMe 硬盘、通过网络与其他服务器共享存储的设备。
什么是 NVMe SAN,或 NVMe over Fabrics?
NVMe over Fabrics(NVMe-oF)通过 RDMA、光纤通道或普通 TCP,将 NVMe 命令集跨网络传输,而不是通过 PCIe 插槽。基于它构建的 SAN 让许多服务器能够以比 iSCSI 更低的开销使用共享闪存。我们的独立服务器将硬盘安装在机箱内部,这是延迟最低的方案,因为处理器和闪存之间没有网络。
NVMe 比机械硬盘快多少?
对于顺序读取,大约快 14 到 55 倍:一块 7200 rpm 的硬盘读取速度低于 300 MB/s,而 PCIe 3.0 到 5.0 的 NVMe 硬盘可达约 3.9 到 15.8 GB/s。对于随机 4K 读取,差距要大得多:机械硬盘每秒约 170 次,而企业级 PCIe 4.0 NVMe 数据表上的数字约为一百万次。
一台服务器可以同时使用 NVMe 和机械硬盘吗?
可以,前提是机箱同时有这两种硬盘的托架,并且控制器支持它们。常见的布局是将操作系统和数据库放在 NVMe 上,将海量数据放在机械硬盘上。并非每个机箱都能做到:小型刀片服务器通常只能容纳一两个同类型的硬盘。我们每台机器的配置器都会列出它支持的硬盘系列。