如何将分散在多个服务器中的本地盘资源整合成集群范围可用的“共享存储资源池”,是超融合架构中的一项关键技术。在 vSAN 中,这项技术是通过“盘组(DiskGroup)”来实现的。
1.vSAN DiskGroup 架构简介
盘组内部采用两级存储架构:一层用于数据的临时缓存 / 缓冲,被称为“缓存层(Cache Tier)”,每个盘组内的缓存必须有且仅有 1 个采用闪存的高速存储设备,通常为固态硬盘 SSD;另一层用于最终存储数据,被称为“容量层(Capacity Tier)”,由 1~7 个固态硬盘或普通磁介质硬盘 HDD 组成。vSAN 允许每个主机使用 1~5 个这样的磁盘组。如图 1 所示的例子中,vSAN 超融合集群的每个主机节点内仅有 1 个盘组,该盘组由 1 块 SSD 缓存盘和 3 块 HDD 容量盘组成。
图 1 vSAN 超融合集群及主机内的盘组结构
由两级不同的存储设备构成的盘组结构,最主要的目的是将经常使用的“热数据”存放在高速 SSD 中,减少对低速 HDD 的直接访问,从而提升整个盘组的平均读 / 写速度。在 10 年之前,SSD 价格还很高的时代,通过使用相对小容量的缓存盘作为”杠杆“,在设定的盘组范围内达到存储性能提升的效果,是一种很好的技术思路。这种思路也在被 VMware 以外的其他超融合厂商使用,如深信服。
2.vSAN 盘组技术在实现中的限制
vSAN 的两级存储架构在产品化过程中存在一些要求和限制:
① 高速缓存盘的容量至少为盘组中所有低速盘总容量的 10%。
② 每个盘组中只能有 1 块缓存盘,无法突破每盘组 600GB 可用缓冲空间的限制。
③ 盘组中唯一的缓存盘存在单点故障的可能,如果它损坏了:
3.vSAN 部署方案中应对盘组技术限制的思路
以上技术实现中的限制在 vSAN 7 及以前的版本中一直存在。为了降低这些限制对 vSAN 集群部署的影响,VMware 的 vSAN 部署方案设计中给出的应对思路是:增加集群中每台主机上的盘组数量(如图 2 所示)。
图 2 vSAN 集群实施方案设计
vSAN 集群的单台主机上,最多可以允许设置 5 个盘组。因此,可以通过增加主机内部的盘组数量方法,一定程度上减轻单个缓存盘故障的影响范围,也就是“把鸡蛋放到多个篮子里”。VMware 经过测试,给出的最佳盘组设计方案是:每台主机内设置 2~3 个盘组,每个盘组内设置 3~5 个容量盘。这种设计与 vSAN 存储策略中的条带化数量设置相结合,可以把原本由单块存储盘承担的读 / 写工作,尽可能地分散到多个主机、多个盘组的多个 SSD 上来完成,实现了集群级别存储性能的最优化。
4.“最优设计方案”面临的困境
VMware 提供的最优设计解决方案却很难落实到实际项目中,主要因为这个设计思路会导致:
由于存在以上困难,大多数用户的部署中难以满足理想的 vSAN 盘组设计要求,仅仅选择以“单盘组”方式运行 vSAN。这也是为什么很多用户抱怨他们使用的 vSAN 集群的性能达不到 VMware 官方发布的标准。
5.用户对 vSAN 盘组结构的期望
对于以上技术限制,vSAN 用户一直以来希望 VMware 能够对盘组的实现方式进行改善,最主要的诉求包括但不限于:
这些改进诉求的最终目的,是降低 vSAN 集群硬件选配的复杂度以及硬件采购和维护上的成本。
1.vSAN 8 ESA 简介
2022 年 8 月底,VMware 正式发布了 vSAN 8 这个里程碑性质的版本。在 vSAN 8 中,引入了“快速存储架构(Express Storage Architecture)”,这为 vSAN 用户提供了一种可选替代架构,目标是以全新级别的效率、可扩展性和性能来处理和存储数据。ESA 不再使用“DiskGroup 盘组”的概念,而是使用“Storage Pool 存储池”,主机中所有符合要求的存储设备不再被分为不同的“组”,不再被分为“缓存层”和“容量层”。
同时,vSAN 原有的基于盘组的架构仍然保留,作为可选的 vSAN 方案之一,它现在被称为 OSA(Original Storage Architecture)。
为了简化,本文以下部分,就用 ESA 和 OSA 来指代两种技术架构。
2.ESA 实现了用户对 OSA 改进的期望吗?
先公布答案:没有。
先来看看启用 ESA 需要什么样的条件:
数据来源:Comparing the Original Storage Architecture to the vSAN 8 Express Storage Architecture
在创建新的 vSAN ESA 集群时,预检查流程将确保客户使用经过批准的硬件,检查内容包括:是否与 vLCM 配置兼容、最低物理网卡速度、主机的物理内存和磁盘类型。
也就是说,虽然 ESA 表面上符合了前文总结的用户对 vSAN 的前两条期望——精简了主机内部的存储设备层次、消除了原有缓存盘的单点故障——但需要更高的硬件配置和软件许可才能实现。这意味着,ESA 并没有满足这些用户期望背后对于“降低成本”的诉求。对于第三条期望,ESA 则完全是背道而驰,进一步严格了对主机、存储和网络组件的选型要求,提高了用户使用 ESA 的门槛。
3.ESA 的主要提升体现在哪里?
看上去 ESA 给用户带来的收益并不美丽,那么 VMware 为什么要推出这个架构呢?我们可以从 VMware 已经发布的一系列关于 vSAN 8 的材料中,得到一些 ESA 技术思路的启示。
(1)“全闪”取代“混闪”
首先,采用高速闪存的存储设备越来越普及,能够负担全闪存储价格的用户也越来越多,在大量需要高速读 / 写的应用场景中,直接通过全闪配置就可以满足性能的要求。因此,VMware 认为使用 SSD 作为 HDD 加速杠杆的做法可以不再保留。
(2)减少数据的存储量
但是,基于 TLC NVMe 的存储设备价格确实比机械硬盘高,从混闪配置到 TLC NVMe 设备,用户需要花更多的钱。怎么能降低这部分成本?或者说,怎么让用户觉得可以省钱呢?ESA 给出的思路是:推广并普及基于纠删码(Erasure Coding)的数据高可用方法和数据压缩。这两种技术可以减少原始数据在存储设备上占用的空间,从而减少昂贵的闪存盘的数量。
注:由于篇幅所限,关于采用纠删码提供数据高可用(RAID-5/6)的原理,以及与镜像副本(RAID-1)方式在存储容量需求方面的对比,本文中就不再涉及了。
(3)进一步为 RAID-5/6 提速
用户对 RAID-5/6 的普遍担心是写性能的下降。RAID-5/6 对写性能的影响主要有两点:一是使用纠删码计算校验块(Parity),需要消耗更多的 CPU 计算周期,二是写入操作会引入额外的读 / 写操作(I/O 放大)。
对于第一点,VMware 认为现在 CPU 的计算能力大大提升了,不会成为瓶颈,可以放心使用。
vSAN 8 ESA 中,先接收来自客户机的写入数据,对这些数据以 4KB 块为单位进行压缩——“数据压缩”现在也作为 ESA 中默认开启的选项,新改进的压缩算法的速度和压缩效率更高——这减少了对存储容量的需求,也减少了使用纠删码计算校验块所需的 CPU 周期。但数据压缩过程对 CPU 的消耗呢?
ESA 对 RAID-5/6 写性能方面的主要改进,是针对以上第二点。
注:为了避免陷入性能泥沼,VMware 要求只能在全闪配置的 vSAN 集群上才能启用 RAID-5/6。这种配置下,读操作可以不经过缓存盘,直接从容量盘读取,除非被读取的数据正好就是缓存盘上的写缓冲内容。vSAN 7 及以前的版本中,就是以这种方式来避免校验块计算可能引入 I/O 的放大。
vSAN 8 ESA 中引入了新的日志结构化文件系统(LFS)和优化的日志结构化对象管理器。LFS 将压缩后的数据块与元数据打包,并使用镜像(Mirroring / RAID-1)方式将这些数据 / 副本和对应的日志写入到不同主机的闪存盘上。临时存储这些数据的区域被称为“性能分支(Performance Leg)”,它不独占某个特定的闪存盘,而是分布在每个闪存盘上。这个过程,由于不需要计算校验块,写入速度会很快,客户机可以在最短时间内获得写确认,表现出整体写性能的提升。
暂时存放在“性能分支”的数据,会被整合为更大的数据块,计算校验块之后,再写入“容量分支(Capacity Leg)”。这次写入发生在后台,发起写入请求的客户机(虚拟机)早已收到了写确认,不会感受到其中的延迟。
图 3 ESA 模式下 RAID-5 写入流程简图
通过以上原理简介,我们知道 ESA 所宣传的“不需要专门的缓存盘”,不意味着不使用缓存机制,它只是把“缓存盘”改成了“性能分支”。写缓冲数据不再独占某个闪盘,而是将临时数据作为“性能分支”分散到所有闪盘上的,因此也不再受到原有 600GB 可用缓冲空间的限制。问题是,每个集群上的“性能分支”总共需要占用多少空间?VMware 目前还没有公布这方面的细节,而是在博客中用了一种很模糊的说法:“它非常小 – 刚好足以将数据传输到持久存储区域”4。
由于采用了“先镜像、后纠删码”的两级数据存储方式,VMware 发布 vSAN 8 ESA 强调的最主要亮点是:“以 RAID-1 的性能,获得 RAID-5/6 带来的存储空间节省”4。为了使用户觉得,ESA 不需要那么多硬件设备,甚至将 OSA 中 RAID-5 采用的“3 数据块 + 1 校验块”模式,“自适应”地降低为“2数据块 + 1 校验块”,从而减少了所需的最低主机数量。以下对比了 OSA 与 ESA 中,RAID-5/6 对主机数量的最低要求。
数据来源:Adaptive RAID-5 Erasure Coding with the Express Storage Architecture in vSAN 8
4.对 vSAN 8 ESA 和 OSA 的小结
至此已经可以看出:vSAN 8 ESA 并不能从根本上解决盘组结构(OSA)中被用户长期诟病的几个关键问题,而是鼓励用户使用更贵的闪盘来获取更高的性能。OSA 用户也无法直接迁移到 ESA,因为几乎所有有意向使用 ESA 的用户都要重新购买 vSAN ReadyNodesTM 服务器。
为了平衡全闪盘集群给用户带来的成本焦虑,ESA 通过:
注:这些措施可能对减少存储空间需求有帮助,但毫无疑问地增加了对于 CPU 资源的消耗。
ESA 在获得一定程度改善的同时,部分原本在 OSA 上支持的功能,还不能在 ESA 上启用。关于新版本受到的功能限制和后续更新,请参见 VMware 官方消息。
在 OSA 方面:
① vSAN 8 保留了对 OSA 的支持,原有 vSAN 用户可以升级到 vSAN 8 后继续使用 OSA 模式,不必强制改用全闪盘结构的 ESA,同一个 vCenter 可以同时管理 OSA 集群和 ESA 集群。
② vSAN 8 的 OSA 模式下,缓存盘上的可用空间从 600GB 提高到 1.6TB,但要注意:
无论如何,ESA 消除了“盘组”这一级结构,是一种自我突破。vSAN 发展过程中的技术亮点和缺陷都值得所有其他超融合存储产品不断学习和借鉴,才能提供最符合用户需求的产品。
除了 ESA,是否存在其他避免“盘组”结构复杂化的解决方案?
有的。如国内独立超融合厂商 SmartX,以自主研发的分布式块存储技术为核心,将“共享缓存”与“智能冷热数据分层”技术结合,对比“盘组结构”的限制和不足,具有以下优点:
SmartX 分布式存储可以与 vSphere 进行超融合部署,为困扰于 OSA 盘组结构限制但又无法使用 ESA 的用户,提供了一种选项。
更多 SmartX 超融合技术讲解和测试对比,请参见:
VMware 替代合集 | 技术路线、厂商评估、技术分析与对比
VMware 替代专题 | VMware 超融合国产替代之性能对比篇
VMware 替代专题 | VMware 与 SmartX 分布式存储缓存机制浅析与性能对比
VMware 替代专题 | VMware 与 SmartX 快照原理浅析与 I/O 性能对比
《不止弹性,更加灵活。一文了解 SmartX 超融合如何扩容》
参考文章:
1. Understanding vSAN memory consumption in ESXi 6.x and 7.x (2113954) | VMware KB https://kb.vmware.com/s/article/2113954
2. Adaptive RAID-5 Erasure Coding with the Express Storage Architecture in vSAN 8 | VMware https://core.vmware.com/blog/adaptive-raid-5-erasure-coding-express-storage-architecture-vsan-8
3.Comparing the Original Storage Architecture to the vSAN 8 Express Storage Architecture | VMware https://core.vmware.com/blog/comparing-original-storage-architecture-vsan-8-express-storage-architecture
4.RAID-5/6 with the Performance of RAID-1 using the vSAN Express Storage Architecture | VMware https://core.vmware.com/blog/raid-56-performance-raid-1-using-vsan-express-storage-architecture
5. An Introduction to the vSAN Express Storage Architecture | VMware https://core.vmware.com/blog/introduction-vsan-express-storage-architecture
6. Increased Write Buffer Capacity for the vSAN 8 Original Storage Architecture https://core.vmware.com/blog/increased-write-buffer-capacity-vsan-8-original-storage-architecture
7. vSAN Frequently Asked Questions (FAQ) | VMware https://core.vmware.com/resource/vsan-frequently-asked-questions-faq