原文:http://cormachogan.com/2013/09/17/vsan-part-9-host-failure-scenarios-vsphere-ha-interop/

注明:本文内容基于 VMware VSAN beta 版本撰写,请访问http://www.vmware.com/products/virtual-san/获得有关正式版本的更新信息。



      在这篇博文中,我会分析一些故障情形。我会重点介绍 ESXi 主机故障,但磁盘或网络故障也足以对 VSAN 上运行的虚拟机产生影响。下面将重点介绍两个主机故障情形,它们都会影响 VSAN 上运行的虚拟机:

  1. 未运行该虚拟机但包含该虚拟机的一些存储对象的 ESXi 主机发生故障

  2. 正在运行该虚拟机的 ESXi 主机发生故障


       让我们来更详细地了解一下这些故障。

      以一个最简单的配置为例,也就是一个三节点群集,在该群集中部署了一个虚拟机,并且默认策略为允许的故障数目 = 1

wKioL1Mz3Kuj67hnAAPv9Zu--uU198.jpg


     在第一种故障情形下,假定该 VSAN 群集中的一台 ESXi 主机(节点)发生崩溃/故障。而正在运行该虚拟机的 ESXi 主机并没有受到影响,因此虚拟机本身会继续运行。那么,如果发生故障的 ESXi 主机包含该虚拟机的部分存储对象,又会发生什么呢?不会发生任何问题,因为在该群集的其他位置会为该虚拟机的存储对象提供完整副本。原因是,VSAN 上部署的所有虚拟机的默认策略均为允许的故障数目 = 1”,也就是说,虚拟机本身会利用一个镜像 (RAID-1) 配置,至少不会受到一个(主机/磁盘/网络)故障的影响。


      经过 60 分钟的超时期限后(这段时间足以重新启动主机,并进行短暂的维护),系统就可以开始重建故障节点上驻留的副本存储对象了。一旦重建完存储对象,系统就会使用这些虚拟机存储对象在群集中的位置信息更新群集目录服务。您可以单击这里来观看关于此行为的视频


wKiom1Mz3SLg-4UqAAQFnjYGReQ823.jpg


      对于第二种情形,也就是正在运行该虚拟机的 ESXi 主机发生故障,vSphere HA可与 VSAN 进行互操作,并按照配置在群集中的另一台主机上重新启动该虚拟机。即使发生故障的 ESXi 主机也包含存储对象副本,群集中也至少应当具有一个完整的虚拟机存储对象镜像/副本。如前所述,在经过超时期限后,系统会开始重建在发生故障前驻留在故障节点上的存储对象。您可以单击这里来观看关于此行为的另一个视频


wKiom1Mz3mXCpwsKAARaZpM_VOU991.jpg


     重新同步行为

     如果由于主机、网络或磁盘发生故障而使某个对象的组件无法同步,则 VSAN 会维护一个位图,表示发生更改的块。这样,在发生故障后,如果对两个或更多组件组成的 VSAN 对象进行更新,系统就会对这些更新进行协调。

例如,在一个分布式 RAID-1(镜像)配置中,如果将写入内容发送到对象 X 所在的节点 A B,但在整个群集发生电源故障前,只有 A 记录了写入内容,那么,在恢复时,A B 就会比较为 X 记录的日志,从而使 A 将它记录的写入内容副本提供给 B


     vSphere HA 互操作性

     VSAN 群集可以完全支持 vSphere HA,以便可以增强群集中部署的虚拟机的可用性。但是,为了能够与 VSAN 进行正确的互操作,vSphere HA 也进行了大量的重要变更。其中值得注意的是,在主机加入 VSAN 群集后,vSphere HA 代理会通过 VSAN 网络进行通信。其背后的原因是,VMware 希望在发生网络故障时 HA VSAN 节点属于同一个分区;这样就可以避免因 HA VSAN 分属不同的分区而不同分区声明同一个对象而发生冲突。不过,vSphere HA 会继续使用管理网络的网关进行隔离检测。


    在 VSAN 上使用 vSphere HA 的另一个显著特点是,不能使用 VSAN 数据存储实现数据存储检测信号。发生 vSphere HA 群集分区事件时,这些检测信号在确定虚拟机所有权方面起着重要作用。这意味着,在发生分区时,vSphere HA 不能使用数据存储检测信号来确定在该分区关闭虚拟机电源之前,另一个分区是否可以打开该虚拟机的电源。如果 vSphere HA 部署在共享存储上,此功能会非常有帮助,因为它可以在一定程度上对各个分区进行协调。对于不使用共享存储的 VSAN 部署,则无法使用此功能。如果 VSAN 群集发生分区,一个分区中的主机就无法访问该分区另一端的主机的本地存储,进而也无法使用 vSphere HA 检测信号数据存储。


     不过,需要注意的是,如果 VSAN 主机也能访问共享存储(VMFS NFS),那么,仍然可以使用这些数据存储实现 vSphere HA 检测信号。


      vSphere HA 需要存储群集中每个虚拟机的保护元数据。在传统数据存储上,此类元数据会存储在每个数据存储的根目录下的某个文件夹中,并会标记为“.vSphere-HA”。而在 VSAN 中则与此不同。此时,vSphere HA 保护元数据并不存储在数据存储的根目录中,而是与虚拟机配置文件一起存储在虚拟机的命名空间目录中。您可以阅读这篇对象和组件文章,了解有关 VSAN 上的虚拟机对象布局的更多信息。


     请单击这里来查看我的所有 VSAN 博文

    欢迎在微博上关注我,这样在我发布博客文章后您就会收到通知,并可以让您了解更多有关 VMware 存储的信息:@VMware中国


————————————————————————————————————————————


作者:Cormac Hogan

CormacHogan 现任VMware R&D 的集成工程团队存储架构师。他是爱尔兰科克郡 EMEA 总部的首批 VMware 员工之一(该总部于 2005 4 月成立),曾在 VMware 技术营销与支持部门任职。他撰写过大量关于存储的白皮书,还发表了许多关于存储最佳实践和新功能的演讲。