存储策略 (Storage Policy) 是管理员定义的一组规则,这组规则定义了数据对象在 vSAN 存储上是如何保存的,存储策略定义了数据存储的可靠性、访问性能等特性。vSAN 提供了基于存储策略的存储管理 SPBM (Storage Policy-Based Management),管理员创建多个存储策略,利用 SPBM 来对 vSAN 存储进行灵活地管理,SPBM 是 vSAN 的一个重要特色。
对象磁盘条带数 (Number of disk stripes per object)
把虚机对象分成多个条带 (stripe) 分布存储在多个硬盘上,这样有助于提高数据读取的性能。在下图的例子中,所示的虚机被分为两个条带 a 和 b 进行存储;因为同时又采用了 Raid-1,所以虚机对象又被保存了两个副本,一个副本在服务器 ESX01 的磁盘组中,另一个副本存放在位于服务器 ESX02 和 ESX03 上的磁盘组中。
对象条带数实际上就是 Raid-0 的概念,只不过我们在定义 Raid-0 的配置时,更多使用的是条带宽度 (stripe width) 的概念,条带宽度是指每一块条带块的大小,条带数量取决于组成 Raid-0 阵列的磁盘数量。vSAN 中对象条带数缺省为1 (建议不要改动这个值),最大值为12。把这个值设置成大于1能够提高系统性能,但是会引起更多的资源消耗。
读缓存预留 (Flash read cache reservation %)
无论是机械硬盘和 SSD 组成的混合架构,还是由高速 SSD 和普通 SSD 组成的全闪存架构,vSAN 都会把两种设备中性能更高的那种设备用作读写缓存,从而来提高整个系统的性能。这个参数指定了为虚机对象保留的缓存 SSD 空间占比 (相对于虚机大小),缺省为0% ;建议一般情况下不要改动这个值,仅当特定情况下需要提高性能时才改动。
对象空间预留 (Object space reservation %)
vSphere 在创建虚机时虚拟硬盘有三种格式可以选择:
对象空间预留参数定义了创建虚机对象时,如果虚机采用的是 Thin Provision 方式的话,必须为虚机保留的存储空间比例 (相对于虚机的大小)。
可以忍受的故障数 FTT (Failure to Tolerate)
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% 的存储空间。
vSAN 中的 Raid-5/6 也称之为纠删码 (Erasure Coding),我们可以把它理解成一种跨服务器的 Raid 阵列实现。
IOPS (Input / Output Per Second) 限制
IOPS 是衡量存储性能的一个重要指标,vSAN 通过为虚机指定 IOPS 限制值,来控制虚机可以获得的存储访问 QoS (Quality of Service) 服务质量等级。通过这个值的设定可以限制某些非关键应用虚机对于 vSAN 性能的占用,从而保证关键应用虚机的存储访问性能。
校验和 (checksum) 验证
校验和 (checksum) 是在数据处理和数据通信领域中,用于校验数据正确性的一种方法:把数据的各个位数累加起来,在处理数据结束之后根据这个数值判断是否接收到的数据是否正确,如果数值匹配那么说明数据被正确地处理了。校验和通常是以十六进制为数制表示的形式来进行计算,如十六进制串: 0102030405060708 的校验和是 24 (十六进制,十进制累加结果为36)。
vSAN 在写入数据时同时也写入该数据的校验和,作为日后比对的依据。打开该功能时,vSAN 在后台执行磁盘扫描 (Disk Scrubbing),如果通过校验和验证发现了错误,则重建数据,能够自动检测和解决静态磁盘错误 (silent disk errors)。
强制调配 (Force Provisioning)
当存储策略中设定的规则不能满足时,vSAN 也可以强制为虚机分配存储空间,保证在一些极端条件下 (如存储空间不够) 也能够为虚机分配空间,让系统能够正常地运行下去。
定义存储策略
存储策略必须在虚机创建之前建立,这样才可以在虚机创建时选择使用;当然 vSAN 有缺省的存储策略,如果没什么特殊需求的话,就可以使用缺省的策略。下图示意了虚机存储策略是如何被创建的,创建之后就可以在 web client 管理控制台中看到 vSAN 集群中现有的存储策略。
使用存储策略
接下来就可以在创建虚机的时候指定它所使用的存储策略了,或是修改现有虚机的存储策略。下图示意了修改一个虚机存储策略的过程,管理员修改了虚机的存储策略后,vSAN 会根据新的策略来调整虚机数据的存储布局,以符合新的存储策略的要求。
检查存储策略的合规性 (Compliant)
管理员也可以去检查虚机对象的存储是否符合存储策略的规定,合规 (Compliant) 的意思就是 vSAN 存储满足了存储策略定义的要求。在存储空间资源短缺的情况下,也会产生不合规的情况,例如要求采用镜像来保存虚机对象,如果其他服务器上没有足够空间的话,结果只保存了一份虚机对象副本。如果出现不合规情况的话,就意味着数据对象没有得到应有的安全保护,也有可能是存储策略设置得不合理,管理员就要立即采取行动,找出造成违规的原因。