存储接口演进 —— SATA / SAS / NVMe 与 EDSFF

存储设备的接口经历了 IDE → SATA / SAS → NVMe 三个时代。每次换接口都对应一次性能跳变。本文系统梳理这条接口演进史,重点是当前数据中心的主流:NVMe + EDSFF

一张全景图

graph LR
  subgraph 协议
    ATA[ATA / SATA] --> AHCI
    SCSI[SCSI / SAS] --> SCSI2[SCSI 协议]
    PCIe[PCIe 物理] --> NVMe
  end
  subgraph 设备
    HDD[HDD] --- ATA
    HDD --- SCSI
    SSD[SSD] --- ATA
    SSD --- SCSI
    SSD --- NVMe
  end

关键洞察

  • ATA / SCSI 是给机械盘设计的协议,到 SSD 时代力不从心
  • NVMe 是为 SSD/Flash 重新设计的协议——基于 PCIe,吞吐和并发都对得上 NAND 的真实速度

SATA:消费级和入门企业级的”老朋友”

1
2
SATA II:    3 Gbps  (~300 MB/s)
SATA III: 6 Gbps (~550 MB/s)

SATA 的物理速率上限是 6 Gbps——这个数字 2009 年定下来后再没动。原因:消费级市场规模够大、SAS/NVMe 接管了高端,SATA 没动力升速。

AHCI:SATA 的协议层

SATA 设备用 **AHCI(Advanced Host Controller Interface)**协议跟 OS 通信。AHCI 是给机械盘设计的:

  • 单一命令队列
  • 队列深度 32(NCQ)
  • 一次只能处理 1 个 IO

对 7200rpm 的 HDD 这够用。对 SSD?AHCI 是 SSD 性能的瓶颈

1
2
3
SATA SSD 实测:
顺序读:550 MB/s(接口饱和)
4K 随机:100K IOPS(远低于 NAND 真实能力)

NVMe 来打破这堵墙。

SAS:企业级机械盘和过渡 SSD

SAS = Serial Attached SCSI——把 SCSI 协议跑在串行物理链路上:

1
2
3
4
5
SAS 1:   3 Gbps
SAS 2: 6 Gbps
SAS 3: 12 Gbps ← 主流
SAS 4: 22.5 Gbps
SAS 5: 45 Gbps(标准制定中)

SAS 比 SATA 强的地方:

特性 SATA SAS
速率 6 Gbps 22.5 Gbps(SAS 4)
双端口 双(多路径)
协议 AHCI SCSI(命令丰富,T10 PI)
队列深度 32 256+
应用 桌面 / 入门 企业级 HDD、过渡 SSD

当前数据中心的 HDD 主流接口是 SAS 3(12G)/ SAS 4(22.5G)——双端口、热插拔、SCSI 协议成熟。

SAS SSD 在 2010s 是企业级 SSD 的过渡形态,当前已被 NVMe 大规模替代。仅在传统 SAN 阵列、要求双端口的存储设备中保留。

NVMe:为 SSD 重新设计的协议

NVMe = Non-Volatile Memory Express,2011 年出标准,2014-2015 起规模化。

NVMe 的核心设计

特性 AHCI/SCSI NVMe
物理层 SATA / SAS PCIe
命令队列数 1 65535
每队列深度 32 / 256 65536
总并发 ~256 ~40 亿
命令开销 高(多次寄存器读写) 低(通过共享内存交换)
延迟 ~30 μs ~5-10 μs
中断 单一中断 MSI-X 多核分发

NVMe 的设计哲学:

1
2
3
4
5
SSD 内部 → 高度并行(多 channel × 多 die × 多 plane)
那么协议也要能并发——
→ 多队列 + 大队列深度
→ 每核一个队列,无锁
→ DMA + 共享 ring buffer,命令开销最小化

NVMe 在 PCIe 上的位置

graph TB
  CPU[CPU 内的 PCIe Root Complex]
  CPU --- N1[NVMe SSD 1]
  CPU --- N2[NVMe SSD 2]
  CPU --- SW[PCIe Switch]
  SW --- N3[NVMe SSD 3]
  SW --- N4[NVMe SSD 4]
  SW --- N5[NVMe SSD 5]

NVMe SSD = PCIe 设备 + NVMe 协议。一颗 PCIe 5.0 ×4 的 NVMe SSD 物理带宽:

1
2
PCIe 5.0 ×4 = 4 × 32 GT/s × 128/130 编码 = 15.75 GB/s
实际:12-14 GB/s 可用

这是 SATA SSD 的 20-25 倍

NVMe 版本

1
2
3
4
5
NVMe 1.0 (2011):基础规范
NVMe 1.2-1.3:Namespace、Sanitize
NVMe 1.4:Persistent Memory Region
NVMe 2.0 (2021):Zoned Namespaces (ZNS)、Key-Value、命令集模块化
NVMe 2.1:Live Migration、Endurance Group

待补充:NVMe 2.x 在公有云的实际部署进度。

NVMe 物理形态:从 M.2 到 EDSFF

NVMe 协议不依赖具体形态,但接到服务器上要有物理接口。这条线发展得特别快。

M.2

1
2
22 mm 宽,长度 30/42/60/80/110 mm
M-key(PCIe ×4)/ B-key(SATA / PCIe ×2)
  • 笔记本主流,最近几年也下沉到部分服务器(启动盘、缓存)
  • 不支持热插拔
  • 散热是最大问题(小尺寸、高功耗)

U.2 / U.3(2.5″ 形态 + PCIe)

1
2
U.2:2.5″ × 15mm,PCIe ×4,SFF-8639 接口
U.3:兼容 SAS、SATA、NVMe 的统一槽,背板可灵活布
  • 数据中心服务器主流(”前面板那一排盘位”)
  • 双端口(多路径)支持
  • 热插拔
  • 容量大(最高 30 TB+)
  • 功耗高(25 W +),需要风量

EDSFF:为数据中心而生

EDSFF = Enterprise & Data Center SSD Form Factor,由 SNIA 主导的新一代 SSD 形态。规避 U.2 / M.2 几个核心问题:

  • M.2 散热不行、容量小
  • U.2 是机械盘形状,对 SSD 既浪费又不方便

EDSFF 几个变种:

形态 尺寸 接口 应用
E1.S(”Ruler short”) 118 × 31 mm PCIe ×4 1U 服务器密集部署
E1.L(”Ruler long”) 318 × 38 mm PCIe ×4 高密度容量盘
E3.S 76 × 112.75 mm PCIe ×4 / ×8 2U 服务器主流
E3.L 76 × 142.2 mm PCIe ×4 / ×8 大容量
E3.S 2T / E3.L 2T 加厚版 PCIe ×8 / ×16 CXL Memory、加速卡
graph TB
  M2[M.2
22mm
笔记本/启动] U2[U.2
2.5"
当前主流] E1S[E1.S
1U 密度首选] E3S[E3.S
2U 主流] M2 --> U2 --> E1S --> E3S E3S --> E3L[E3.L
大容量]

EDSFF 优势:

  • 散热好:薄长设计气流贯通
  • 容量大:E3.L 单盘 122 TB QLC SSD 已出(Solidigm D5-P5336 122 TB)
  • 统一:一个槽兼容 E1.S / E3.S,可放 NVMe 也可放 CXL
  • 功耗适配:E3.S 标准 25 W,E3.L 35-70 W

数据中心新部署的服务器(OCP、超大规模厂自研)已经从 U.2 切换到 E1.S(1U)/ E3.S(2U)。普通 OEM(Dell / HPE / 浪潮)跟进中。

待补充:你公司服务器选型的当前形态。

物理对照:什么样的服务器配什么盘

1
2
3
4
1U 服务器 + 高性能:     E1.S × 16-32 个槽位
2U 服务器 + 通用: E3.S × 24 个槽位 / U.2 × 24
2U 大容量存储节点: E3.L × 24 / 3.5" HDD × 12-24
机柜级 JBOF / EBOF: E3.S × 80-200(按机柜厚度)

接口规格速查表

接口 物理速率 实际可用 队列 热插拔 应用
SATA III 6 Gbps 550 MB/s 32 入门 / 桌面
SAS 3.0 12 Gbps 1.2 GB/s 256 企业 HDD
SAS 4.0 22.5 Gbps 2.2 GB/s 256 企业 HDD(少量 SSD)
PCIe 4.0 ×4 16 GT/s 7 GB/s 65k NVMe 主流(U.2)
PCIe 5.0 ×4 32 GT/s 14 GB/s 65k NVMe 高端(E3.S)
PCIe 6.0 ×4 64 GT/s 28 GB/s 65k 下一代(量产 2026+)

待补充:PCIe 6.0 NVMe SSD 上市时间和厂家。

NVMe-oF:把 SSD 解耦到网络

NVMe 还有一个网络版NVMe over Fabrics(NVMe-oF)——把 NVMe 协议跑在以太网或 InfiniBand 上,让远端 SSD”像本地一样”用:

1
2
3
NVMe over RDMA (RoCE/IB):~100 μs 远端延迟
NVMe over TCP: ~150 μs 延迟(不用 RDMA 网卡)
NVMe over FC: 传统 SAN 升级版

NVMe-oF 是数据中心存算分离的关键技术:

graph TB
  subgraph 计算节点
    C1[Server 1
无本地盘] C2[Server 2
无本地盘] C3[Server 3
无本地盘] end subgraph 存储节点 S1[NVMe-oF Target
大量 NVMe SSD] end C1 -- "NVMe-oF / RDMA" --> S1 C2 -- "NVMe-oF / RDMA" --> S1 C3 -- "NVMe-oF / RDMA" --> S1

第六章讲网卡时会再展开 RDMA 和 NVMe-oF。

一些命令实操

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 列出所有 NVMe 设备
sudo nvme list

# 查看 NVMe 控制器能力
sudo nvme id-ctrl /dev/nvme0

# 查看 namespace 信息
sudo nvme id-ns /dev/nvme0n1

# 测吞吐
fio --name=seqread --filename=/dev/nvme0n1 --rw=read \
--bs=128k --iodepth=128 --numjobs=4 --runtime=30 \
--time_based --direct=1 --group_reporting

# 测 4K 随机 IOPS
fio --name=randread --filename=/dev/nvme0n1 --rw=randread \
--bs=4k --iodepth=256 --numjobs=8 --runtime=30 \
--time_based --direct=1 --group_reporting

# 看 PCIe 链路速度
sudo lspci -vvv -s <BDF> | grep -i "LnkSta:"
# 应显示 8GT/s ×4 (PCIe 3.0) / 16GT/s ×4 (PCIe 4.0) / 32GT/s ×4 (PCIe 5.0)

接口选型速查

1
2
3
4
5
6
7
家用 / 启动盘:M.2 NVMe
入门服务器:U.2 / 2.5" SAS
通用服务器(2U 主流):E3.S(新机型)/ U.2(老机型)
1U 高密度:E1.S × 16-32
大容量存储节点:E3.L 122TB QLC 或 3.5" HDD
高性能数据库 / AI host:PCIe 5.0 E3.S × 多盘
跨机存储:NVMe-oF + EDSFF

小结

  • SATA 撞墙 6 Gbps 二十年没动,AHCI 是 SSD 的瓶颈
  • SAS 在企业 HDD 上还是主力(12G/22.5G、双端口)
  • NVMe 重设计了 SSD 协议——65535 队列、PCIe 直连、~10 μs 延迟
  • NVMe 物理形态从 M.2/U.2 演进到 EDSFF(E1.S 1U / E3.S 2U)
  • E3.L 单盘已上 122 TB(QLC),大容量替代 HDD 的临门一脚
  • NVMe-oF 是存算分离的关键,下一章网络部分再展开

下一篇讲企业级 SSD 和消费级 SSD 的本质区别——为什么数据中心不能直接用消费级。