暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

vSAN主机数量如何规划

云存储技术交流 2018-12-20
3119

在VMware VSAN通常允许故障主机数是对存储容量以及主机数量影响最大的因素。基于对VM的可靠性需求,设定不同的存储策略,最多可以致使一个VM占用与之前相比四倍的磁盘空间。

总结:本文旨在不考虑客户环境性能方面以及存储容量方面去规划主机数量。

在全闪和混合模式下,非特殊情况下主机数量需要满足2N+1的原则。在全闪情况下,如果使用纠删码,需要结合允许故障主机数和纠删码共同确定VSAN集群主机数量。


允许故障数(FTT)

FTT(Number offailures to tolerate,允许的故障数)定义了虚拟机对象允许主机和设备故障的数量,默认值为1,最大值为3。如果FTT为n,则创建的虚拟机对象副本数为n+1,见证对象的个数为n,这样所需的用于存储的最少主机数等于n+1 + n = 2*n+1,即主机数= 副本数 + 见证数。

若FTT值为1,表示最多允许一台主机出现故障,则副本数为2,此时主机数最少为3;当然,FTT的最大值为3,也即最多允许3台主机出现故障,最多有4份副本,最少需要7台主机。

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


副本

vSAN的副本(copies/replicas),与我们平常的理解不太一样。vSAN没有主数据的概念,同样的数据有三份,就是三份副本,而非一份主数据再加两份副数据。


纠删码

       vSAN的纠删码必须在全闪架构下同时采购了高级版以上的许可,才能进行相关设置,原来FTT=1时,需要跨网络做数据镜像,类似RAID 1,存储利用率较低。采用Erasure Coding能够提高存储利用率,它类似跨网络做RAID 5或RAID 6。VSAN可以在VMDK的颗粒度上实现Erasure Coding,可在SPBM里设置。


FTT=1,需要3台以上的主机

为虚拟机分配存储资源时,如果未选择存储策略,则VSAN将使用默认的虚拟机存储策略,即FTT为1。下图就是FTT=1的示意图。


FTT=2,需要5台以上的主机

曾有用户质疑:“请解释vSAN三副本(FTT=2,也即最多允许2台主机出故障),为什么需要5台以上的主机?我们需要的不只是官方要求(官方文档中,允许最少主机数量=2n+1,n代表最多允许故障的主机数量),还需要知道具体的设计原理。“

其实这样做主要是为了防止脑裂。假设脑裂后分成两个断开的子集群,如果要保证某个子集群接管数据服务,则该子集群的主机数必须大于原集群主机数的50%。这也表明,主机的最小数量一定是一个奇数。

通俗来讲,四台主机不能处理两台主机出错,因为可能会出现脑裂。比如有四台主机A、B、C、D。如果出现网络分区,A和B不能联系C和D。这时外界看来只是两台主机出现故障,按照FTT=2的要求必须允许读写继续进行。两边都有两台主机,所以两边都觉得自己可以进行读写,这样就会造成两边的数据不一致(俗称脑裂)。解决脑裂的办法是必须要求能接管读写的子集群的主机数量大于原集群总数量的50%。集群主机总数是奇数,这样就不可能出现两个子集群都满足条件的情况了。

FTT=3,需要7台以上的主机

用户又问:“如果最多允许3台主机出故障,那么需要3+1台主机做副本节点,再加1台主机做见证(也即仲裁)节点,总数5台主机不就可以了吗,为何需要7台主机?“

之后我陷入了长长的思考,这使我想到为何不可以是2n-1,或者2n-3。我觉得可以总结成:假设n表示最多允许n台主机出故障,如果n+1台主机都放副本数据,这只能保证数据不丢失。而对于企业级存储而言,数据不丢失只是最低限度,除此之外,还需要保证数据的持续可访问,即HA。

纠删码,需要几台以上的主机

RAID-5 的Erasure Coding模式最大允许一台主机故障,它要求至少4台主机。以往FTT=1时,存储容量的开销是数据的两倍,现在只需要1.33倍的开销,举例来说,以往20GB数据在FTT=1时消耗40GB空间, 采用RAID-5 的ErasureCoding模式后,消耗约为27GB。

RAID-6的Erasure Coding模式最大允许两台主机故障。它要求至少6台主机。以往FTT=2时,存储容量的开销是数据的3倍,现在只需要1.5倍的开销,举例来说,以往20GB数据在FTT=2时消耗60GB空间, 采用RAID-6的Erasure Coding模式后,消耗约为30GB。



故障域

故障域是可能发生硬件故障的主机集合。故障域可以设为单台主机、一个stack的主机、整个机架的主机、一排机架的主机、一个数据中心的主机。

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

文章转载自云存储技术交流,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论