一、什么是vSAN

vSAN,Virtual SAN(虚拟存储局域网),是vmware公司提出的软件定义存储架构

vSAN是借助软件将服务器本地众多的空白磁盘打造成一个虚拟的共享存储。

vSAN是一种集群功能。通过vSAN将众多主机本地的磁盘创建分布式RAID(根据不同的存储策略,可以是RAID1、RAID5/6等),虚拟机的数据就会存储在这个RAID磁盘上。这个磁盘实际是在每台服务器的本地,但是通过vSAN软件的管理,它几乎可以实现虚拟共享存储的所有功能。

vSAN的本质:将多台安装有ESXi系统的x86服务器上的本地磁盘加以整合,组成磁盘组, 在这之上使用vSphere和vCenter管理,通过内部的万兆网络相连,形成一个大容量的存储,这个存储就叫vSAN存储(vsanDatastore),再在这个存储上通过一定的策略(存储策略),比如使用网络RAID1(默认策略)来建立和组织虚拟机,避免单点故障实现高可用等。

vSAN架构不需要传统存储架构的外部存储,将服务器的存储资源整合利用,是HCL(超融合)架构的一部分。

HCL架构:把多台服务器上的计算、存储和网络加以整合利用,避免连接外部环境产生的网络延迟,实现服务器资源的有效利用。

VMware vSAN 6.7实战(二)vSAN架构概述_第1张图片

在前面的实验环境中,我们使用了4台ESXi服务器上面的8块硬盘(每台100G的ssd+1T的ssd,共400G的缓存,4T的容量),通过vSAN,整合成了一块具有4T容量的共享虚拟存储。


二、vSAN要求

vSAN通过内嵌的方式集成在vsphere群集环境中,只要前期满足一定的要求,并做好准备工作,如准备磁盘、配置网络等工作,通过简单的设置,就可以启用vSAN。

主机要求

标准的vSAN群集至少要求配置3台ESXi主机,这样FTT=1(最大允许故障数),但是不能保证某些存储策略的应用,所以一般来说,要准备4~5台ESXi主机才能满足基本的实验要求。 每台服务器必须满足相对应列表的要求,通过列表去选择相应兼容性的设备,此外,每台服务器的内存不应少于8G。

这些主机的硬件必须满足兼容性,内存不少于8G


在我们前面的实验环境中,我们使用了4台ESXi主机 ,使用vmware-Workstation来虚拟的,但是即使如此,后面还是出现SCSI控制器的兼容性警告。每台主机的CPU为4核,内存为8G。


磁盘要求

每台服务器上除了安装有esxi系统的磁盘外,必须要配置至少一块ssd作为缓存盘,另外若干块(≥1)的ssd磁盘(全闪存架构)或者HDD(混合架构)作为数据盘,这些磁盘(缓存盘+数据盘)被vSAN称为一个磁盘组(不包括安装esxi系统的磁盘)。

这些磁盘必须以直通或RAID 0的方式进行交付,就是物理磁盘不能做成硬件RAID0以外的磁盘阵列来提供vSAN的磁盘。

但是并不是vSAN集群中的每个节点都需要提供磁盘组,没有本地存储的主机仍可利用群集中其他主机组成的vSAN分布式数据存储。

这些磁盘也要满足一定的条件才能使用vSAN


在我们前面的实验环境中,每台ESXi主机除了安装系统的磁盘外,配置了1个100g的ssd作为缓存盘(必须标记为ssd,否则无法作为缓存盘)和1个1T的ssd(也可以是HDD,但是为了模拟全闪存环境,标记为ssd)作为容量盘。

VMware vSAN 6.7实战(二)vSAN架构概述_第2张图片

vSAN磁盘配置


网络要求

全闪存架构的vSAN推荐使用10Gb的万兆网络,不建议在小于1Gb千兆的网络上运行vSAN。

VMware vSAN 6.7实战(二)vSAN架构概述_第3张图片

用来运行vSAN的2个万兆网卡


混合架构的vSAN可以使用1Gb的千兆网络。


三、vSAN基本术语


对象

vSAN是基于对象的存储,对象是一个独立的块设备。在之前不用vSAN的情况下,虚拟机是由一组文件组组成,而使用了vSAN之后,虚拟机被划分成多个对象存储块来存储,这些存储块包括:虚拟机主页空间,虚拟机交换文件,vmdk(Hard disk)等。在我们的实验环境中,我们新建立的centos8虚拟机就包括虚拟机主目录和Hard disk 1 这2个对象(如果有2块磁盘就有3个对象)。

VMware vSAN 6.7实战(二)vSAN架构概述_第4张图片

对象

新加一块硬盘,就有了3个对象

VMware vSAN 6.7实战(二)vSAN架构概述_第5张图片

3个对象


组件

指的是每个对象具有哪些数据,vSAN是对虚拟机的每个对象做了一个网络RAID 1(默认存储策略下),即对虚拟机主目录、vmdk等做了网络镜像,具有2个组件。这使它们在多台主机上均有副本,达到高可用的目的。这些镜像在vSAN中就称为组件(component),组件的数量与存储策略有关。

如下图是Hard disk 1 所包含的3个组件:

VMware vSAN 6.7实战(二)vSAN架构概述_第6张图片

Hard disk 1 的3个组件

可以看到包含3个组件(见证也是组件,后面会详细介绍),其中组件1放置在32这台主机上,组件2放置在33这台主机上,见证放置在34上。

组件1和组件2是存放元数据的,它们是镜像,内容完全一样。

同理, Hard disk 2 和 虚拟机主页 这2个对象也分别有3个组件,也存放在不同的主机上。

VMware vSAN 6.7实战(二)vSAN架构概述_第7张图片

虚拟机主页的3个组件


副本

就是组件的数量(不包括见证),vSAN使用RAID的方式来实现高可用的,那么一个对象就存在多个副本来避免单点故障,同样的,副本数量与存储策略有关。我们上面的实验环境使用的是RAID1,副本数为2。

VMware vSAN 6.7实战(二)vSAN架构概述_第8张图片

副本数

见证(Witness)

一般理解为“仲裁”,是RAID1的一种特殊组件(RAID5/6就没有见证这个组件), 它不包括元数据,仅用于当vSAN发生故障后进行仲裁时用来确定如何恢复。 某些情况下,这个见证可以放在群集外特定的主机上(如在双节点群集或延伸群集中),这个主机被称为见证主机。

磁盘组

每台主机上的缓存盘和容量盘通过声明后,就组成了一个磁盘组,其中缓存盘必须是ssd磁盘,容量盘可以是ssd、SAS或者普通磁盘,容量盘是ssd的就是全闪存架构,容量盘不是ssd的是混合架构。

我们实验环境中,每台主机由100g的缓存盘和1T的容量盘组成一个磁盘组,是全闪存架构(注意,只有vSAN企业版才支持全闪存架构,标准版不支持)。

VMware vSAN 6.7实战(二)vSAN架构概述_第9张图片

磁盘组、缓存盘和容量盘


存储策略

vSAN是基于存储策略的管理(Storage Policy-Based Management),指明虚拟机以何种方式存放于vSAN中,比如允许主机故障数是多少,使用RAID1还是RAID5/6,包含多少个条带(数据分割)等等。

基于存储策略的管理vSAN的核心,所有部署在vSAN上的虚拟机都必须使用一种存储策略。如果没有创建新的存储策略,虚拟机将使用默认策略。 后面将用专门的文章讲述vSAN的存储策略。

在我们的实验环境中新建的虚拟机centos8使用的是默认存储策略,我们来看看它的具体内容

VMware vSAN 6.7实战(二)vSAN架构概述_第10张图片

默认存储策略


可以看到,在默认存储策略下:

允许的故障数(FTT):1(这就是至少需要3台ESXI主机的原因)

存储方式:RAID 1(镜像),对每个虚拟机的对象进行镜像,具有2个副本(每个副本包括2个组件和1个见证)

磁盘条带数:1 (不使用条带)

使用的是精简置备

对象磁盘条带数 (Number of disk stripes per object)

把虚机对象分成多个条带 (stripe) 分布存储在多个硬盘上,这样有助于提高数据读取的性能。在下图的例子中,所示的虚机被分为两个条带 a 和 b 进行存储;因为同时又采用了 Raid-1,所以虚机对象又被保存了两个副本,一个副本在服务器 ESX01 的磁盘组中,另一个副本存放在位于服务器 ESX02 和 ESX03 上的磁盘组中。

VMware vSAN 6.7实战(二)vSAN架构概述_第11张图片

对象条带数实际上就是 Raid-0 的概念,只不过我们在定义 Raid-0 的配置时,更多使用的是条带宽度 (stripe width) 的概念,条带宽度是指每一块条带块的大小,条带数量取决于组成 Raid-0 阵列的磁盘数量。vSAN 中对象条带数缺省为1 (建议不要改动这个值),最大值为12。把这个值设置成大于1能够提高系统性能,但是会引起更多的资源消耗。

在我们的实验环境中,我们新建一条存储策略,使用RAID1,条带数=2的策略

VMware vSAN 6.7实战(二)vSAN架构概述_第12张图片

新建虚拟机,应用这个策略

VMware vSAN 6.7实战(二)vSAN架构概述_第13张图片

虚拟机的放置信息

VMware vSAN 6.7实战(二)vSAN架构概述_第14张图片

可以看到,Hard disk 1 实际上是做了一个RAID 01 (注意不是RAID 10)

补一张RAID 01 的图

VMware vSAN 6.7实战(二)vSAN架构概述_第15张图片