最近几年来,企业存储系统的发展停滞不前,缺乏创新,已经成为数据中心或企业环境之中最保守的组件。与传统外置存储主要依靠硬件组件冗余的方式来确保高可用性不同,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,则可能产生较好的性能,但也会导致使用较多的系统资源。默认值 1 ,最大值 12 。
在混合环境中,磁盘带分散在磁盘中。对于全闪存配置,会在构成容量层的闪存设备中进行条带化。确保您的 vSAN 环境提供了足够的容量设备以容纳请求。
没有特殊情况, 不要随意修改此参数值!虽然它可能会提升读写性能,也要三思。
把虚机对象分成多个条带 (stripe) 分布存储在多个硬盘上,这样有助于提高数据读取的性能。在下图的例子中,所示的虚机被分为两个条带 a 和 b 进行存储;因为同时又采用了 Raid-1,所以虚机对象又被保存了两个副本,一个副本在服务器 ESX01 的磁盘组中,另一个副本存放在位于服务器 ESX02 和 ESX03 上的磁盘组中。
对象条带数实际上就是 Raid-0 的概念,只不过我们在定义 Raid-0 的配置时,更多使用的是条带宽度 (stripe width) 的概念,条带宽度是指每一块条带块的大小,条带数量取决于组成 Raid-0 阵列的磁盘数量。
vSAN虚拟机并不会优先使用本机磁盘组,它是随机的。
允许的故障数是与可用性有关的,容错模式与磁盘容量有关的。
允许的故障数定义虚拟机对象允许的主机和设备故障的数量。如果允许 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对存储容量的影响:
※ 我们并不是仅仅根据此来配置磁盘组容量,还需要考虑其他的一些信息,比如还有如下:
定义对象(例如 VMDK)的 IOPS 限制。IOPS 使用加权大小计算,表示为 I/O 操作数。如果系统使用的默认基本大小为 32 KB,则 64-KB I/O 表示两个 I/O 操作。
计算 IOPS 时,读取和写入同等对待,但不考虑缓存命中率和顺序性。如果磁盘的 IOPS 超过此限制,将限制 I/O 操作。如果对象的 IOPS 限制设置为 0,将不会强制执行 IOPS 限制。
如果该选项设置为是,则即使数据存储不满足存储策略中指定的允许的故障数主要级别、每个对象的磁盘带数和闪存读取缓存预留策略,也会置备该对象。该参数可在引导时以及在出现故障无法再进行标准置备时使用。
默认值否对于大多数生产环境都是可接受的。当不满足策略要求时,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)。