SRE Docs
Vsan

磁盘组

理解 vSAN 架构 - 磁盘组

vSAN 架构概述

vSAN 架构由两层组成:用于读缓存和写缓冲的缓存层,以及用于持久存储的容量层。这种双层设计为虚拟机提供卓越的性能,同时确保数据能以最高效的方式写入设备。vSAN 使用称为磁盘组的逻辑结构来管理容量设备与其缓存层之间的关系。

DiskGroup

关于磁盘组需要理解的几点:

  • 在 vSAN 集群中贡献存储的每个主机至少包含 1 个磁盘组。
  • 磁盘组最多包含 1 个缓存设备和 1 到 7 个容量设备。
  • 一个 vSAN 主机最多可以有 5 个磁盘组,每个磁盘组最多包含 7 个容量设备,因此每个主机最多可以有 35 个容量设备。
  • 无论是混合配置还是全闪存配置,缓存设备必须是闪存设备。
  • 在混合配置中,vSAN 将缓存设备用作读缓存(70%)和写缓冲(30%)。
  • 在全闪存配置中,缓存设备的 100% 专用于写缓冲。

Cache 层

如前所述,容量层在混合和全闪存配置中的角色略有不同。在混合配置中,缓存设备既作为读缓存又作为写缓冲。这显著提高了 I/O 性能,同时允许基于低成本 SATA 或 SAS 磁盘驱动器进行扩展。在全闪存配置中,由于容量磁盘也是闪存,因此无需在闪存设备之间移动数据块。因此,vSAN 将设备的 100% 专用于写缓冲。

Read Cache

混合配置中,缓存设备的 70% 用于存储常用数据块。这减少了由较慢磁盘引起的 I/O 读取延迟。vSAN 的目标是达到 90% 的缓存命中率。缓存命中是指在读缓存中找到读取请求的数据。相应地,缓存未命中是指需要从容量层检索数据块的情况。由于容量层使用的是磁性磁盘,读取操作会产生延迟。

全闪存配置中,缓存设备的 100% 用于写缓冲。那么读取请求去哪里呢?如果请求的数据块仍然是热数据且尚未被分阶段处理,它将从缓存层读取。否则,它将从容量层读取。由于全闪存容量设备可以有效处理读取,因此不需要专用的读缓存。这为缓存设备的写缓冲提供了更多空间。

Write Cache

在混合和全闪存配置中,写缓存都充当写回缓冲区。写入操作直接从缓存层确认,无需在确认前先分阶段写入容量层。

混合配置中,缓存层的 30% 用于写缓冲。使用闪存设备与磁性磁盘相比,显著降低了写操作的延迟。

全闪存配置中,缓存设备的 100% 用于写缓冲(最大 600 GB)。无论大小如何,vSAN 仍然利用整个磁盘,将写入分散到设备上的每个数据块。这减少了闪存单元的磨损,最终延长了设备的使用寿命。

建议为缓存设备使用高规格的闪存设备。由于缓存设备是写入密集型的,等级越高,驱动器的可靠性和寿命就越长。下图显示了 vSAN 的各种耐久性等级。注意 TBW(写入的太字节数)。选择缓存设备时,TBW 越高,设备寿命越长。

tbw

请务必查看 VMware 兼容性指南 获取支持的 PCIe 闪存设备、SSD 和 NVMe 设备列表。

写入分阶段到容量层

vSAN 有多种算法来确定何时刷新写缓冲区。正如你所想象的,由于缓存层在混合和全闪存配置中的角色和设计不同,算法也有所不同。vSAN 使用自调整的邻近机制考虑多个参数(容量、邻近性、传入 I/O 速率、队列、磁盘利用率和最佳批处理)。这决定了写入多久分阶段写入到容量层。

磁盘组设计

如前所述,为 vSAN 集群提供存储的每个主机至少需要 1 个磁盘组。考虑使用多个磁盘组有几个原因。让我们使用以下示例来研究一些最常见的原因。

  • 设计 1:1 个磁盘组,含 1 个缓存设备和 6 个容量设备
  • 设计 2:2 个磁盘组,每个含 1 个缓存设备和 3 个容量设备

Design1-2

可用性

考虑上面的设计 1,如果我的缓存设备故障会发生什么?我的虚拟机会离线吗?我会丢失数据吗?完全不会。除非你将默认策略更改为 RAID0,默认存储策略是 RAID1 FTT=1,这意味着你可以容忍 1 个设备故障。当然,你的磁盘组会离线,但在单独的故障域中,这些设备上的数据有额外的副本。配置额外的磁盘组不是确保可用性的方法。所需的可用性由基于存储策略的管理(SPBM)决定。在故障设备被更换(并重建磁盘组)之前,6 个容量设备上的对象仍然离线并受影响,即使虚拟机没有中断,因为它正在使用额外的副本。

设计 2 减少了故障域,因为现在故障的缓存设备只影响相关的 3 个容量设备,而不是 6 个。它还减少了重建这些受影响对象的时间。

如果 vSAN 识别出故障磁盘,它会将其标记为"降级",并立即开始重建以使对象符合要求。我最近有几个客户认为 vSAN 在重建前等待 60 分钟。这是一个诚实的错误:如果 vSAN 将设备识别为"丢失"(例如主机重启、网络中断),它会假设中断是暂时的,并等待 60 分钟以避免不必要的重建。当磁盘故障或有错误时,vSAN 会立即重建,以确保存储策略中配置的弹性级别。

值得一提的是,vSAN 6.7 显著增强了处理后台 I/O 操作(如重建)的方式,确保应用程序在争用时接收必要的 I/O。

性能

考虑上面的相同示例,从性能角度来看,创建 2 个磁盘组(每个包含 1 个缓存设备和 3 个容量设备)也是有优势的。测试表明,将磁盘组移动到单独的存储控制器可以显著提高 vSAN 环境的性能。

深入了解 vSAN I/O

在设计 vSAN 架构时,了解 vSAN 如何处理读写操作很重要。以下是每种操作的简要概述。有关此主题和所有 vSAN 主题的详细解释,请务必阅读 vSAN 6.7 U1 Deep Dive。

70-30

读取

在混合和全闪存配置中,vSAN 都会检查请求的数据块是否仍在缓存层中保持热状态。如果是,这称为缓存命中。vSAN 对混合和全闪存配置的缓存未命中处理方式不同。

如前所述,在混合配置中,如果数据块存在,则从读缓存提供读取服务。如果发生读取未命中,vSAN 将从容量层检索数据并将其提供给请求的应用程序。vSAN 还有一个预读缓存优化,其中正在读取的数据块周围的 1 MB 数据也会被带入缓存。这里的假设是,下一次读取可能与上次读取位置相近,现在也会被缓存。

全闪存配置中,没有读缓存。如果请求的数据块在写缓冲区中,请求将从那里得到服务。如果不是,vSAN 将从容量层读取数据。由于容量层是全闪存,影响很小。通过在全闪存配置上不实现读缓存,缓存层可以处理更多写入,提高整体性能。

写入

在混合和全闪存配置中,写缓存都充当写回缓冲区。当应用程序发起写操作时,写入会根据存储策略(即容错、条带、RAID 等)发送到适当的 ESXi 主机缓存。

混合配置中,缓存层的 30% 用于写缓冲。缓冲区中的写入会直接确认给虚拟机,无需先移动到容量层。

全闪存配置中,缓存设备的 100% 用于写缓冲(最大 600 GB)。无论大小如何,vSAN 仍然利用整个磁盘,将写入分散到设备上的每个数据块。这减少了闪存设备上的闪存单元的磨损,最终延长了使用寿命。

总结

搭建 vSAN 集群相对简单,但有几个考虑因素可能因组织而异。考虑以下 vSAN 设计建议:

  • 每个主机使用多个磁盘组可以显著提高存储性能,同时限制故障域的大小;减少物理设备故障影响的数据量。
  • 故障设备将立即重建。除非有理由更改,否则对象修复计时器应保持在 60 分钟。
  • 在缓存层放置高耐久性闪存设备以处理大量 I/O。这允许容量层使用较低规格的闪存设备。
  • 为每个磁盘组使用单独的存储控制器可以显著提高 vSAN 环境的性能。
  • 查看 VMware 兼容性指南 获取支持的 PCIe 闪存设备、SSD 和 NVMe 设备列表。

On this page