VSAN的虚拟机存储策略
VSAN的虚拟机存储策略有5种功能,或者说5种规则(Rule)。从各家磁盘阵列厂商对Virtual Volumes的支持,我们可以看到VMware SPBM所涵盖的规则要比VSAN的5个规则丰富得多,随着VSAN在数据服务(Data Services,也即存储功能)的不断发展,未来会支持更多的规则。在新的VSAN版本里,去重、纠删码、QoS(IOPS Limit),也放到了存储策略里。

在VSAN里,每个定义好的策略其实就是5种规则的组合,也即规则集(Rule-Set)。下图我们可以看到这5种规则,后面会按照图中下拉列表的从上至下的顺序详细介绍各个规则的含义。

VSAN的虚拟机存储策略的5种规则

1)每个对象的磁盘带数(SW)

Number of disk stripes per object :每个对象的磁盘带数(Stripe Width,简写为SW)是指,虚拟机对象的每个副本所横跨的持久化层的盘的数量,也即每个副本的条带宽度。值如果大于 1,则可能产生较好的性能,但也会导致使用较多的系统资源。

虚拟机存储策略之条带宽度

在混合配置中,条带分散在磁盘中。在全闪存配置中,可能会在构成持久化层的SSD中进行条带化。

需要强调的是,VSAN目前主要是靠缓存层的SSD,来确保性能。所有的写操作都会先写入缓存层的SSD,因此增大条带宽度,不一定就带来性能的提升。只有混合配置下的两种情况,能确保增加条带宽度可以增加性能:一是写操作时,如果存在大量的数据从SSD缓存层Destage(刷)到HDD;二是读操作时,如果存在大量的数据在SSD缓存层中没有命中。因为,多块HDD的并发能在这两种情况下提升性能。

默认值为 1。最大值为 12。VMware不建议更改默认的条带宽度。

2)闪存读取缓存预留

Flash read cache reservation (%) :闪存读取缓存预留是指作为虚拟机对象的读取缓存预留的闪存容量,数值为该虚拟机磁盘(VMDK) 逻辑大小的百分比,这个百分比的数值最多可以精确到小数点后4位,例如2 TB的VMDK,如果预留百分比为0.1%,则缓存预留的闪存容量是2.048 GB。预留的闪存容量无法供其他对象使用。未预留的闪存在所有对象之间公平共享。此选项应仅用于解决特定性能问题。

全闪存配置不支持此规则,因此在定义虚拟机存储策略时,您不应更改其默认值。VSAN仅支持将此属性用于混合配置。 无需设置预留即可获取缓存。默认情况下,VSAN将按需为存储对象动态分配读取缓存。这是最灵活、最优化的资源利用。因此,通常无需更改此参数的默认值 0。

如果在解决性能问题时要增加该值,请小心谨慎。如果在多个虚拟机之间过度分配缓存预留空间,则需小心是否可能导致SSD空间因超额预留而出现浪费,且在给定时间无法用于需要一定空间的工作负载。这可能会影响一些性能。默认值为 0%。最大值为 100%。

3)允许的故障数(FTT)

Number of failures to tolerate :允许的故障数(以后简称为FTT)定义了虚拟机对象允许的主机和设备故障的数量。如果FTT为 n,则创建的虚拟机对象副本数为 n+1,见证对象的个数为n,这样所需的用于存储的主机数为副本数+见证数 = n+1 + n = 2n+1。

前面多次提到的副本数为2,表示的就是最多允许一台主机出故障,也即FTT值为1,此时主机数最少为3。截止VSAN 6.1版,FTT的最大值为 3,也即最多4份副本。

为虚拟机分配存储资源时,如果未选择存储策略,则VSAN将使用默认的虚拟机存储策略,默认策略规定了FTT为1。

虚拟机存储策略之允许的故障数

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

如果不希望VSAN保护虚拟机对象的单个镜像副本,则可以将FTT指定为 0。但是,主机在进入维护模式时,可能会出现异常延迟。发生延迟的原因是VSAN必须将该对象从主机中逐出才能成功完成维护操作。将FTT设置为 0 意味着您的数据不受保护,并且当VSAN群集遇到设备故障时,您可能会丢失数据。

VSAN的FTT默认值为 1。最大值为 3。

4)强制置备

Force provisioning :如果强制置备设置为是(yes),则即使现有存储资源不满足存储策略,也会置备该对象。这样,在虚拟机Summary页和相关的虚拟机存储策略视图中,这台虚拟机会显示成不合规(Not Compliant)。

虚拟机存储策略之强制置备,呈现出来的不合规(Not Compliant)

强制置备允许VSAN在虚拟机初始部署期间违反 FTT、条带宽度和闪存读取缓存预留的策略要求。VSAN将尝试找到符合所有要求的位置。如果找不到,它将尝试找一个更加简单的位置,即将要求降低到FTT=0、条带宽度=1、闪存读取缓存预留=0。这意味着VSAN将尝试创建仅具有一份副本的对象。不过,对象依然遵守对象空间预留(下面会详细介绍)的策略要求。

VSAN 在为对象查找位置时,不会仅仅降低无法满足的要求。例如,如果对象要求FTT=2,但该要求得不到满足,那么VSAN不会尝试 FTT=1,而是直接尝试 FTT=0。同样,如果要求是FTT=1、条带宽度=10,但VSAN没有足够的持久化盘容纳条带宽度=10,那么它将退回到 FTT=0、条带宽度=1,即便策略FTT=1、条带宽度=1 也许能成功。

使用强制置备虚拟机的管理员需要注意,一旦附加资源在群集中变得可用,如添加新主机或新磁盘,或者处于故障或维护模式的主机恢复正常,VSAN可能会立即占用这些资源,以尝试满足虚拟机的策略设置,也即朝着合规的方向努力。

默认值为否(no),这对于大多数生产环境都是可接受的。当不满足策略要求时,VSAN可以成功创建用户定义的存储策略,但无法置备虚拟机,如下图的警告信息表示,需要3台主机提供存储,而目前在集群里只发现两台。虚拟机存储策略之强制置备,存储容量不够无法创建虚拟机。

5)对象空间预留

Object space reservation (%):对象空间预留是指部署虚拟机时应预留或厚置备的虚拟机磁盘(VMDK)对象的逻辑大小百分比。默认值0意味着部署在VSAN上的所有对象都是精简置备的,一开始不占任何空间,只有当数据写入后,才会按存储策略动态占据vsanDatastore的空间。

默认值为 0%。最大值为 100%。当对象空间预留设置为100%时,虚拟机存储对空间的要求会被设为厚置备延迟置零(LZT,Lazy Zeroed Thick)格式。

存储策略的使用

1)系统默认的存储策略

下图我们可以看到VSAN的5个规则在默认情况下表示的含义,分别是:

FTT=1,也即副本数为2,这样写满100GB的VMDK,实际要消耗200GB的存储空间;

条带宽度为1,也即每个副本只横跨一块持久化盘;

强制配置为否;

对象空间预留为0%(也即精简配置);

闪存读取缓存预留为0.0000%(也即不预留)。

VSAN虚拟机存储策略的默认值

2) 分配虚机时选择存储策略

VMware的基于存储策略的管理,使得管理员可以更多地关注业务应用,围绕着业务应用/虚机为中心,而不是围绕着存储为中心,从上至下的自动化地分配存储资源。存储管理员可以从以往重复繁琐枯燥的卷管理、LUN映射、VMFS格式化、建Datastore的工作中解脱出来,专注在更高级的工作中,也即根据不同的工作负载对存储性能、可用性、容量的要求,创建存储策略。存储策略创建好后,能够适用于同类工作负载的不同虚机。

如下图,创建的存储策略有,Print Server,Tier 2 Apps,VDI-Desktops。当vSphere管理员需要创建虚机,或者给已有虚机创建新的VMDK时,就可以根据存储管理员事先创建好的存储策略,或者系统默认的存储策略,进行选择了。这样,就极大地减少了各个管理员交互的时间和工作量,使得存储资源的部署非常便捷。

3) 变更存储策略非常简单

我们知道,用户的业务应用种类很多,有些业务应用可能在某一个特定时间段需要通过变更存储资源,去应对高峰时刻或关键时刻所需的高性能、高可用性。传统存储需要好几个步骤,甚至需要停顿业务,才能变更存储策略。而VSAN非常简单,只需创建新存储策略,并施加到(Apply)虚机,即可。