本章讲述了Virtual SAN底层的架构细节。我们已经提起过不少vSAN架构的内容,包括使用闪存作为I/O的缓存、将vSAN功能展现出来的VASA角色、虚拟机存储策略、见证盘以及对于直通 RAID控制器的需求等等。
本章将深入探讨这些特性,并介绍由vSAN引入的一些新的架构概念和术语。尽管大多数vSphere管理员不会接触这些底层的结构,但是对组成vSAN的服务具有一些大致的了解对排错或分析日志文件还是有用的。在探讨这些底层细节之前,让我们首先来介绍一个vSAN的核心概念:分布式RAID。
5.1 分布式RAID
vSAN通过使用分布式RAID(或换句话说,网络上的RAID),为虚拟机提供高可用性和***的性能。从可用性角度来说,分布式RAID意味着vSAN环境可以容忍一台或多台ESXi主机(或主机上的组件例如磁盘)故障而继续为其上所有的虚拟机提供其全部功能。而为了确保虚拟机性能***,vSAN分布式RAID提供了将虚拟磁盘散布到多个物理磁盘和主机上去的能力。
然而,值得说明的一点是,通过使用存储策略,虚拟机的可用性和性能现在可以针对单台虚拟机来设置,事实上,更精确的说法是可以针对单块虚拟磁盘来设置。管理员可以通过存储策略来定义一台虚拟机可以容忍多少主机故障或者多少磁盘故障,并可以定义一块虚拟磁盘可以散布到多少主机和磁盘上。如果通过把允许的故障数设为0来特别选择不在存储策略中配置可用性要求,那么主机或磁盘的故障就肯定会影响虚拟机的可用性。
在早期的发布版本中,vSAN在主机之间只使用RAID-1(同步镜像)来满足对系统中存储对象的可用性和可靠性的要求。虚拟机存储对象的镜像拷贝(副本)数量取决于虚拟机存储策略,特别是允许的故障数要求。根据虚拟机存储策略的不同,一块虚拟磁盘最多可在一个vSAN上拥有3个副本。默认情况下,vSAN总是会在部署虚拟机的时候将允许的故障数设置为1,即对每个部署在vSAN数据存储上的虚拟机,其虚拟机存储对象都有一个副本拷贝,这就是关联在vSAN数据存储上的默认策略。不过这可以在虚拟机置备时通过选择不同的策略来改变。
vSAN 6. 2引入了2种新的RAID类型:***个是RAID-5,第二个是RAID-6。当虚拟机存储策略中的容错方法(failure tolerance method)设置成“容量”而不是默认的“性能”的时候才会被创建出来。引入这些新的分布式RAID类型的目的是为了节省空间使用。RAID-5和RAID-6都不使用镜像而是使用分布式校验机制来保护数据。对于RAID-5,数据分布在3台ESXi主机的3块硬盘上,计算出来的校验数据则存放在第4台ESXi主机的第4块硬盘上。校验数据并不是总存放在同一台主机的同一块硬盘上,而是分布式的,如图5-1所示。
图5.1 分布式校验的RAID-5部署
RAID-5配置可以容忍一个主机故障,RAID-6则是设计用来容忍两个主机故障的。在RAID-6配置中,数据分布在4台ESXi主机上的4块硬盘上,而计算出来的校验数据则保存在另外两台ESXi主机上的另两块硬盘上。这样,如果你想要使用RAID-6配置的话,总共需要6台ESXi主机。校验数据还是分布式存放的,如图5-2所示。
图5.2 分布式校验的RAID-6部署
可以节省的空间计算如下:用RAID-1方式部署一个100GB的VMDK对象来容忍一个故障需要在vSAN数据存储上消耗总共200GB容量;用RAID-5方式会消耗133.33GB。类似的,如果用RAID-1方式部署一个100GB的VMDK对象来容忍两个故障,需要在vSAN数据存储上消耗总共300GB的容量;用RAID-6方式则消耗总共150GB容量。
如在第四章中讨论过的,管理员现在需要在性能和容量之间进行选择。如果性能是管理员绝对最终目标,那么容错方法应该使用RAID-1(仍是默认值)。如果管理员不需要性能***,而更关心容量的使用,那么容错方法或许应该选择RAID-5/6。
根据每个对象的磁盘带数的策略设置,一个虚拟磁盘对象可能会被条带化到很多物理磁盘上来达到期望的性能要求。可以通过RAID-0增强虚拟机存储对象的性能,不过条带配置并不总是增强性能的必要条件。在本章稍后我们将解释原因,并说明在什么时候在虚拟机存储策略中增加VMDK的条带宽度可以带来性能提升。