1 为什么要推出vSAN

虚拟化依赖于存储。这就和传统的列车相类似,火车提速,除了铁路路基外,主要靠提高车头的速度和载重。在vSAN推出以前,虚拟化架构是服务器主机+共享存储,所有数据都保存在共享存储,此时存储是“单点故障”和“瓶颈”点。


图1 火车跑的快,全凭车头带

1.1先来看看共享存储的主要缺点:

(1)扩容较麻烦:存储扩容需要添加“一组”磁盘,很少有存储支持添加单一磁盘进行扩容。
(2)存储接口瓶颈:现在存储的接口速度是8Gbps、16Gbps,在中大型业务应用中,存储接口已经成为瓶颈。尤其dEvent: function 是多台服务器同时操作存储时。
(3)存储数据镜像比较困难:因为存储是单点故障点。如果要对存储进行“镜像”,需要专业的设备或软件,成本较高。

1.2为了解决这些问题,VMware推出的vSAN(分布式共享存储),具有一系列优点:

(1)组建容易:使用标准的x86的服务器,使用标准的服务器本地硬盘、通过现有网络(以太网)组成分布式存储。
(2)内核集成:vSAN与ESXi内核集成,兼容性好,稳定、安全可靠。
(3)扩容简单:支持横向扩展与纵向扩展,无论是向现有vSAN群集添加节点主机,还是向现有节点主机添加1块到多块磁盘,都可以在不影响现有业务虚拟机运行的前提下实现扩容。
(4)数据冗余度高:由于vSAN技术的特点,保存在vSAN中的虚拟机数据,本身就具有冗余特性。所以传统共享存储比的“单点故障”、“数据镜像”在vSAN中不存在。
(5)应用范围广:vSAN即可在局域网内组成“标准”vSAN群集,也可以用于广域网环境组成“双活”数据中心。其最小2节点延伸群集可以组成“双机热备”系统。
(6)性能优秀。共享存储:主要是使用10000转/分或15000转/分的2.5英寸或3.5英寸SAS磁盘,组成RAID-5、RAID-6或RAID-50、RAID-60的方式,很少使用RAID-10。RAID-5与RAID-6的写惩罚分别是4和6,效率较低。而vSAN存储,除了使用10000转/分或15000转/分的2.5英寸或3.5英寸SAS磁盘用做容量磁盘外,还使用高IOPS、高性能的固态硬盘(SSD)或PCI-E接口的NVME 固态硬盘用做读写缓存。vSAN存储,混合架构相当于RAID-10,全闪存架构相当于RAID-50或RAID-60,性能优异。

1.3通过共享存储和vSAN的对比得知:

vSAN架构相当于“动车组”,数据分布在每台节点主机并由节点主机共享提供。在传统架构中,主机只提供计算与网络资源,在vSAN架构中,主机提供了计算、存储与网络资源。
传统共享存储架构中,主机与存储之间通过6Gbp或8Gb的SAS或光纤连接;在vSAN架构中,数据使用主机配置的10Gb或40Gb网络互连。在vSAN架构中,不存在明显的瓶颈与单点故障点。

2 vSAN技术参数

在vSphere环境中,使用vCenter Server进行管理。在一个vCenter Server中可以创建多个数据中心,每个数据中心可以创建多个群集,每个群集由多台主机组成。而vSAN是以“群集”的方式构成,每个vSAN存储是由一个vSAN群集来管理。

每个vSAN群集:最小1台主机(无冗余,强制置备),最多64台主机。
每台vSAN主机:最小1个磁盘组,最多5个个磁盘组。
磁盘组:vSAN磁盘组由缓存磁盘与数据磁盘组成。缓存磁盘只能有1个,可以是STAT、SAS或PCI-E接口的固态硬盘;数据磁盘最小1块,最多7块。数据磁盘可以是SATA、SAS的HDD或SSD组成,或者是其他接口的固态硬盘。
下面是一些用于vSAN中的固态硬盘相片(生产环境中一定要用“企业级”固态硬盘,“家用级”固态硬盘可以用于实验或测试环境,不能用于生产环境)。


图2 SATA接口的SSD(企业级固态硬盘)


图3 PCI-E接口的固态硬盘


图4 M.2 NVMe固态硬盘(实验用,不推荐生产环境用)


图5 M.2 SATA固态硬盘(实验用,不推荐生产环境用)


图6 M.2转PCI-E转接卡(实验用,不推荐生产环境使用)

3 vSAN主机数量与允许的故障数

在vSAN架构中,要达到允许的故障数,与提供vSAN存储容量的主机数量有关(如表1-4-1所列),关系如下:
提供vSAN存储容量的主机数量≥允许的故障数×2+1
表1-4-1 允许的故障数与主机数量关系(适合全闪存与混合架构)

在全闪存架构中,如果采用RAID-5/6方式,则允许的故障数可以选择1或2,此时主机最小数量、推荐的主机数量如表1-4-2所示。

表1-4-2 全闪存架构中允许的故障数与主机数量关系

在实际的生产环境中,考虑到冗余、维护,要实现“允许的故障数”,推荐的主机数量是“最小数量”加1。

4 理解vSAN数据存储

VMware vSAN组成的分布式存储,总体来看,虚拟机数据在本地以RAID-0方式保存,跨服务器以RAID-1方式保存,整体相当于RAID-10效果。对于全闪存架构来说,整体相当于RAID-50或RAID-60。vSAN的数据保存效果又优于RAID-5。简单来说,以某台虚拟机使用默认存储策略为例,虚拟机1的数据会在“服务器1”保存1份,在“服务器2”保存1份,在“服务器3”保存“见证文件”。即任意一台虚拟机,其数据是保存在3台服务器中的。只有这3台服务器中的任意2台在线时,数据才是完整的。这种数据保存方式可以称为“2.1”方式。

【说明】 下面将通过查看已经配置好vSAN群集的环境中虚拟机硬盘保存方式,查看验证这些知识点。
VMware vSAN有两种配置方式,一是混合架构,另一种是全闪存架构。所谓混合架构,即组成分布式存储的磁盘组,其缓存盘是固态硬盘,数据盘是传统的磁盘;全闪存架构,缓存盘与数据盘都是固态硬盘。

4.1混合架构中的数据容错方式

在混合架构中,数据容错方式可以在1、2、3之中选择,此时存储效果相当于RAID-1或RAID-10。
容错方式(FTT)为1(vSAN默认存储策略)时,数据有2份副本、1份见证,需要至少3台主机,如图1-5-1、图1-5-2所示。


图1-5-1  当FTT=1时,VMDK有2个组件、1个见证文件


图1-5-2:虚拟机交换对象

容错方式为2时,数据有3份副本、2份见证,需要至少5台主机,如图1-5-3所示。


图1-5-3  当FTT=2时,VMDK有3个组件、2个见证文件

容错方式为3时,数据有4份副本,3份见证,需要至少7台主机,如图1-5-4、图1-5-5所示。


图1-5-4  当FTT=3时,VMDK有4个组件、3个见证文件


图1-5-5 虚拟机主目录,4台主机组成RAID-1,每台主机的RAID-0。另外有3个见证

4.2全闪架构中的数据容错方式

在全闪存架构中,除了可以和“混合架构”一样,使用RAID-10的方式保存(数据容错方式可以选择1、2、3)外,还可以以RAID-5或RAID-6的方式存储,此时数据容错方式可以选择1、2。
在全闪存架构中,虚拟机存储策略选择RAID-5/6、容错方式为1时,相当于RAID-5,需要至少4台主机,如图1-5-6、图1-5-7所示。


图1-5-6 查看VMDK文件:全闪存架构中FTT=1有4个组件,RAID-5组成方式


图1-5-7 查看虚拟机主目录组件:4台主机组成RAID-5

在全闪存架构中,虚拟机存储策略选择RAID-5/6、容错方式为2时,相当于RAID-6,需要至少6台主机,如图1-5-8、图1-5-9所示。


图1-5-8 全闪存架构中FTT=2时有6个组件、RAID-6


图1-5-9 查看虚拟机主目录

在混合架构中,虚拟机整体存储效果相当于RAID-10;在全闪存架构中,虚拟机整体效果相当于RAID-5、RAID-6或RAID-50、RAID-60,具体哪种效果,除了取决于虚拟机使用的存储策略外还要看虚拟机硬盘的大小。当虚拟硬盘小于等于255GB时不进行拆分,当虚拟硬盘大于255GB时会被拆分。当虚拟硬盘(VMDK文件)进行拆分时,拆分后的文件保存在不同的磁盘或不同主机时,同一个VMDK文件相当于RAID-0,同一个VMDK的不同副本则相当于RAID-1。如图1-5-10~图1-5-12所示。


图1-5-10  RAID-10

【说明】在图1-5-10中,虚拟机的虚拟硬盘(VMDK)有两个副本,每个副本以RAID-0的方式保存在不同的主机或同一主机的多个不同磁盘;两个副本以RAID-1的方式实现(镜像)。


图1-5-11  RAID-50

【说明】在图1-5-11中,虚拟机存储策略为RAID-5/6,允许的故障数为1(相当于RAID-5)。虚拟机的虚拟硬盘分成4份,其中3份为数据,1份为检验文件(数据与检验文件大小相同),相当于4块硬盘配置为RAID-5。当每份虚拟硬盘文件大于255GB时开始拆分,拆分之后相当于RAID-0。简单来说,在默认情况下,当配置为RAID-5/6(允许故障数为1)时,虚拟机硬盘大小大于255×3=765GB时开始拆分。


图1-5-12 RAID-60

在图1-5-12中,虚拟机存储策略为RAID-5/6,允许的故障数为2(相当于RAID-6)。虚拟机的虚拟硬盘分成6份,其中4份为数据,2份为检验文件(数据与检验文件大小相同),相当于6块硬盘配置为RAID-6。当每份虚拟硬盘文件大于255GB时开始拆分,拆分之后相当于RAID-0。简单来说,在默认情况下,当配置为RAID-5/6(允许故障数为2)时,虚拟机硬盘大小大于255×4=1020GB时开始拆分。

【说明】vSAN最大组件大小可以通过修改主机“高级系统设置”中的“VSAN.ClomMaxComponentSizeGB”参数来更改,其默认值为255,最小为180,最大为255,如图1-5-13所示。当组成vSAN主机磁盘组中,容量磁盘小于300GB时,可以将这个参数改为180。


图1-5-13 VSAN.ClomMaxComponentSizeGB参数

【说明】关于全闪存架构的RAID-5/6。
在vSAN全闪存架构中采用Erasure Coding提高存储利用率,它类似跨服务器做RAID-5或RAID-6。vSAN可以在vmdk的颗粒度上实现Erasure Coding,可在SPBM(虚拟机存储策略)里设置。目前不支持在vSAN Stretched Cluster(延伸群集)里使用。

原来FTT=1时(最大允许的故障数为1,即两份副本),需要跨服务器做数据镜像,类似RAID-1,存储利用率较低,不超过50%。

当FTT=1,同时又设置成Erasure Coding模式,这就意味着跨服务器做RAID-5,校验数据为一份。它要求至少4台主机,并不是要求4的倍数,而是4台或更多主机。以往FTT=1时,存储容量的开销是数据的两倍,现在只需要1.33倍的开销,举例来说,以往20GB数据在FTT=1时消耗40GB空间,采用RAID-5 的Erasure Coding模式后,消耗约为27GB。如图1-5-14所示。


图1-5-14 vSAN中的RAID-5效果

当FTT=2,同时又设置成Erasure Coding模式,这就意味着跨服务器做RAID-6,校验数据为两份。它要求至少6台主机。以往FTT=2时,存储容量的开销是数据的3倍,现在只需要1.5倍的开销。举例来说,以往20GB数据在FTT=2时消耗60GB空间,采用RAID-6的Erasure Coding模式后,消耗约为30GB。这样在确保更高的高可用性的基础上,存储利用率得到大幅提升。如图1-5-15所示。


图1-5-15 vSAN中的RAID-6