接前文:《可软件定义的双机热备(HA)存储方案》
高端存储定义忆旧
在《AI 时代的高端文件存储系统:IBM、DDN、Weka 和 VAST》中我讨论了一些知名的文件存储,LLM 大模型的热度,确实促进了非结构化数据容量和性能的需求。而今天我要跟大家聊的是块存储(SAN),特别是在云计算兴起之前,多数的交易型结构化数据,比如关键数据库等大都放在上面。
在我的记忆中,传统的高端存储系统(阵列)通常认为应包含以下几方面特性:
1、性能,对于 SAN 块存储协议,交易型应用更多看重 IOPS。这个与支持的磁盘/SSD 数量以及控制器配置等有关。
2、RAS(可靠性、可用性、可服务性),一般要求可用性达到 6 个 9(99.9999%)。中低端存储,包括大多数 x86 架构的双控阵列达不到这一水平,所以传统高端存储通常不低于 4 控,老式的有些是 Scale-up/新型多为 Scale-out 横向扩展形态。IBM DS8000 系列虽为双控制器但基于 Power 小型机,算是个例外吧。
注:后来游戏规则被玩坏了,也有些双控阵列标称 6 个 9 可用性,把 2 套组成双活冗余也算进去了。
3、支持 Mainframe 大型机和 FICON 存储网络。以前应该只有 IBM、EMC Symmetrix 家族和 HDS 的高端如 VSP 能达标。但后来一方面大机越卖越少了,另外像 HPE 3PAR、国内的菊厂等也推出多控架构的高端存储,不满组这点但性能指标上也够了。
在上一篇转载文章的结尾处,我透露了一些这篇想写的东西。关于今天举例的产品,我在网上看到《HPE Alletra Storage MP B10000:适用于现代工作负载的多协议存储》内容不错,给了我一些启发。
https://www.storagereview.com...(英文好的朋友,可以点切换看原文)
上图中的 Internal Fabric 使用的是 RoCE(RDMA 以太网),后端 JBOF(Just Bundle of Flash)机箱其实也可以称为 EBOF 或者 E-JBOF——通过 NVMe-oF 协议将其中的 SSD 连接到前端控制器节点。这样每块 NVMe 盘对每个控制器都可见,就属于新型的 Shared-Everything 共享架构。
图中出示的另一点,是可以添加/更换一部分前端的控制器为不同或者较新配置的型号,不像传统 SAN 块存储阵列那样严格要求对等。谈到这里,我想先回顾下双控/多控存储系统要解决的高可用基础硬件:
技术发展:磁盘路径冗余 & 写缓存镜像技术
1.数据(磁盘/SSD)路径冗余:
在传统集中式存储架构中,RAID/纠删码或者镜像/多副本只解决了基础的数据可靠性。为了达到整个数据链路高可用,SAN 存储的前端服务器连接 FC(光纤通道)、iSCSI 这些存储网络,都支持多路径冗余。而为了应对阵列控制器单点故障,每一块硬盘/SSD 至少需要同时连接到 2 个控制器,这样才能确保 HA 故障切换。
从我进入 IT 行业以来,先后经历过支持热插拔的 80 针 SCSI 硬盘、FC-AL(光纤通道仲裁环路)硬盘、SAS HDD/SSD,以及今天的双端口 NVMe SSD。凡是可用在双控阵列中的,基本上都支持双端口访问。
下面为 HPE 3PAR(即后来的 Alletra 9000 家族)高端存储——4 控制器架构的读/写路径示意图:
注意:图中可以看到早期 3PAR 专有硬件 ASIC 在控制器互连和 Cache 管理中的作用,后来应该是用 NTB 一类的技术替代了。但是像 NTB、PCIe Switch、通过背板实现 2-Node 对 NVMe SSD 共享访问这些,仍然不属于大型云计算服务商数据中心里的标准化硬件。
上图示意的中间 2 个控制器,同时通过 SAS 线缆连接到后端的一个 JBOD 磁盘扩展柜。只要这 2 个控制器不同时坏,磁盘/SSD 中的数据就能保持访问。同理,另外 2 个控制器应该也是同时连接到一个或多个 JBOD 机箱。
读/写路径中的 “W2”,就是我接下来要说的另一个要点:
2.写缓存冗余保护
落盘的数据保证不丢了,但为了性能更高往往还要在 DRAM 中缓存一部分写 Cache(包括压缩/重删也可以用这个)。这块除了要加 BBU 电池/电容应对断电之外,还要在不同控制器之间做镜像保护。如今双控阵列的成熟方案是通过基于 PCIe 的 NTB(非透明桥接)来实现,上面 HPE 3PAR 的 Full Mesh 背板则是多控之间的 PCIe 全网状连接——理论上能把缓存镜像到多个控制器。这样在有控制器失效时,就可以换个控制器重建 DRAM 镜像以减少性能受影响的时间——提高服务质量。
如今 AMD Instinct MI300 等 GPU 的 OAM UBB 互连,看上去与当初 3PAR 存储架构图里面的控制器互连示意图蛮像的(都是点对点/全网状)。当然 Infinity Fabric/xGMI 的带宽要大多了。
除了 3PAR 高端系列的 Full Mesh 背板之外,中端 4 控的 7000 系列存储,曾经是通过点对点 PCIe Cable 来实现“全网状互连”。如下图:
下图则是当年更有代表性的高端存储系统——EMC Symmetrix VMAX,它的多控制器(引擎)间互连使用的 InfiniBand 网络,软件架构上类似于 NUMA 的全局缓存管理技术。
扩展阅读:《从 VMAX 到 PowerMax:Dell EMC 新一代 NVMe 高端阵列解析》
上图中并没有完全画出 VMAX 的后端磁盘连接。实际上每个 SAS JBOD 也是同时连接到一对控制器,比如我用红圈标出的“双控”。到后来使用 NVMe SSD 的全闪高端存储 PowerMax,是通过带有 PCIe Switch 的 JBOF 连接到控制器,保证性能但同时也不容易拓扑到太大规模。(好在控制器对够多,而且 NVMe 单盘性能够高)
对于普通双控阵列,除了 NTB 缓存镜像之外,还有下面这种写 Cache 保护方法:
上图我在《Dell EMC PowerStore 详解:NVMe+SAS 全闪存阵列,还是一体机?》中列出过。PowerStore 的控制器机箱中除了 20 个 SSD 数据盘之外,还会有 2-4 个使用 DRAM 的 NVMe 接口“内存盘”,写缓存数据写入到成对的 NVRAM 中进行 Mirror 保护。
对于今天更流行的分布式存储而言,许多时候做不到每节点都有 NVDIMM 或者 NVRAM,一方面有跨节点的数据冗余,另外就是像 Ceph 那样加上 Journal 或者 WAL 日志一类的技术来实现 Crash 恢复的一致性,以保证数据完整性。这类技术在写 I/O 路径上的开销比传统存储要高,好在全闪存流行了,加上软件层面一些新技术的应用&调优,有些 Server SAN 的性能也可以跑得挺高。
RDMA + NVMe-oF:有利于扩展的 Shared-Everying
前面写了许多铺垫,终于到了本文要谈的代表产品。
上图来自《HPE Alletra Storage MP B10000 architecture》文档,B10000 的定位应该是接替以前的 9000 系列高端块存储系统,但我却找不到像“Full Mesh Backplane”那样复杂的设计结构了。原因是,前后端要解决的那 2 个问题,都通过 RDMA 以太网来实现了。
比如 NVMe SSD,在示意图的 CPU 右侧,有一种方式是本地直连 24 个 x2 Lane PCIe Gen4 固态盘(每块盘另外 2 个 Lane 连接到另一控制器);还有一种扩展方式就是通过 2 个 100GbE 以太网口连接 NVMe-oF 的 JBOF(EBOF)扩展柜。
控制器之间的网络互连,也在之前 PCIe 的基础上加入了 RDMA 网络,至少 4 控跨机箱时用的这个。上图中 CPU 上方绿色部分,虽然没写具体速率,下文中有资料证明是 100Gb,而且与 NVMe-oF 后端 SSD 扩展使用不同的网卡。
如果 B10000 是延续 3PAR 的架构,那么橙色的 Cache(写缓存)部分,也可以靠 RDMA 网络来在控制器间镜像保护吧?后面我还会列出点关于写缓存不同的描述。
左边是 HPE Alletra Storage MP 系列双控机型的基础硬件,对应块存储机型就是无需交换机的 B101x0 系列。在 2U 双控节点机箱之外,还可以选配最多 2 个 JBOF SSD 扩展柜——最多 72 个 NVMe SSD。
注意:JBOF 里面也有 2 个连接节点(HA),其中包含 CPU 但应该用于管理处理器,SSD 的数据路径走 SmartNIC/DPU 网卡效率更高一些。
前面一张图右侧的是 2-4 控的高端型号 B102x0,当前最多支持 2 个 2U 双控节点机箱,通过 2 台 100Gb 交换机互连,并最多扩展 16 个以太网 JBOF 扩展柜,可支持到 384 个 NVMe SSD。
关于控制器的 PCIe 扩展卡/接口部分,HPE Quickspec 中的描述如下。
Notes:
− 1Slot 3 and Slot 4 can be used for host connectivity (at least one is required), and RCIP is optional; Slot 1 and Slot 2 are used for expansion
请注意这里:对于 4 控型号需要配 2 块 100GbE 双口 OCP 网卡,其中一块像双控机型那样用于 NVMe SSD 扩展柜,另一块则是 4 个控制器节点之间的通信。
不知是否有读者会问,384 块 SSD 盘,4 个控制器节点性能够吗?就像我在《一次无需调优的测试:SMT 多线程对存储服务器 IOPS 的贡献》中列出的数字,1 颗普通的 64 核 CPU,如果只处理 16 块 Gen4 SSD 的 IOPS 能跑到 1700 多万;最新一代双路 CPU 机型可以跑更高(参见:《服务器 NVMe 调优指南:4900 万 IOPS__、340GB/s 带宽 (24x SSD)》)。不过在真实应用环境中很少有这么高的需求;另外在企业级存储系统中,还有 RAID 保护等更多数据服务开销、网络等各种瓶颈,远不像服务器本地 I/O 那样简单。
注:我上面讨论的更多从实用角度出发,对于传统厂商的 FC/iSCSI/NVMe-oF 存储系统而言,多控的意义更多在于提高可靠性/可用性而非性能。至于像 SPC-1 那样的 BenchMark 跑分则是另一回事,堆更多控制器上去数字确实会好看的。
所以在这里不要简单地想象把几百块 SSD 都跑满。个人理解,达到一定数量之后,根据需要的容量来规划配置就好了。
尽管规格表中还只写到 4 控,但上面的动画却列出了 6 个控制器,按以往 3PAR 的技术水平做到 8 控应该不太难吧。并且现在走 RDMA 网络互连理论上没有硬件的节点限制,也不需要特别研发背板啥的。
在后端的 JBOF SSD 机箱中,如果是按照跨 JBOF 配置的 RAID 保护,那么即使一台 JBOF 彻底离线也不影响数据访问。这让我想起以前 VMAX 还有个跨多引擎(控制器对)来放置 RAID 的数据条带的技术,如今在 NVM-oF 以太网 Shared-Everything 架构下,实现起来变得简单许多。
通用硬件?Alletra Storage MP B1000、X10000 和 VAST
上面列出的是 VAST 文件存储的架构图,大家是否觉得在硬件架构上与 HPE Alletra Storage MP B10000 很接近?其实我在《AI 时代的高端文件存储系统:IBM、DDN、Weka 和 VAST》介绍过的 HPE GreenLake for File Storage MP 就 OEM 了 VAST 软件,还有下图中的 HPE Alletra Storage MP X10000 对象存储,好像也可以使用相同的硬件。
使用相对标准化的服务器(减少对 PCIe Switch 和 NTB 设计依赖)、业内通用 RoCE 交换机,以及 E-JBOF NVMe SSD 扩展柜这些硬件,还有一个好处,就是适合上云(包括公有云服务商的数据中心里,也不需要加专用设备)。
比如 3 年前的《NVMe-oF 存储扩展:EBOF、FBOF、EBOD 生态详解》,就是我与国内某头部互联网公司的朋友交流之后,进一步搜集资料撰写的。
像 IBM GPFS 文件系统在国内几大互联网/云服务商取得的成功,硬件支持上的灵活以及易维护性应该都是比较重要的(注:还有前北京研发中心资深经理——人称“GPFS 老父亲”的贡献)。
单纯从硬件的角度,如今的高端闪存阵列更加接近大众化的 x86 服务器,这使我又想起了“软件定义的存储”一词。而硬件性能的强大,包括多核 CPU、网卡带宽等方面发展也促成了今天的局面。
https://community.hpe.com/t5/... 在 HPE 网站上这段关于 Write path 写路径的描述,是我在本文中遗留的一个疑问:B10000 的写缓存(或者说 write buffer)究竟是放在控制器的 DRAM,还是 SSD 盘上呢?
如果有知道的朋友,欢迎在下面留言或者私信告诉我。我还有另一种猜测:如果在每块企业级 SSD 上划分一个小区域模拟 SLC 用于写 Cache,是不是也可以达到类似 VAST 另外添加一层 SLC SSD 的效果?毕竟块存储整体设计上不需要太大的 Cache 容量。
参考配置与存储系统架构选型
最后转载 storagereview 网站列出的 HPE Alletra Storage MP B10000 配置作为参考,存储控制器节点使用的 CPU 应该是 AMD 第 3 代 EPYC。
既然是通用服务器架构,那存储控制器具体选择哪个平台更合适呢?在可靠性和成熟度的基础上,核心数/处理性能、I/O 扩展能力,以及集成度都是要考虑的因素。比如像 EPYC:
- 前几代在核心数上有更高选择;
- 单 CPU 即可支持 128 Lane PCIe Gen4/Gen5 通道。上文中提到 HPE B10000 每控制器用于前端和后端/扩展接口就要提供 4 个 PCIe 槽位,再考虑到 2 控与 4 控主板设计的通用性,连接控制器机箱内 24 块 NVMe SSD 也要 48 Lane PCIe。如果 CPU 直接提供的信道不够,那就要加 PCIe Swtich 或者第 2 颗 CPU,成本等跟着上升。
- EPYC 还集成了传统意义上的南桥芯片组,有助于主板设计简化(Intel 到最新的 Xeon 6 也开始整合了 PCH)。
上图截自 AMD 文档《Seamlessly Scalable Processing Performance and I/O for Ultra-Efficient Storage from Enterprise to Cloud》
另外我查了下资料,EPYC Embedded(嵌入式)9004、7002 和 7003 系列 CPU 也具备 NTB 的支持。
END
作者:唐僧 huangliang
原文:企业存储技术
推荐阅读
- 可软件定义的双机热备(HA)存储方案
- 在 Azure MI300X GPU 虚机上运行 DeepSeek-R1
- AI 时代的高端文件存储系统:IBM、DDN、Weka 和 VAST
- 一次无需调优的测试:SMT多线程对存储服务器IOPS的贡献
欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。