vSAN
要说vSAN就不得不提下超融合的概念,超融合是一个整体解决方案,是将计算虚拟化,软件定义存储,软件定义网络等解决方案集成到一起的一个整体解决方案。
软件定义分布式存储是超融合(Hyper-Converged)的核心。引用VMware关于vSAN的一句介绍:
VMware vSAN (formerly Virtual SAN), is the industry-leading software powering Hyper-Converged Infrastructure solutions.
即vSAN是VMware对超融合架构的一种解决方案。
而从功能上说,vSAN是基于对象的分布式策略存储,这里面的关键词有三个:
- 对象
- 分布式
- 策略
下面,将以这三个关键词展开对与vSAN的介绍。
存储对象和组件
对象
对象指的是一个独立的存储块设备,大小没限制。vSAN的对象是带有叶子的RAID树 。在vSAN存储池Datastore 上虚拟机有五种不同类型的对象,每个虚拟机都是由这些对象的部分组合而成。这些对象是:
- VM Home(虚拟机主页)或“名字空间目录”;
- VM swap (交换文件对象),开机时才会创建;
- VMDK(虚拟磁盘),vSAN 5.5时最大2TB,6.0最大62TB;
- Snapshots(快照),也叫增量盘,建立快照的每个对象都有,每个增量磁盘都是一个对象。
- Memory(vmem,虚拟机内存文件),vSAN5.5时,当快照创建时,虚拟机内存以文件形式存放在VM Home里;而在vSAN 6.0时,虚拟机内存在vSANDatastore里实例化为独立的对象。
注:
- 除虚拟机磁盘、增量磁盘(快照)和交换对象外,所有虚拟机文件都驻留在 vSAN 上一个称为虚拟机命名空间的区域中。这里的文件可以是.vmx、.log 文件、.vmdk 和快照增量磁盘描述符文件,以及可能位于虚拟机主目录中的所有其他文件。
因为由vSAN搭的vSphere虚拟化环境和我们平时玩的VMware Workstation中的虚机略有不同,在vSAN中,虚机是由大量不同的存储对象组成的,而非文件。
组件(含Witness)
组件( Components)是对象的RAID树上的叶子,分布在vSAN集群中的各个主机上。其实,组件是按照两种主要的技术分布的:Striping(条带),即RAID 0;和Mirroring(镜像),即RAID 1。
注意,RAID的构成和组件的分布取决于最初创建的存储策略。下图是副本为2,条带为2的组件分布情况。每个存储对象都会以 RAID 树的形式部署在vSAN 中,树中的每一片叶子都视为一个组件。
条带数(也即副本横跨的盘数)
vSAN5.5目前支持每台主机最多包含3000个组件,vSAN 6.0可达9000个组件。
容量大于255GB的对象会自动被分为多个组件。我们知道,vSAN6.0现在支持62TB的VMDK。然而,考虑到vSAN集群支持的最大组件数,需要谨慎衡量应用程序]是否真的需要这么大的VMDK。以单个62TBD VMDK为例,假设副本数为2时,按照255GB拆分,需要消耗约500个组件。
分布式
需要清楚的是,vSAN不是分布式文件系统,而是分布式对象存储系统。所谓分布式就是一个业务拆分成多个子业务,部署在不同服务器上,经常对比的一个概念就是集群,集群是同一个业务,部署在多个服务器上。
搭建vSAN,至少要三台服务器节点(即ESXi主机),两台主机存放副本,剩下一台存放“见证”(也即Witness,当群集中的虚拟机存储对象出现故障的时候,作为必要的仲裁对象)组件,可允许最多一台主机故障。
需要注意的是,尽管vSAN完全支持3个主机的配置,但如果可行,建议至少4个主机。这是因为,只有3个主机的vSAN集群,在发生故障时,有些情况下,vSAN无法在群集中的其他主机上重新构建(Rebuild)组件(Components)来允许另一次故障。同样,在3个主机配置下,vSAN不能在维护模式(Maintenance Mode)期间从主机迁移所有数据。
而4个主机的vSAN群集可以提供更高的灵活性。vSAN集群最多时可以支持64个主机。每台为vSAN提供存储资源的主机至少有一个SSD,及一个HDD(每个主机满配5个磁盘组,每个磁盘组为1块SSD+7块HDD,SSD作为缓存层,HDD作为持久化层,也称容量层)。每台主机至少6GB内存。
上种属于混合配置,在混合配置中,缓存算法会尝试最大限度提高读写性能。缓存的70%为读缓存,用于存储频繁读取的磁盘块,从而最大限度减少对速度缓慢的磁盘的访问。缓存的30%为写缓存,用于执行写入操作,每个IO会先写入缓存层,再批量写入持久化层。如果可行,系统会合并多个写操作,并按顺序写入,从而再次最大限度提高磁盘性能。
并且在混合配置下,强烈推荐使用支持直通(Pass-Through)模式的磁盘控制器。方便扩容,只需简单插入新盘即可。
注:
- Pass Through意味着,此控制器支持把磁盘直接呈现给ESXi主机。监控和管理由vSAN来实现
- RAID 0 指每个磁盘必须配置为RAID 0卷,才能让ESXi主机看到它们。
还有一种为全闪存配置,全闪存配置下,vSAN必须使用万兆网口。
策略
VMware通过SPBM (Storage Policy Based Management) 来实现SDS自动化。SPBM 是一种通用的存储策略框架,可跨 Virtual SAN 控制并自动执行以虚拟机为中心的存储策略,并通过 Virtual Volumes 管理外部存储。
目前6.0版本提供的存储策略一共五种。
允许故障数
即FTT
为了保证虚拟机持续可访问,组成虚拟机存储对象的组件必须至少有50%可用。所以在保证vSAN可用性的前提下,在故障数为1 的策略时,vSAN环境最少需要3台主机,因为
3台主机具有2个镜像副本和一个见证,你总是可以具有大于50%的可用组件。
那么,允许N个故障,vSAN群集要多少台主机?
允许的故障数N | RAID-1副本数N+1 | vSAN群集中需要的主机数2N+1 |
---|---|---|
1 | 2 | 3 |
2 | 3 | 5 |
3 | 4 | 7 |
条带宽数
一般而言,默认条带宽度设置为 1 应能满足大部分虚拟机工作负载的需求。只有在确定写入取消暂存操作或读取缓存未命中的情况影响到了性能时,才应该更改条带宽度。
闪存读取缓存预留
该容量是指 SSD 上作为读取缓存保留给存储对象的闪存容量。以1TB 磁盘为例,如果我们将读取缓存预留限定为 1% 的增量,也就意味着缓存预留的增量为 10GB,在大多数情况下,这一增量远远超出了一个虚拟机的需求。
对象空间预留
vSAN 上部署的所有对象都采用精简置备。此功能定义了初始化期间可以预留的存储对象逻辑大小百分比。对象空间预留表示要预留的空间量,以整个对象地址空间的百分比来表示。
强制置备
如果将此参数设置为非零值,则即使数据存储不满足虚拟机存储策略中指定的策略要求,也会置备对象。