设为首页 收藏本站
查看: 910|回复: 0

[经验分享] VMware SDS 之三:VSAN的体系结构(含VSAN 6.0、6.1版的新内容)

[复制链接]

尚未签到

发表于 2018-6-4 10:58:23 | 显示全部楼层 |阅读模式
搭建一个VSAN集群(也可称为群集),至少要三个服务器节点(也即ESXi主机),其中两个主机存放副本,剩下一个主机存放“见证”(也即Witness,充当仲裁)组件,这样可以允许最多一个主机出故障,同时确保虚机无中断地持续运行(有时需要结合vSphere HA进行重启)。不过在VSAN 6.1新增的一个特性,也即远程分支办公室的场景下,Witness不一定要放在一台真实的物理服务器上,可以存放在ESXi虚机上,后面会有详细描述。注意,本文后面提到的副本(Replicas)数,就是包含原件和镜像在内的所有的数量,也就是说,n个副本意味着总共n份数据



需要注意的是,尽管VSAN完全支持3个主机的配置,但如果可行,建议至少4个主机。这是因为,只有3个主机的VSAN集群,在发生故障时,有些情况下,VSAN无法在群集中的其他主机上重新构建(Rebuild)组件(Components)来允许另一次故障。同样,在3个主机配置下,VSAN不能在维护模式(Maintenance Mode)期间从主机迁移所有数据。



而4个主机的VSAN群集可以提供更高的灵活性。VSAN集群最多时可以支持64个主机。每台为VSAN提供存储资源的主机至少有一个SSD,及一个HDD。每台主机至少6GB内存。



下面我们依次介绍VSAN的配置、磁盘组、vsanDatastore、对象、组件和网络。

  
1. VSAN的两种配置–混合与全闪存

截止目前,VSAN最新的版本是6.1,是2015年9月发布的,对应的vSphere版本是ESXi6.0 Update 1

VSAN 6.0以后,包含两种配置:

(1)混合配置(Hybrid):缓存层为SSD,持久化层(也称为容量层)为HDD(机械磁盘);

(2)全闪存配置(AllFlash):缓存层和持久化层都是SSD;一般选取速度更快、耐久性更好的写密集型SSD做为缓存层;选取成本更低、容量更大的读密集型SSD做为持久化层。

需要注意的是,当我们计算存储容量时,只能计算持久化层的存储。缓存层只是用来做性能加速的。下图展现了混合配置下的VSAN体系结构图。





混合配置和全闪存配置都建议将10% 的已占用容量”用于缓存层;然后再考虑NumberOfFailuresToTolerate(最大允许的故障数)。例如,用户计划置备 1000个虚拟机,每个虚拟机有 100GB 精简置备的逻辑地址空间。然而,他们预计一段时间内,每虚拟机占用的存储容量平均为20GB。这样,已占用容量就是按照20GB计算,此时20GBx1000x10%=2TB。而不是4TB(即便有两份副本)。需要注意的是,这个10%不是硬性要求的,主要还是取决于需要被缓存提速的那部分活跃数据有多少。



在混合配置中,缓存算法会尝试最大限度提高读写性能。缓存的70%为读缓存,用于存储频繁读取的磁盘块,从而最大限度减少对速度缓慢的磁盘的访问。缓存的30%为写缓存,用于执行写入操作,每个IO会先写入缓存层,再批量写入持久化层。如果可行,系统会合并多个写操作,并按顺序写入,从而再次最大限度提高磁盘性能。



在全闪存配置中,100% 的缓存都分配给写入操作,因为持久化层的SSD(固态硬盘)提供的读取性能绰绰有余。大量写入操作保存在缓存中,仅在需要时写入持久化层的SSD,从而延长持久化层的寿命。经常在写缓存里访问的热数据仍然留在缓存里,而很少被访问的冷数据就Destage(刷)到持久化层的SSD里。



混合配置下,强烈推荐使用支持直通(Pass-Through)模式的磁盘控制器。如果现有的磁盘控制器不支持直通模式,才考虑使用RAID-0,但需要注意的是,采用RAID-0配置HDD后,如果HDD出故障需要更换时,操作较为复杂,需要重新配置RAID-0。采用直通模式时,只需简单地插入新盘。

  

2. VSAN的磁盘组- DiskGroup


磁盘组是一组盘,每个磁盘组包含1个SSD做为缓存层1~7个HDD或者SSD做为持久化层。缓存层的SSD为同一个磁盘组内的持久化层盘***能加速。磁盘组这种设计,在混合配置下,同时兼顾了性能和容量。







VSAN集群中,允许某些主机不提供存储资源,但一般不建议这么做。每个主机最多支持5个磁盘组。如果希望每个主机使用多块SSD,就需要创建多个磁盘组。一般而言,用于缓存层SSD的容量相对于持久化层的比率越高,能够用于IO加速的缓存就越多,性能就更有保障。



在vmware官网发布的《VMware Virtual SAN 6.0Performance - Scalability and Best Practices》白皮书中,我们可以了解到,测试的配置是:每个主机有两个LSIMegaRAID SAS控制器,每个控制器对应一个磁盘组,每个磁盘组配置1块400GB Intel S3700 SSD和4块900GB 1万转的SAS。测试的结果是,从4个到64个主机的不同集群里:



(1)4K大小IO,随机,100%读的时候,64个主机能达到740万IOPS(平均每个主机11.56万IOPS,每个主机的每个磁盘组为5.78万IOPS);

(2)4K大小IO,随机,混合读写(70%读30%写,模拟OLTP应用)的时候,64个主机能达到200多万IOPS(平均每个主机3.1万IOPS,每个主机的每个磁盘组为1.55万IOPS);

  

可以看出,在下图中,两个磁盘组相对于一个磁盘组,性能几乎线性增长。





  

在《VMware Virtual SAN 6.0 Design and Sizing Guide》白皮书里提到,VMware建议VSAN集群内的每个主机使用多个磁盘组。不仅是为了可能提高性能,同时也为了减小故障域。因为每个磁盘组的缓存层SSD只会影响该SSD所在的磁盘组的持久化盘,不影响同一主机的其他磁盘组。



如果 3 节点群集中每个主机只有一个磁盘组,当其中一个闪存缓存设备发生故障时,将无处重新构建磁盘组中的组件。

然而,如果每个主机有多个磁盘组,而且在某个闪存缓存设备发生故障时其他磁盘组中有充足的容量,VSAN将能够在剩余磁盘组中重新构建受影响的组件。这是在计划部署 3 节点 VSAN 群集时另一个需要注意的事项。

  
3. VSAN的存储池-vsanDatastore


VSAN聚合了集群内的SSD和HDD,形成一个共享的存储池,也即vsanDatastore被vSphere集群使用。这个vsanDatastore可以随着主机、磁盘组或盘的增减,动态地在线地扩大或缩小。这为业务(虚机)的弹性扩展奠定了坚实的基础。下图就是3个主机扩展为4个主机后的vsanDatastore,从4.86TB动态地在线地扩大为6.48 TB。





我们知道,以往的传统存储划分LUN给vSphere,做完VMFS格式化后,形成的datastore大小基本都是固定的,随着业务规模的变化,存储容量所需的在线调整很难实现,也即扩大和缩小比较复杂。

  

VSAN不仅支持分布式存储的在线横向扩展(Scale Out),也支持纵向扩展(Scale Up)。通过增加主机,提供存储容量的vsanDatastore可以在线扩大,同时整体的性能也线性增长。通过添加磁盘组,或者增加HDD,也可使得vsanDatastore得到在线扩大,这种在线的纵向扩展无需增加新主机,从而避免了计算资源的浪费。VSAN也支持在线移除磁盘组(建议先设置成维护模式- Maintenance Mode,虽然这不是必须),或者在剩余空间足够的情况下,移除SSD或HDD。下图可以查看到,VSAN提供了直观的图形界面,进行磁盘组或盘的添加或移除。这位用户对VSAN存储管理和维护,提供了极大的灵活性和便利。也为在线调整存储的空间和性能,奠定了坚实的基础。例如,通过增加SSD和磁盘组,或者通过依次将主机设置成维护模式,将主机的SASSSD更换成NVMe SSD(一种PCIe SSD),或者更换成UltraDIMM SSD(插在内存槽上的SSD),实现业务不停顿的情况下,来在线提升性能。




  

4. VSAN的对象–Object

需要清楚的是,VSAN不是分布式文件系统,是分布式对象存储系统。VSAN的对象,是指符合SCSI语义的单个存储块设备。从概念上讲,也可以被视为“卷”(Volume),即 Amazon EC2 和 OpenStack 中使用的术语。VSAN的对象取代原来传统存储中的LUN,成为VSAN的主要存储单元。VSAN的对象是带有叶子的RAID树。如下图所示,这是一颗副本数为2(也即最大允许故障数FTT=1),条带数(也即副本横跨的盘数)为2的RAID树,是一个VMDK对象。






在vsanDatastore上,虚拟机有5种不同类型的对象,每个虚拟机都是由这些对象的部分组合而成。如下图所示,这些对象是:

VM Home(虚拟机主页),或称“名字空间目录";

VM swap(交换文件对象),如果虚机处于开机状态;

VMDK(虚拟磁盘),VSAN 5.5时,最大2TB,而VSAN 6.0时最大62TB;

Snapshots(快照),也即增量盘,建立快照之后每个对象都有;

Memory(vmem,虚拟机内存文件),VSAN5.5时,当快照创建时,虚拟机内存以文件形式存放在VM Home里。而在VSAN 6.0时,虚拟机内存在vsanDatastore里实例化为独立的对象。



5. VSAN的组件– Components(含Witness)



  

组件是对象的RAID树上的叶子,分布在VSAN集群中的各个主机上。其实,组件是按照两种主要的技术分布的:Striping(条带),即RAID 0;和Mirroring(镜像),即RAID 1。注意,RAID的构成和组件的分布取决于最初创建的存储策略。下图是副本为2,条带为2的组件分布情况。





  

每个组件都是存放在一个特定的“缓存层(SSD)+持久化层(如HDD)"的组合上,也即磁盘组上。组件如同对象一样,是一个逻辑概念。以混合配置为例,组件所对应的真实数据,最终都是要落到HDD的。不过,某一时刻,应用对它的读写发生在SSD,还是HDD,取决于写数据时,SSD的数据是否Destage(刷)到HDD上。或者读数据时,是否从HDD复制到了SSD。主机的组件不仅包括开机状态下,还包括处于关机状态下的虚拟机的组件。



VSAN5.5 目前支持每台主机最多包含 3000 个组件,VSAN 6.0可达9000个组件

容量大于255GB的对象会自动被分为多个组件。我们知道,VSAN6.0 现在支持 62TB 的VMDK。然而,考虑到VSAN集群支持的最大组件数,需要谨慎衡量应用程序是否真的需要这么大的VMDK。以单个62TBD VMDK为例,假设副本数为2时,按照255GB拆分,需要消耗约500个组件。

此外,如果设定的每个对象的条带数超过默认值 1,则每个条带将计为一个单独的组件。

简而言之,条带即组件

  


为了方便管理员详细的了解VMDK对象各个组件的分布位置,VMware提供了vSphere Web Client图形界面,可以清晰直观地查看对象的构成和组件的分布。






需要注意的是,无论组件如何分布,为了确保可用性,VSAN绝不会让不同的副本(镜像)组件共用同一台主机。

在VSAN 5.5中创建的每个组件,元数据会占用额外的2MB空间,此时磁盘格式为1.0,对应的磁盘文件系统是VMFS-L。而在VSAN 6.0中,如果在磁盘格式 2.0(对应的磁盘文件系统为VSAN FS)的持久化层上构建组件,则会占用额外的4MB空间。



介绍Witness(见证)

  

在前面第4节-VSAN的对象的第一个图里,我们还可以看到,在组件中,有一个非常特殊的组件是Witness(见证),它只包含元数据,不给虚拟机提供存储空间,不包含任何实际应用程序数据。见证组件和其他组件必须位于不同的主机上。



在磁盘格式1.0时,见证约占2MB空间;在磁盘格式2.0时则为4MB。它做为必要的仲裁对象,在VSAN集群出现故障,尤其是脑裂时,用来辅助判断哪个分区可用。在VSAN5.5时,哪个分区的组件数超过50%,就决定哪个分区是可用的。

在 VSAN 6.0 中,仲裁计算方式已经改变。规则不再是“50%以上的组件”。相反,在 6.0 中,每个组件都有许多votes(投票),可以是 1 票或更多票。仲裁根据“需要 50% 以上的votes”这一规则计算。这就存在一种可能,也就是即便不使用Witness,组件分布方式依然能让 VSAN 保证容许故障数。然而,在VSAN6.0 中,许多对象依然有Witness,例如VM Home仍然使用Witness。



另外,在VSAN 6.1后,Witness做为见证,不仅可以运行在物理的ESXi主机上,还可以运行在第三个站点的虚拟机上,或者运行在公有云上,例如,在条件具备的情况下,也可以运行在天翼混合云、或vCloud Air、AWS、Azure、阿里云等公有云上。VMware已经准备好了特殊的Witness虚拟设备- VirtualSAN Witness Appliance 6.1 的OVA文件。其实就是装有ESXi的虚机。这为VSAN 6.1新特性中的两个,也即(1)VSAN支持存储双活(Stretched Cluster)和(2)VSAN支持两个主机的VSAN集群(用于ROBO- 远程或分支办公室)提供了灵活性,也节省了成本。




  6. VSAN的网络–Network


  

VSAN 6.0对网络的要求如图所示。






在已启用巨型帧的数据中心里,才建议将巨型帧用于VSAN的网络部署。因为VMware测试发现,使用巨型帧可以降低CPU利用率,增加吞吐量,然而,这两项优势带来的收益并不大,因为vShpere 已经使用 TCP 分段卸载(TSO)和大型接收卸载(LRO)带来了类似的优势。

VSAN可以将多个网络接口聚合在一起使用,以实现网络的高可用,如果一个网口发生故障,另一个将接管通信。



VSAN 同时支持 VDS和VSS。



全闪存配置下,VSAN必须使用万兆网口。混合配置下,虽然千兆(1Gbps)网口也能支持VSAN,但最佳实践是建议使用万兆(10Gbps)网口。如果使用万兆网口,该网口可以与其他类型的网络流量共享,例如 vMotion。如果在多个类型流量之间共享万兆网口,则建议使用NIOC(Network I/O Control),用来阻止一种类型流量占用所有带宽。NIOC 要求使用分布式交换机(VDS),NIOC在标准交换机(VSS)上不可用。不过,VMware会在含有VSAN的每个vSphere版本,都提供 VDS。这意味着,无论部署哪个版本,都可以配置 NIOC。



  

VSAN和其他vSphere类型的流量可以使用NIOC的份额(Shares)设置不同的QoS目标。下图中的vMotion流量是一个例子,其他vSphere类型的流量,如FT,iSCSI,管理,容灾,NFS,以及虚机的流量都是类似的。







VMware SDS系列,未完待续……,欢迎持续关注。



本篇文章参考了《VSAN权威指南》、VMware官方网站和VSAN 6.0 Design and Sizing Guide等文章,并得到了徐炯的帮助。在此一并致谢。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-518290-1-1.html 上篇帖子: VMware SDS 之二:VSAN用在哪?? 下篇帖子: VMware Horizon view打印机出现多个副本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表