最近几年来,企业存储系统的发展停滞不前,缺乏创新,已经成为数据中心或企业环境之中最保守的组件。与传统外置存储主要依靠硬件组件冗余的方式来确保高可用性不同,vSAN依靠的是被互联网分布式系统验证过了的多副本方式。

vSAN 提供了基于存储策略的存储管理 SPBM (Storage Policy-Based Management),管理员创建多个存储策略,利用 SPBM 来对 vSAN 存储进行灵活地管理,SPBM 是 vSAN 的一个重要特色。vSAN 存储策略定义了虚拟机的存储要求。这些策略确定如何置备和分配数据存储内的虚拟机存储对象,以保证达到要求的服务级别。

在这里插入图片描述


在主机群集上启用 vSAN 后,将创建一个 vSAN 数据存储,并且会为该数据存储分配默认存储策略。这个vSAN 数据存储中存放着5类虚拟机的对象,分别是NameSpace、VMDK、快照、内存以及交换文件。

#

vSAN Object

Traditional VM Files

1

VM Home Namespace

.nvram,.vmsd,.vmx,.log

2

VMDK

-flat.vmdk

3

VM Swap

.vswp

4

Snapshot delta

-delta-00000#.vmdk

5

VM Memory

.vmem

如果您未向虚拟机分配存储策略,则 vSAN 将分配默认策略。在默认策略中, 允许的故障数主要级别设置为 1,每个对象有一个磁盘带,另外还有一个精简置备的虚拟磁盘。

默认vSAN策略导航路径:虚拟机存储策略 > vSAN 默认存储策略 > 管理 > 规则集 1: VSAN

在这里插入图片描述


※ 虚拟机交换对象和虚拟机内存对象收到强制置备设置为的 vSAN 默认存储策略。

可以通过存储策略来给不同的对象区分不同的服务,例如:

  • 虚拟机1 设置存储策略A (FTT=1,不预留缓存,限制IOPS为100)

  • 虚拟机2 设置存储策略B(FTT=2,预留10%的ssd缓存,不限制IOPS)

vSAN存储策略说明

在这里插入图片描述

对象磁盘条带数 (Number of disk stripes per object) => 与性能有关

虚拟机对象的每个副本在其上进行条带化的容量设备的最低数量。值如果大于 1,则可能产生较好的性能,但也会导致使用较多的系统资源。默认值 1 ,最大值 12 。

在混合环境中,磁盘带分散在磁盘中。对于全闪存配置,会在构成容量层的闪存设备中进行条带化。确保您的 vSAN 环境提供了足够的容量设备以容纳请求。

没有特殊情况, 不要随意修改此参数值!虽然它可能会提升读写性能,也要三思。

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

对象条带数实际上就是 Raid-0 的概念,只不过我们在定义 Raid-0 的配置时,更多使用的是条带宽度 (stripe width) 的概念,条带宽度是指每一块条带块的大小,条带数量取决于组成 Raid-0 阵列的磁盘数量。

在这里插入图片描述


vSAN虚拟机并不会优先使用本机磁盘组,它是随机的。

允许的故障数主要级别 (PFTT) 与 容错模式 (FTM)

允许的故障数是与可用性有关的,容错模式与磁盘容量有关的。
允许的故障数定义虚拟机对象允许的主机和设备故障的数量。如果允许 n 个故障,写入的每条数据存储在 n+1 个位置,如果使用 RAID 5 或 RAID 6,还包括奇偶校验副本。默认值为 1。最大值为 3。

如果已配置故障域,则需要 2n+1 个故障域,且这些故障域中具有可提供容量的主机。不属于故障域的主机会被视为位于其自己的单主机故障域中。

※ 故障域,vSAN支持配置故障域,当vSAN群集阔玥数据中心的多个机架或刀片服务器机箱时,可以防止主机出现机架或机箱故障。默认每台主机是一个故障域。

FTT (Failure to Tolerate) 是定义数据保护等级的一个重要参数,FTT = 1 意味着可以忍受一个节点的故障。跟 FTT 紧密相关的另一个参数是容错方法 FTM (Failure Tolerance Method),FTM 也定义了数据布局的方式,vSAN 中的 FTM 主要有 Raid-1、Raid-5 和 Raid-6 这几种。

Raid-1 就是镜像 (Mirroring),在另一台服务器的磁盘组上保存数据的副本,当其中一台服务器发生故障时,也可以保证数据不丢失。下图展示了 Raid-1 的工作原理,同一个数据对象存在两个副本分别存放在两台服务器上,这种情况下对应 FTT = 1。

在这里插入图片描述

Raid-5 跟传统的 Raid 5 磁盘阵列类的概念类似,只不过阵列不是由同一台服务器上磁盘组成,而是由多台服务器上的磁盘组成,通过增加奇偶校验块来提高数据的容错能力。Raid-5 最少要求4个服务器节点,可以实现 FTT = 1 的容错要求。跟 Raid-1 相比,Raid-5 可以至少节省 30% 的存储空间。

在这里插入图片描述

Raid-6 的工作原理跟 Raid-5 类似,只不过采用了双份的奇偶校验块,从而使数据的容错能力进一步提高。Raid-6 最少要求6个服务器节点,可以实现 FTT = 2 的容错要求。跟 Raid-1 相比,Raid-6 可以至少节省 50% 的存储空间。

在这里插入图片描述


如下是我整理的各种FTT与FTM对存储容量的影响:

在这里插入图片描述

※ 我们并不是仅仅根据此来配置磁盘组容量,还需要考虑其他的一些信息,比如还有如下:

  • 至少留有 30% 的未使用空间,以防止 vSAN 重新平衡存储负载。只要单个容量设备上的消耗达到 80% 或以上,vSAN 就会重新平衡群集中的组件。重新平衡操作可能会影响应用程序的性能。要避免这些问题,存储消耗应低于 70%。

  • 预留额外容量以确保 vSAN 在出现主机故障或主机进入维护模式时恢复组件。例如,置备具有足够容量的主机,以便留有足够的可用容量供可在主机出现故障或维护期间成功进行重新构建组件。存在三个以上的主机时这非常重要,这样您才有足够的可用容量来重新构建故障的组件。如果主机出现故障,将在其他主机的可用存储上进行重新构建,这样可以允许再次出现故障。但是,在三主机群集中,如果将允许的故障数主要级别设置为 1,则 vSAN 不会执行重新构建操作,因为在一个主机出现故障后,群集中只剩下两个主机。要允许故障后重新构建,至少必须有三个主机。

  • 提供足够的临时存储空间,以便在 vSAN 虚拟机存储策略中进行更改。动态更改虚拟机存储策略时,vSAN 可能会为组成对象的副本创建一个布局。当 vSAN 实例化这些副本并将其与原始副本进行同步时,群集必须临时提供额外空间。

  • 如果规划使用软件校验和或去重和压缩等高级功能,请保留额外的空间以处理操作开销。启用去重和压缩功能以及软件校验和,则每个设备需要约 6.2% 容量的额外开销。

对象的 IOPS 限制(IOPS limit for object)

定义对象(例如 VMDK)的 IOPS 限制。IOPS 使用加权大小计算,表示为 I/O 操作数。如果系统使用的默认基本大小为 32 KB,则 64-KB I/O 表示两个 I/O 操作。
计算 IOPS 时,读取和写入同等对待,但不考虑缓存命中率和顺序性。如果磁盘的 IOPS 超过此限制,将限制 I/O 操作。如果对象的 IOPS 限制设置为 0,将不会强制执行 IOPS 限制。

强制置备(Force provisioning)

如果该选项设置为是,则即使数据存储不满足存储策略中指定的允许的故障数主要级别、每个对象的磁盘带数和闪存读取缓存预留策略,也会置备该对象。该参数可在引导时以及在出现故障无法再进行标准置备时使用。
默认值否对于大多数生产环境都是可接受的。当不满足策略要求时,vSAN 无法置备虚拟机,但是可以成功创建用户定义的存储策略。

[20191205补充知识]
组件数量说明

首先是PFTT等于0(容错为0),FTM为RAID 1,条带为1的情况,此时的硬盘会写1个组件,因为只有1份拷贝。

在这里插入图片描述


PFTT等于1(容错为1),FTM为RAID 1,条带为1的情况下,硬盘会写2个组件(拷贝为2)。

在这里插入图片描述


PFTT等于2(容错为2),FTM为RAID 1,条带为1的情况下,硬盘会写3个组件。需要注意的是这里的witness会有两个。

在这里插入图片描述


PFTT等于1(容错为1),FTM为RAID 1,条带为2的情况下。因为这里的数据有2份拷贝,所以有2个Mirror,同时条带又为2,因此Mirror将会被拆成两份。总结起来一共有4个组件。

在这里插入图片描述


PFTT等于2(容错为2),FTM为RAID 1,条带为3的情况下。根据上面的计算规律可以很轻松的计算出,此时的组件数量应该为9。

在这里插入图片描述

组件大小说明:
默认情况下组件最大为255G,如果某个VMDK对象大小超过255G,就会被平均拆成多份。

PFTT等于1(容错为1),FTM为RAID 1,条带为1的情况。此时由于硬盘大小为400G,超过了默认的255G,所以每个盘会被拆分成两份,每份200G。一共是4个组件。

在这里插入图片描述

这里是PFTT等于0(容错为0),FTM为RAID 1,条带为1的情况,因为是600G的硬盘,所以要被平均拆分成3份(注:是每个不超过255G)。

在这里插入图片描述