【摘要】
笔者根据自身在客户处规划VMware SDDC解决方案,尤其是VSAN的设计,提炼出设计的注意事项与最佳实践。
涉及关键字:SDDC、VMware VSAN、软件定义存储等。
【正文】
一 VSAN基本概念
随着企业数据中心从传统架构朝SDDC(Software Defined Data Center软件定义的数据中心)架构转变,各类的传统厂商和开源平台都涌现出了很多的分布式存储技术,分布式存储中如VSAN、GFS、Ceph等技术都不断在传统企业和互联网企业落地。笔者借着个人的一些项目经验,本文重点讲述VSAN的概念和相关设计建议。
VMware Virtual SAN 使用软件定义的方法为虚拟机创建共享存储。Virtual SAN 可以虚拟化 ESXi 主机的本地物理存储资源,并将这些资源转化为存储池,然后可根据虚拟机和应用程序的服务质量要求划分这些存储池并分配给这些虚拟机和应用程序。Virtual SAN 直接在 ESXi 管理程序中实现。
概念图示如下:
同时在VSAN的概念中,有如下技术概念较为重要:
磁盘组:是为 Virtual SAN 群集提供性能和容量的主机和物理设备组上的物理存储容量单元,在为 Virtual SAN 群集提供本地设备的每个 ESXi 主机上,设备按磁盘组形式进行组织。
所用容量:指一个或多个虚拟机随时使用的物理容量。所用容量由多种因素决定,包括已使用的 VMDK 大小、保护副本等。计算缓存大小时,不考虑用于保护副本的容量。
VSAN策略:包括每个对象的磁盘带数、Flash Read Cache 预留、允许的故障数、强制置备、对象空间预留、禁用对象校验和、容错方法、对象的 IOPS 限制等。其中最为重要的是允许的故障数:定义虚拟机对象允许的主机和设备故障的数量。如果允许n个故障,写入的每条数据存储在 n+1 个位置,如果使用 RAID 5 或 RAID 6,还包括奇偶校验副本。
二 VSAN配置要求
VSAN的架构帮助企业节省了物理集中存储的成本,但同时也需要付出额外的硬件和软件支出,且在前提条件上有如下的要求:
1. 服务器的本地存储设备要求;
Virtual SAN 配置中的所有容量设备、驱动程序和固件版本都必须通过认证,并列在VMware 兼容性指南的“Virtual SAN”部分。特别注意对controller的挑选,queue Depth,内置caching等特性要注意屏蔽。
需要企业级SSD和HDD。
2. 网络要求;
至少1gb且专用,10gb推荐(可共享)。
共享使用10gb网络时,可利用NIOC确保VSAN traffic–VDS许可通过VSAN license可激活,Multicast是必须项,MTU/Jumbo frames都要一致。
3. 内存要求;
Virtual SAN 的内存要求取决于由 ESXi 管理程序管理的磁盘组和设备的数量。每个主机必须最少包含 32 GB 内存以容纳最多五个磁盘组以及每个磁盘组上最多七个容量设备。
4. 节点配置;
Virtual SAN 所需的最低配置为 3 个 ESXi 主机,建议4个Esxi主机,推荐始终追加一节点,以始终保持最佳的可用性,计算方式:(2n+1)+1, n is failures to tolerant。
5. 磁盘组要求;
加入 Virtual SAN 群集的 ESXi 主机上最多有 5 个磁盘组(闪存缓存设备 + 容量设备)。闪存缓存设备可以是 PCIe 闪存设备或固态磁盘 (SSD)。容量设备可以是混合配置中的磁盘或全闪存配置中的闪存设备。闪存缓存设备专门用于单个磁盘组:不能与其他磁盘组共享,也不能共享用于其他用途。
在混合配置中,每磁盘组最多有 7 个磁盘用于容量层,每磁盘组最多有 1 个闪存设备用于缓存层。
在全闪存配置中,每磁盘组最多有 7 个闪存设备用于闪存容量层,每磁盘组最多有 1 个闪存设备用于缓存层。
三 容量规划设计
要确定 Virtual SAN 数据存储的原始容量,可使用群集中的磁盘组总数乘以磁盘组中容量设备的大小,然后减去 Virtual SAN 磁盘格式所需的开销。
规划 Virtual SAN 数据存储的容量时(不包括虚拟机数量及其 VMDK 文件大小),必须考虑群集的虚拟机存储策略的允许的故障数和容错方法属性。
规划和优化 Virtual SAN 存储容量时,允许的故障数起重要作用。基于虚拟机的可用性要求,与一个虚拟机及其各个设备的消耗相比,此设置可能会产生双倍的消耗甚至更多。
例如,如果容错方法设置为 RAID-1 (镜像) - 性能且允许的故障数设置为 1,则虚拟机可使用大约 50% 的原始容量。如果允许的故障数设置为 2,则可用容量大约为 33%。如果允许的故障数设置为 3,则可用容量大约为 25%。
例如,如果容错方法设置为 RAID-5/6 (删除编码,仅限于全闪存) - 容量且允许的故障数设置为 1,则虚拟机可使用大约 75% 的原始容量。如果允许的故障数设置为 2,则可用容量大约为 67%。
容量大小设置准则:
l 至少留有 30% 的未使用空间,以防止 Virtual SAN 重新平衡存储负载。只要单个容量设备上的消耗达到 80% 或以上,Virtual SAN 就会重新平衡群集中的组件。重新平衡操作可能会影响应用程序的性能。要避免这些问题,存储消耗应低于 70%。
l 规划额外容量,用于处理潜在故障或替换容量设备、磁盘组和主机。当某个容量设备无法访问时,Virtual SAN 会在群集中的其他设备中恢复组件。当闪存缓存设备出现故障或移除时,Virtual SAN 会从整个磁盘组中恢复组件。
l 预留额外容量以确保 Virtual SAN 在出现主机故障或主机进入维护模式时恢复组件。例如,置备具有足够容量的主机,以便留有足够的可用容量供可在主机出现故障或维护期间成功进行重新构建组件。存在三个以上的主机时这非常重要,这样您才有足够的可用容量来重新构建故障的组件。如果主机出现故障,将在其他主机的可用存储上进行重新构建,这样可以允许再次出现故障。但是,在三主机群集中,将允许的故障数设置为1时,Virtual SAN 不会执行重新构建操作,因为当一个主机出现故障时,群集中将只剩下两个主机。要允许故障后重新构建,至少必须有三个主机。
l 提供足够的临时存储空间,以便在 Virtual SAN 虚拟机存储策略中进行更改。动态更改虚拟机存储策略时,Virtual SAN 可能会为组成对象的副本创建一个布局。当 Virtual SAN 实例化这些副本并将其与原始副本进行同步时,群集必须临时提供额外空间。
l 如果规划使用软件校验和或去重和压缩等高级功能,请保留额外的空间以处理操作开销。
四 设计建议
设计上有如下注意事项和实践建议:
1. 为 Virtual SAN 群集使用具有类似配置和大小的 ESXi 主机,同时 Virtual SAN 所需的最低配置为3个ESXi主机,建议4个Esxi主机;
Virtual SAN 所需的最低配置为3个ESXi 主机,但是在3节点群集中,如果一个节点发生故障,则无处可以重新构建故障组件。维护模式中有一个选项可以从主机撤出所有数据。然而,这仅在群集中有4个或更多节点并且有充足的备用容量时可行。
2. 确保有足够的闪存缓存满足设计要求,建议将10%的已占用容量分配给缓存;
设计注意事项:除了NumberOfFailuresToTolerate和格式化开销以外,还需要考虑其他注意事项如快照等。一般来说,VMware 建议在群集容量中预留大约 30% 的可用空间。
3. 策略设计注意事项;
l 应考虑所有策略设置,也就是考虑此类策略所产生的组件数量。
l FlashReadCacheReservation 应当谨慎使用,而且仅在已确定具体性能问题时使用。
l NumberOfFailuresToTolerate 需要考虑随着该策略设置的增加,有多少附加容量将被占用。
l 配置 NumberOfFailuresToTolerate 时,需要考虑贡献存储的主机的数量,而如果使用故障域,还要考虑包含贡献存储的主机的故障域的数量。
l 所有使用策略部署在 Virtual SAN 上的虚拟机将采用精简置备。这可能使得管理员需要监控过度使用情况。
4. 网络设计;
网络故障切换和负载平衡:Virtual SAN 使用在仅用于网络冗余的后备虚拟交换机上配置的绑定和故障切换策略,Virtual SAN 不会将网卡绑定用于负载平衡。
如果计划为可用性配置网卡组,请考虑这些故障切换配置。
5. 存储设计注意事项;
l 考虑是全闪存解决方案更适合 Virtual SAN 设计,还是混合解决方案更适合。尽管全闪存解决方案可能更昂贵,但可以提供更高的性能和低延迟。
l 确保在设计中使用的闪存设备的持久性符合要求。
l 请记住使用 10% 的闪存容量比,此要求同时适用于混合配置和全闪存配置花些时间确定容量层在一段时间后会变得多大,并使用提供的公式推算闪存缓存大小。
l 确定容量层大小时,记得将文件系统开销包含在内。
l 如果可以,考虑在每个主机上使用多个存储 I/O 控制器,以便提高性能, 实现冗余。
l 禁用控制器上的缓存,或者如果不可行,将缓存设为 100% 读取。
l 设计磁盘组时,不仅将磁盘组视作故障域,还将其视作提高性能的方式。
l 设计一个具有充足容量的额外主机,以便在磁盘故障时方便开展修复操作,从而可以在提供完整虚拟机可用性的同时,容许群集中再次发生故障。
l 一般来说,目标是保留大约 30% 的可用容量。
总结:以上以笔者从VSAN项目经验,分享了VSAN的基本概念和实践建议,也带来了相关的信息和资讯,欢迎探讨交流,谢谢!