盘点SDDC核心构造块——VMware vSAN 的架构及存储策略

内容来源:2018年1月16日,东方瑞通高级产品经理高金良在“VMware官方在线直播”进行《VMware vSAN 架构解析及存储策略》演讲分享。IT 大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:5312 | 14分钟阅读

摘要

VMware vSAN 通过 vSphere 原生的高性能体系结构支持业界领先的超融合基础架构解决方案。是 Software-Defined Data Center 的核心构造块。借助 VMware 支持的超融合基础架构,能够安全发展、降低 TCO 以及根据未来发展需求扩展规模。

嘉宾演讲视频回顾及PPT,请复制链接:http://t.cn/Rd4BVBk,粘贴至浏览器地址栏即可。

vSAN概述

SDDC概述

要想谈论vSAN,就要先谈一谈软件定义数据中心的解决方案。传统的数据中心实际上存在很多短板,比如管理不方便、成本较高等一系列问题。所以VMware在2012年首次提出了SDDC(软件定义数据中心)的解决方案,整个基础架构实现了虚拟化,并且数据中心完全由软件自动控制。vSphere则是软件定义的数据中心的基础。

关于vSAN

在整个数据中心中需要有相应的存储设备,传统的数据中心使用磁盘阵列做为共享存储。但是,这种方式不但成本较高而且管理也不方便,同时可扩展性也不好。vSAN的推出就是为了解决这个问题,它将服务器本地的磁盘构建成相对应的分布式虚拟共享存储,其实就是借助软件将服务器众多的空白磁盘打造成虚拟的共享存储。在整个解决方案中,可以将最少3台主机最多64台主机构建成vSAN集群

vSAN要求

vSAN包含在vSphere 5.5 U1和以后的版本中,要想构建vSAN首先服务器要满足相对应的兼容性要求,可以在VMware的网站上查看硬件兼容性列表。

其次服务器上要有一定的空白磁盘,空白磁盘中首先要有SSD磁盘,主要用作缓存,还要有相对应的容量磁盘,该磁盘可以是SSD也可以是普通机械磁盘。这些磁盘必须在直通或RIAD 0模式下工作,如果服务器对这两种方式都支持,我们建议使用直通的方式。

最后是对网络的要求,网卡可以是10Gbps1Gbps,但是如果磁盘都是SSD的话,那么一定要采用10Gbps的网卡。对于vSAN集群中的主机,我们建议都采用本地存储。

vSAN组件及架构介绍

vSAN集群

vSAN是vSphere内置的软件,可以与VMware ESXi集成以创建分布式RAID。也就是说通过vSAN可以将众多主机的本地磁盘构建成分布式RAID,从而创建了相应的vSAN Datastore,虚拟机的数据实际上最终存储各个主机的本地磁盘上,因此我们称这个Datastore为vSAN存储

分布式复制存储

存储在本地的虚拟机数据借助以太网络实现复制。前面提到过物理服务器上的磁盘有两种类型,一种是用作SSD类型的读写缓存磁盘,一种是容量存储磁盘。实际上虚拟数据在落盘的时候是先到缓存层,然后后台再写入到容量层,正因为有了缓存层vSAN的效率才会如此之高。

磁盘组

磁盘组是vSAN的管理结构,其中包括一个缓存设备和一个或多个容量设备。如果服务器上既有机械磁盘又有SSD磁盘,那么可以构建一个混合磁盘组。完全是SSD的话,可以构建全闪存磁盘组。一般情况下一台服务器可以最多构建5个磁盘组,其中每个磁盘组中最多包含7个容量磁盘,1个SSD作缓存盘。

混合磁盘组中的SSD缓存磁盘,70%的容量用作读缓存,30%是写缓存。数据落盘的时候是先写到SSD,在后台不忙时再写入相对应的HDD容量磁盘。读的时候是先从70%的读缓存中读取,没有的话再通过后面的容量层读取。

对于全闪存磁盘组则是100%的缓存用于写缓存,这样可以延缓后台容量层磁盘的寿命。当然在创建磁盘组的时候管理员可以决定将哪些闪存设备用于容量层或缓存层。

vSAN数据存储

vSAN群集始终只有一个vSAN数据存储区,与群集中的磁盘和主机数量无关。当服务器构建vSAN集群之后,实际上就可以将所有的磁盘组融合在一起构建成vSAN DataStore。这里有一点需要注意,在使用最新版本构建vSAN集群的时候,一般不会将这些磁盘构建成磁盘组,而是会默认的构建一个0大小的vSAN DataStore。

vSAN和基于对象的存储

为了方便存储,vSAN将虚拟机分成了5种对象,分别是VMDK(磁盘文件)、VM内存、快照增量、VM交换、VM主命名空间。这些对象会按照相应的策略存储到后台不同主机的不同磁盘组中,以保证该虚拟机的可用性。

上图展示是这5种对象相对应的文件名,这些对象所应用的策略都是不太一样的。

这些对象由组件组成,以VMDK对象为例,可以看到它被分为了两个副本,图中所有被组件标签指向的都是组件。

这里详细的说下组件的定义。其实每个存储对象都是作为RAID树部署在vSAN中,RAID树的每个叶子都是一个组件。例如,一个带有两个条带的存储策略在两个磁盘上创建了一个VMDK条带。这里VMDK是对象,条带是该对象的组成部分。组件的最大大小为255GB,由 vSAN.ClomMaxComponentSizeGB 参数配置。

组件的生成是由相对应的RAID来实现的,vSAN目前支持的RAID技术有条带化(RAID 0)、镜像(RAID 1)、镜像加条带化(RAID 10)、擦除编码(RAID 5/6)。需要注意的是,应用于虚拟机的存储策略会影响vSAN存储虚拟机所需要的存储对象的数量。

vSAN数据存储的可访问性和加入方式

只有vSAN提供支持的集群的主机成员才能访问vSAN数据存储,但是集群中的主机可以访问其他的外部存储。对于整个vSAN集群的主机,我们建议都要提供本地磁盘。

虚拟机存储策略

前面提到过组件的生成以及RAID树的结构都是依靠策略来决定,而虚拟机的性能和可用性则是由RAID技术来决定。首先我们来看下RAID 1(镜像)技术。

镜像可以创建对象的多个副本,提高可用性。每个对象创建的副本数基于配置的虚拟机存储策略。目前vSAN支持二路、三路和四路镜像。

上图是应用了镜像技术之后虚拟机,可以看到RAID1下有两个组件,他们就是两个相同的副本,被恰好被分布在两台主机上。

RAID 0(条带化)主要解决的是性能问题,它将对象的数据拆分为多个条带。通过条带化可以由多个vSAN磁盘组同时支持一个数据请求,从而提高性能。原则上来说条带分的越多性能越好,但是一般不建议分段过多,因为对磁盘的消耗其实也是蛮高的。

RAID 1(镜像)和RAID 0(条带化)的结合可以提供可用性和性能上的双重优势。但是RAID 1的存在会对存储空间造成浪费,从上图中就可以明显的看出来。实际上可用性越高浪费的存储空间会越多。因此在vSAN的后续版本又支持了RAID 5 和RAID 6技术。

vSAN集群的配置

vSAN群集要求

要想实施vSAN首先要配置vSAN集群,vSAN可以在集群创建期间或集群创建之后启用,前提是要满足接下来提到的这些条件。首先至少要有三台ESXi主机(节点)并且具有所需的缓存和容量磁盘,即使是双节点配置,也要有见证主机。其次所有的主机都必须使用vSAN的VMware兼容性指南来验证硬件,同时还需要有一个连接到同一物理网络启用了vSAN流量的VMKernel端口。

配置VMkernel的vSAN网络

创建VMkernel端口是为了向vSphere主机和托管虚拟机提供2层和3层服务,类似于网卡上的物理端口。vSAN使用连接到虚拟网络的VMkernel端口在vSAN节点之间传递通信。

上图显示了两个具有3个VMkernel端口的主机。vmk3端口用于传递vSAN的通信量。

创建vSAN集群请执行以下操作:

1.验证是否满足适用于vSAN的VMware兼容性指南中规定的先决条件

2.启动“New Cluster”(新建集群)向导

3.为集群命名

4.选中vSAN对应的“Turn ON”(打开)复选框

5.选中磁盘申领模式

6.添加主机

除了使用上面的方式创建vSAN之外,也可在现有集群中启用vSAN,但必须要保证vSphere HA已禁用。

vSAN和vSphere HA

vSAN和vSphere HA的配合使用也要满足一些必要条件。首先vSAN集群中的ESXi主机必须是5.5版U1或更高版本。其次要按照特定顺序配置vSAN和vSphere HA,如上图所示:在启用vSphere HA之前,必须启用vSAN,在禁用vSAN之前,必须禁用vSPhere HA。

在vSAN集群中启用vSphere HA之后,vSphere HA代理间流量会流经vSAN网络而非管理网络,如果vSAN被禁用,vSphere HA流量将迁移回管理网络。

关于磁盘的申领模式

在6.6之前的vSAN版本允许自动或手动磁盘申领。6.6开始不再在创建集群时自动声明磁盘,它提供了在集群创建配置的其他功能。

磁盘的申领首先要选择对应的集群,在配置中找到相对应的节点,然后就可以声明磁盘或者直接创建磁盘。创建磁盘的时候可以选择不同的主机进行创建,被选中的主机会列出当前所有的空白磁盘。磁盘创建完成之后,可以在VMware vSphere Web Client中查看分配给磁盘组的磁盘。

vSAN核心策略解析

虚拟机存储策略保证了当前集群的可用性和性能,当可用性越高的时候整个虚拟机的容量占用也会相对更高。一台虚拟机也可以分配不同的策略,比如针对虚拟机的多个磁盘分别配置不同的策略。

vSAN有一个默认的虚拟机存储策略,当然也可以创建自定义存储策略。除非选择了不同的存储策略,否则将使用默认的策略。

可能有朋友对存储策略的概念比较模糊,其实用一句话就可以描述清楚。存储策略就是一个或者多个规则的集合,他们包括描述虚拟机存储要求的放置规则。

上图列出了存储策略的8个规则。接下会一个个进行详细的讲解。

容忍的故障数(Primary Level of Failure to Tolerate)

该值定义了存储对象可以容忍的主机、驱动器或网络故障的数量。默认情况下PFTT使用RAID 1来确保数据可用性,如果容许的故障数为n,则需要n+1个对象的副本,以及2n+1个主机提供存储。

容错方法(Failure Tolerance Method)

容忍失败的个数决定策略所涵盖的对象是否使用RAID 1、RAID 5或RAID 6。当容忍的失败个数为1时,使用RAID 1/5/6;失败个数为2时,使用RAID 1/6;失败个数为3时,只能使用RAID 1。如果要使用RAID 5/6,则必须是全闪磁盘组。

上图显示的是RAID 1和RAID 5/6在同一条件下的磁盘占用情况,可以看出RAID 5和RAID 6明显更加节省空间。

每个对象的磁盘条带数

存储对象的每个副本强制条带化的数量,默认情况下是1,最多为12,高于1的值可以提高性能,但也会导致系统资源更高的使用。在大多数部署中,条带为1的默认值是足够的。

闪存读缓存预留

预留的读缓存根据对象的逻辑大小的百分比来设定,默认情况下比值是0%,预留的闪存容量不能被其他对象使用,未预留的闪存容量在所有对象中公平的共享。要注意的是该设置对全闪存体系结构没有影响,主要还是用于混合架构。

强制资源调配

如上图所示,我们想要在3节点的集群上创建一条PFTT为2的策略,此时需要的副本数为3,如果容错技术是RAID 1,则至少需要5台主机。很明显现有的架构无法满足需求,这时就需要用到强制资源调配。它允许使用特定的存储策略创建虚拟机,尽管集群中没有足够的磁盘和主机。实际上是进行了降级,将PFTT设置为0,条带数设置为1。

对象空间预留

对象空间预留是在调配时保留的VMDK对象的逻辑大小百分比,默认值是0%。再启用重复数据消除和压缩时,对象空间预留必须位于0或100%。在启用重复数据消除和压缩后,0和100%是唯一兼容的选项。

对象的IOPS限制 & 禁用对象验和

对象IOPS限制是在vSAN6.2之后才新增的,它限制了对象可以使用的IOPS。

禁用对象验和也是在vSAN6.2之后才新增,默认为开启状态。有时候虚拟机的磁盘会由于硬件或软件上的因素造成数据损坏,默认情况下vSAN会后台重新构建副本。

再调配过程中应用虚拟机存储策略

以上就是全部的8条规则,这些规则组合之后其实就是一个策略。既可以在已有的虚拟机中更改策略,也可以在创建虚拟机的时候采用新策略。

vSAN应用案例和常见使用场景

目前带有vSAN的vSphere支持多种使用场景,包括关键业务应用、虚拟桌面基础架构、测试和开发、第2层/第3层应用、备份和灾难恢复、管理集群、DMZ/隔离区等等。

上图是vSAN在中国市场的客户行业和应用分布,可以看到使用场景最多的是在生产系统中。

这里列出了vSAN的一些主要使用场景和案例,同时对于为何要应用vSAN进行了一些分析。

今天的分享就到这里,谢谢大家!

精彩预告

7月17日,VMware精彩直播分享第二期还在继续,赶紧来报名

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180705A1R2TP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券