存储技术
一、SAN 存储协议体系
1.1 协议全景:先建立层次观
在逐一深入之前,需要先建立一个关键认知:这些协议并不是同一层次的东西,它们分布在存储通信栈的不同层级,彼此之间既有竞争关系也有组合关系。可以按以下维度分类理解:
| 维度 | 协议/技术 |
|---|---|
| 存储命令集(告诉存储设备”做什么”) | SCSI、NVMe |
| 本地物理接口(设备与主机直连的”路”) | SAS(SCSI的载体)、PCIe(NVMe的载体) |
| 网络传输协议(把存储命令搬到网络上) | FC/FCP、iSCSI、NVMe-oF |
| 高性能网络传输技术(绕过内核直接访问内存) | RDMA、RoCE |
理解了这个分层,后面每个协议的定位就清晰了。
1.2 SCSI
SCSI(Small Computer System Interface,小型计算机系统接口)是存储领域最古老、最核心的命令协议标准。它定义的不是某根线或某个接口,而是一套完整的指令集——告诉存储设备”读哪个块""写哪个块""查询设备状态”等。你可以把它理解为存储世界的”语言”。
1.2.1 历史演进
SCSI 最初是并行总线架构(Parallel SCSI),多个设备共享一条总线,存在严重的先天限制:
- 地址空间极小:总线最多只能挂 8 或 16 个设备
- 传输距离极短:单端模式仅 6 米,差分模式 25 米
- 无法共享链路:多个 I/O 控制器不能共享一条 SCSI 总线,存在单一故障点
- 带宽瓶颈:并行信号在高频下的串扰问题限制了速率提升
并行 SCSI 已被彻底淘汰,但它定义的命令集(CDB 命令描述块)生命力极强,至今仍在 SAS、FCP、iSCSI 中被广泛承载。
1.2.2 核心地位
SCSI 命令集是整个存储协议体系的”上层语言”。无论是后来的 SAS 直连、FC 光纤网络还是 iSCSI 以太网,本质上都是用不同的传输方式搬运 SCSI 命令。理解这一点,是理解后续所有协议的关键。
1.3 SAS
SAS(Serial Attached SCSI,串行连接 SCSI)是并行 SCSI 的串行化演进,属于本地直连接口标准。它继承了 SCSI 命令集,但彻底抛弃了并行总线架构,改用点对点串行链路。
1.3.1 核心技术特点
- 点对点架构:每个设备独享一条链路,不再有总线争用问题
- 强大的寻址能力:通过 SAS Expander(扩展器),一个域最多可寻址 65,535 个设备,远超并行 SCSI 的 16 个上限
- 双端口冗余:支持双端口连接,提供链路级容错
- 向下兼容 SATA:SAS 接口在物理层和协议层兼容 SATA 设备,SATA 硬盘可以直接插入 SAS 背板使用
- 交换式组网:支持通过 Expander 构建交换拓扑,实现灵活的存储连接
1.3.2 速率演进
| 代际 | 单链路速率 |
|---|---|
| SAS-1 | 3 Gb/s |
| SAS-2 | 6 Gb/s |
| SAS-3 | 12 Gb/s |
| SAS-4 | 24 Gb/s |
1.3.3 定位与场景
SAS 是企业级硬盘(HDD 和 SSD)的主流直连接口,主要用于服务器内部连接硬盘、磁盘阵列柜(JBOD/ enclosure)。它的连接距离短(通常数米以内),不适合远距离组网,但在机箱内和近距扩展场景中仍是主力。
1.4 FC / FCP
FC(Fibre Channel,光纤通道)是一套专为存储网络设计的高速网络协议栈,是构建 FC-SAN 的基础。它不是简单的”光纤”,而是一个完整的五层协议体系:
| 层级 | 名称 | 功能 |
|---|---|---|
| FC-0 | 物理层 | 定义传输介质(光纤/铜缆)、信号机制、接口标准 |
| FC-1 | 编码层 | 定义 8b/10b 或 64b/66b 编解码规则 |
| FC-2 | 帧协议层 | 定义帧结构、流控制、服务质量和仲裁机制 |
| FC-3 | 通用服务层 | 定义加密、压缩等通用服务 |
| FC-4 | 协议映射层 | 定义上层协议(如 SCSI)到 FC 的映射接口 |
1.4.1 FCP:FC上的SCSI
FCP(Fibre Channel Protocol)是 FC-4 层最重要的映射协议,它把 SCSI 命令封装在 FC 帧中传输。传统 FC-SAN 的核心就是 FC + FCP 的组合。
1.4.2 三种拓扑结构
- 点对点(Point-to-Point):两台设备直连
- 仲裁环(FC-AL):设备以环形拓扑连接,共享带宽
- 交换式 Fabric(最主流):通过 FC 交换机构建大规模存储网络,支持多设备并发通信
1.4.3 核心优势与代价
优势:
- 高带宽:主流速率 16Gbps / 32Gbps,Gen6 可达 128Gbps
- 极低延迟:端到端延迟可低至 2 微秒以内
- 无损传输:内建流控机制,天然保证不丢包、不乱序
- 高可靠性:专为存储设计的协议栈,成熟稳定
代价:
- 需要专用硬件:必须使用 FC HBA 卡和 FC 光纤交换机
- 成本高昂:整套基础设施(HBA、交换机、光模块、光纤线缆)价格远高于以太网方案
- 管理复杂:需要独立的存储专网,运维门槛高
1.4.4 适用场景
FC-SAN 长期是企业核心数据库、金融交易系统、大型虚拟化的首选存储网络方案,尤其在对延迟和可靠性要求极高的场景中占据主导地位。
1.5 iSCSI
iSCSI(Internet SCSI)由 Cisco 和 IBM 联合发起,核心思想是:把 SCSI 命令封装在 TCP/IP 协议中,通过普通以太网传输,从而用廉价的 IP 网络替代昂贵的 FC 专网来构建 SAN。用以太网”平替”光纤通道
1.5.1 协议封装
┌──────────────┐│ SCSI 命令 │ ← 存储命令集├──────────────┤│ iSCSI 协议 │ ← 封装层:添加 iSCSI 头├──────────────┤│ TCP │ ← 保证可靠传输├──────────────┤│ IP │ ← 路由寻址├──────────────┤│ 以太网 │ ← 物理承载└──────────────┘1.5.2 核心优势与代价
优势:
- 成本极低:复用现有以太网基础设施(网卡、交换机、网线),无需专用硬件
- 部署灵活:不受距离限制,可跨广域网传输
- 管理简单:IT 团队熟悉的 IP 网络技术即可管理
- 兼容性好:任何支持 TCP/IP 的网络都能运行
代价:
- 延迟较高:TCP/IP 协议栈开销大,每个数据包处理需消耗约 500-1000 个 CPU 周期
- CPU 占用高:大部分 iSCSI 实现依赖主机 CPU 处理协议栈,缺乏硬件卸载
- 无内建流控:TCP 本身有拥塞控制,但不像 FC 那样提供存储级别的流控保障
- 传输效率低:多层封装导致额外开销,性能受网络带宽和延迟影响明显
1.5.3 适用场景
iSCSI-SAN 适合中小型企业或中等性能需求场景。建议配合独立 VLAN 或万兆以太网使用,避免与业务流量争抢带宽。
1.6 PCIe
PCIe(Peripheral Component Interconnect Express)是计算机内部高速串行扩展总线标准,用于连接 CPU 与各种高速外设(显卡、网卡、SSD 等)。在存储领域,PCIe 的核心角色是作为 NVMe 协议的物理传输通道。
传统存储协议(SCSI/SAS/FC)最初是为机械硬盘设计的,命令队列浅、并发能力弱。而 SSD 的闪存介质可以并行处理海量 I/O 请求,需要一条”更宽、更快”的通道来释放其性能。PCIe 正是这样一条通道:
| PCIe 版本 | 单通道(x1)带宽 | x4 通道带宽 |
|---|---|---|
| PCIe 3.0 | ~1 GB/s | ~4 GB/s |
| PCIe 4.0 | ~2 GB/s | ~8 GB/s |
| PCIe 5.0 | ~4 GB/s | ~16 GB/s |
PCIe 天生是为机箱内直连设计的,不适合远距离网络传输。这催生了 NVMe over Fabrics(NVMe-oF)的需求——把 NVMe 协议”搬”到网络上,而 PCIe 本身则继续作为本地 NVMe SSD 与 CPU 之间的”最后一公里”通道。
1.7 NVMe
闪存时代的存储命令集
NVMe(Non-Volatile Memory Express)是专为闪存存储设计的新一代主机控制器接口和存储协议,通过 PCIe 总线与 CPU 直接通信,从根本上替代了为机械硬盘设计的 SCSI/AHCI 协议。
1.7.1 NVMe作用
传统 SCSI/AHCI 协议面对闪存时暴露了严重瓶颈:
| 对比维度 | AHCI(SATA) | NVMe(PCIe) |
|---|---|---|
| 命令队列数 | 1 个 | 最多 64K 个 |
| 队列深度 | 32 | 每队列 64K |
| 中断机制 | 单中断,共享 | 多核独立中断,无锁提交 |
| 寄存器访问 | 多次内存读取 | 单次内存映射 |
| 设计初衷 | 机械硬盘(毫秒级延迟) | 闪存(微秒级延迟) |
NVMe 的设计充分利用了闪存的并行特性和 PCIe 的高带宽,大幅降低延迟并提升 IOPS。
1.7.2 NVMe的核心设计
- 多队列 + 深队列:64K 个 I/O 队列,每队列 64K 深度,完美匹配多核 CPU 和多闪存芯片的并行能力
- 多核无锁提交:每个 CPU 核心拥有独立的提交队列和完成队列,避免锁竞争
- 精简命令集:去掉了 SCSI 中大量针对机械硬盘的复杂命令,命令处理更高效
- 流控制优化:减少软件层面的开销,让硬件直接处理 I/O 调度
1.7.3 NVMe 的定位
NVMe 是命令集层面的革新(对标 SCSI),PCIe 是它的本地物理载体(对标 SAS)。两者的关系正如 SCSI 之于 SAS:SCSI 定义”说什么语言”,SAS 定义”用什么线传输”;NVMe 定义”闪存时代的新语言”,PCIe 定义”本地高速通道”。
1.8 NVMe over Fabrics
把 NVMe 搬到网络上
1.8.1 NVMe-oF作用
NVMe SSD 的延迟已经做到 10 微秒级别,但如果通过 iSCSI(延迟约 100 微秒)或传统 SCSI 协议栈连接到远端存储,网络延迟会完全抵消 NVMe 的性能优势。NVMe-oF 的使命就是:将 NVMe 的低延迟、高并行语义端到端地保留到网络中,不被中间协议”打折”。
1.8.2 NVMe-oF 的三种传输方式
| 传输方式 | 底层网络 | 特点 |
|---|---|---|
| NVMe/RDMA | InfiniBand / RoCE / iWARP | 最低延迟,需 RDMA 网卡 |
| NVMe/FC(FC-NVMe) | 光纤通道 | 复用现有 FC 基础设施 |
| NVMe/TCP | 标准以太网 | 无需专用硬件,兼容性最强 |
NVMe-oF 使用 Capsule 封装格式统一屏蔽传输层差异,引入 NQN(NVMe Qualified Name)作为存储目标的全局唯一标识。
1.8.3 NVMe-oF 三大主流方案对比
| 对比维度 | NVMe over FC (FC-NVMe) | NVMe over RoCE (NVMe over RDMA) | NVMe over TCP |
|---|---|---|---|
| 网络介质与硬件 | 传统光纤通道(FC)网络,需专用FC HBA卡与FC交换机。 | 融合以太网,需支持RDMA的专用网卡(R-NIC)及支持无损网络的交换机。 | 标准以太网,使用通用网卡即可,无特殊硬件要求。 |
| 性能与延迟 | 高。相比传统FC-SCSI性能有所提升,但受限于传统传输层,略逊于RDMA。 | 极高(最优)。具备零拷贝、内核旁路特性,延迟可达微秒级,CPU占用极低。 | 中高。性能显著优于传统iSCSI,但受限于TCP/IP协议栈开销,延迟和CPU消耗高于RDMA。 |
| 部署与配置难度 | 低(利旧友好)。对已有FC SAN架构的企业最平滑,支持FC-NVMe与FC-SCSI共存。 | 高(复杂)。需配置无损网络(如PFC、ECN等流控技术)以防丢包,对网络拓扑和参数调优要求苛刻。 | 极低(简单)。基于成熟TCP/IP栈,无需改造现有网络,部署最简单,兼容性最强。 |
| 建设成本 | 高。需采购专用光纤硬件设备,且存在一定厂商锁定风险。 | 中高。硬件成本约为InfiniBand的30%-50%,但整体部署与运维技术门槛较高。 | 低。可最大程度复用现有标准以太网基础设施,TCO(总拥有成本)最低。 |
| 适用场景 | 传统企业关键业务。适合已重度投资FC SAN的金融、电信等保守型行业进行平滑升级。 | 高性能计算与AI。适合AI大模型训练、高频交易、高性能计算(HPC)等对延迟极度敏感的场景。 | 云原生与通用云存储。适合Kubernetes容器化环境、超融合架构、通用数据库后端及分布式存储。 |
| 未来趋势 | 逐渐式微但地位稳固。生态相对封闭,但在庞大的存量市场中短期内仍具不可替代性。 | 高性能领域绝对主流。随着智算中心爆发,RoCEv2正成为构建高性能存储网络的首选。 | 最具普及前景。凭借高性价比和易用性,有望全面替代传统IP SAN,成为以太网重构存储的事实标准。 |
总结建议:
- 如果您的组织已有大量FC SAN资产且业务对稳定性要求极高,NVMe over FC 是利旧升级的最佳跳板。
- 如果业务属于AI智算、高频交易,对存储延迟有极致要求且预算充足,NVMe over RoCE 是不二之选。
- 如果面向云原生、分布式架构,追求高性价比、易部署与强兼容性,NVMe over TCP 是最具潜力的主流选择。
1.9 RDMA
高性能网络的”内核旁路”技术
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种允许网络中一台主机直接读写另一台主机内存的技术,核心特性是两个”零”:
- 零拷贝(Zero Copy):数据直接在应用内存和网络之间传输,不经过内核缓冲区的拷贝
- 零内核参与(Kernel Bypass):数据路径完全绕过操作系统内核协议栈,由网卡硬件直接完成
1.9.1 RDMA的存储重要性
传统 TCP/IP 协议栈处理每个数据包需要消耗约 500-1000 个 CPU 周期,而 RDMA 仅需硬件层面的几个时钟周期即可完成一次内存读写。在 100GbE 网络下:
- RDMA 单流延迟:约 0.7 微秒
- TCP 延迟:约 15-20 微秒
- 差距:20 倍以上
这意味着 RDMA 可以将网络存储的延迟降低到接近本地 PCIe 直连的水平。
1.9.2 RDMA 的三种实现
RDMA 本身是一套编程接口标准(Verbs API),底层有三种物理实现:
| 实现方式 | 物理网络 | 延迟(100G) | 特点 |
|---|---|---|---|
| InfiniBand | IB 专用交换机/线缆 | ~0.5 μs | 原生无损,性能最强,但生态封闭、成本高 |
| RoCE v2 | 标准以太网 | ~0.7 μs | 基于 UDP/IP,支持路由,需配置无损网络 |
| iWARP | 标准以太网 | ~3-5 μs | 基于 TCP,无需无损网络,但延迟较高 |
1.9.3 RDMA 的核心操作语义
- Send/Recv:双边操作,发送端和接收端都需参与(类似传统消息传递)
- RDMA Write:单边操作,发起端直接写入远端内存,远端 CPU 完全不感知
- RDMA Read:单边操作,发起端直接读取远端内存,远端 CPU 完全不感知
- Atomic 操作:原子的 Compare&Swap、Fetch&Add 等操作
单边操作(Read/Write)是 RDMA 最强大的特性——远端 CPU 和操作系统对数据搬运完全无感知,真正实现了”零开销”。
1.10 RoCE
在以太网上实现 RDMA
RoCE(RDMA over Converged Ethernet)是在标准以太网上承载 RDMA 流量的协议,由 IBTA(InfiniBand Trade Association)于 2010 年提出。它的出现解决了 InfiniBand 生态封闭、成本高昂的问题,让企业可以在现有以太网基础设施上获得 RDMA 性能。
| 特性 | RoCE v1 | RoCE v2(主流) |
|---|---|---|
| 工作层级 | 数据链路层(L2) | 网络层(L3) |
| 封装方式 | 以太网帧直接封装(Ethertype 0x8915) | UDP/IPv4 或 UDP/IPv6 封装(UDP 端口 4791) |
| 路由能力 | 仅限同一广播域 | 支持跨子网路由 |
| 部署范围 | 单层网络 | 数据中心级组网 |
| 当前地位 | 基本淘汰 | 业界主流 |
RoCE v2 是当前分布式存储、AI 训练、高性能计算等场景的主流协议选择。
1.10.1 无损网络:RoCE 的”生命线”
RDMA 对丢包极度敏感(因为绕过了 TCP 的重传机制),因此 RoCE 网络必须配置为无损网络。这依赖以下关键机制:
- PFC(Priority-based Flow Control):基于优先级的链路级流控,当某个优先级的队列即将溢出时,向上游发送暂停帧,防止丢包
- ECN(Explicit Congestion Notification):交换机在队列拥塞时标记报文,接收端生成 CNP(拥塞通知包)反馈给发送端降速
- DCQCN 算法:发送端根据 CNP 反馈动态调整发送速率,缓解全局拥塞
- ETS(Enhanced Transmission Selection):按优先级分配带宽,隔离存储流量与普通流量
这些机制需要在主机网卡、交换机、存储设备三端统一配置,任何一个环节缺失都可能导致性能劣化。
1.10.2 RoCE 的部署要点
- 需使用支持 RDMA 的网卡(RNIC),主流厂商包括 NVIDIA(Mellanox)、Broadcom、QLogic
- RoCE 流量通常标记为 DSCP=48(CS6)和 VLAN PCP Priority 3
- 推荐 Spine-Leaf 三层 ECMP 架构,RoCE 存储网与业务 TCP 网物理隔离
- 全链路 MTU 必须一致(25GE 建议 2500,100GE 建议 5500)
1.11 对比总结
1.11.1 协议关系图谱
存储命令层: SCSI ──────────────────────→ NVMe │ │本地直连接口: SAS(串行SCSI) PCIe(高速总线) │ │网络传输层: ┌──┴──┐ ┌───┴──────────────┐ FC/FCP iSCSI NVMe/RDMA NVMe/FC NVMe/TCP (光纤) (以太网/TCP) (RDMA网络) (光纤) (以太网/TCP) │ ┌───┴───┐ RDMA 实现方式 IB RoCE iWARP1.11.2 关键指标横向对比
| 协议 | 延迟 | 带宽 | CPU 开销 | 硬件成本 | 部署复杂度 | 典型场景 |
|---|---|---|---|---|---|---|
| FC/FCP | 极低(~2μs) | 高(32-128Gbps) | 低(HBA 卸载) | 高 | 高 | 核心数据库、金融交易 |
| iSCSI | 较高(~100μs) | 中(1-100Gbps) | 高 | 低 | 低 | 中小企业、中等性能需求 |
| NVMe/PCIe(本地) | 极低(<10μs) | 极高(~16GB/s x4) | 极低 | 中 | 低 | 本地高性能 SSD |
| NVMe/RDMA(RoCE) | 极低(~2-5μs) | 极高(100-400Gbps) | 极低 | 中高 | 高 | AI 训练、全闪存阵列 |
| NVMe/TCP | 中(~10-30μs) | 高(25-100Gbps) | 中 | 低 | 低 | 云计算、超融合 |
| NVMe/FC | 极低 | 高 | 低 | 高 | 高 | FC 网络升级至 NVMe |
1.11.3 技术演进趋势
- FC-SAN → NVMe/FC:传统 FC 网络通过 FC-NVMe 升级,复用现有基础设施获得 NVMe 性能
- iSCSI → NVMe/TCP:IP-SAN 的自然演进路径,无需专用硬件
- RoCE v2 成为主流:在以太网生态上实现接近 InfiniBand 的性能,已成为新建高性能存储网络的首选
- NVMe-oF 统一存储网络:NVMe 命令集 + 多种 Fabric 传输,端到端保留闪存性能,正在成为现代数据中心的标配
总结一句话:SCSI 和 NVMe 是”说什么”(命令语言),SAS 和 PCIe 是”本地怎么说”(直连接口),FC、iSCSI、RDMA/RoCE 是”远程怎么说”(网络传输),而 NVMe-oF 则是把闪存时代的新语言高效地搬到远程网络上的完整方案。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!




























