容量设备故障解析:
磁盘故障可能是任何存储环境中最常见的故障了,vsan也不例外。磁盘组是vSAN的管理结构,其中包括一个缓存设备和一个或多个容量设备,其容量设备的磁盘多为SATA盘。一台主机可以为VSAN提供最多 5 个磁盘组:每个磁盘组需要 1 个 SDD 以及最少 1 个、最多 6 个HDD。每个主机的最多 HDD 数为 5 x 6 = 30。每个主机的最多 SSD 数为 5 x 1 = 5。
在日常运维中,一般采用精简配置,虚拟机的虚拟磁盘仅占用实际数据的使用空间,大量地节省了成本。但是,在无人监控、空间快速增长的情况下,可能会发生存储空间超额分配,引发业务应用性能下降,甚至无法工作。

那么VSAN如何处理容量磁盘故障呢?如果故障发生时,正好在磁盘上有一个读或写的操作会发生什么呢?下面解析下vsan的容量设备故障。
vsan的容量设备故障和缓存设备故障分析
如图,比如exsi-03上的一个容量存储组件返回一个读错误,那么VSAN就会去检查是否存在副本组件,如果有则从那个副本上读取。默认情况下,每个对象被创建时都配置成FTT为1,这意味着每个对象总有2个完全一样的副本组件可用。故障发生在读取时,有2种不同的情况,第一种情况可以修复,第二种情况则无法修复。当问题是可以修复的时候,I/O错误会被汇报给对象的属主,对象的属主则会发起组件重构。当组件重构完成时,故障组件会被删除。然而,如果因为某种原因,没有副本组件存在时,VSAN就会报告这个虚拟机出现了I/O错误。
如果是返回一个写错误,也会传送到对象属主,组件会被标注为“已降级”并会在VSAN群集中另外的磁盘上触发组件重构。当组件重构完成时,群集目录会被更新。注意,闪存设备(它没有出错)会继续用缓存来提供读取服务。
最初的vsan版本中,在某一个组件或多个组件因故障而处以重建过程中时,vsphere web客户端并没有显示有多少数据需要同步。但从vsan6.0起,vsphere web客户端提供了在故障发生时监控数据同步状况的功能,比如它会显示正在重新同步的组件数量、重新同步的剩余字节数以及完成重新同步所需要的时间。
注:当磁盘容量全满时,vSAN会暂停写数据并为写请求申请新的磁盘空间,如果未及时添加新的磁盘,则vsan写操作会出现错误,引发虚拟机I/O错误。

缓存设备故障解析:
如果缓存设备SSD不可访问会发生什么情况?当缓存设备不可访问时,同一个磁盘组中那个缓存设备支持的所有容量设备都会无法被访问。缓存设备故障等同于缓存设备背后的所有容量设备故障。从本质上说,当一个缓存设备故障时,整个磁盘组被认为是“已降级的”。如果VSAN群集中有多余的容量,它就会试图在另一台主机或磁盘上重新配置存储对象。因此,从架构决策角度看,根据使用的主机类型不同,创建多个小的磁盘组可能会比单个大磁盘组好,因为一个磁盘组可以被视为一个故障域。
注:VSAN采用电梯算法周期性地将缓存层内写缓存中的数据按照地址顺序“冲刷”进磁盘中,这是一个能进行自我调整的算法,它决定了SSD回写到磁盘的频率。当exsi-01虚拟机中的应用程序发起一个写操作时,对象属主会克隆这个写操作。并发的写请求通过万兆网络发往exsi-02和exsi-03上的写缓存,当数据写入缓存时,写就被确认了,此时SSD上的准备操作就完成了。属主等待所有2台主机的ACK信号后完成I/O。稍后这个写入会作为批量处理的一部分最终回写到磁盘上。各主机的回写操作都是相互独立的,也就是说,exsi-02和exsi-03上的回写操作时间可能是不同的。这是因为不同主机的情况不同,比如缓存空间填满的速度、剩余空间的大小以及数据将存放在磁盘的什么地方都可能是不同的。

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

2、规划额外容量,用于处理潜在故障或替换容量设备、磁盘组和主机。当某个容量设备无法访问时,vSAN 会在群集中的其他设备中恢复组件。当闪存缓存设备出现故障或移除时,vSAN 会从整个磁盘组中恢复组件。

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

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

5、如果规划使用软件校验和或去重和压缩等高级功能,请保留额外的空间以处理操作开销。

问题补充:
SSD 拥堵问题引发VSAN夯住。这时特定磁盘组的写入 IO 的活动工作集显著大于该磁盘组缓存层的大小时,通常会引发 SSD 拥堵,继而引发VSAN群集夯住。在混合和全闪存 vSAN 群集中,数据首先写入到写入缓存(也称为写入缓冲区)。一个称为降级转储的进程会将数据从写入缓冲区移至容量磁盘。写入缓存承受较高的写入速率,从而确保写入性能不受容量磁盘的限制。不过,如果以非常快的速率填充写入缓存,降级转储进程可能跟不上到达 IO 的速率。在这种情况下,会引发 SSD 拥堵,需要指示 vSAN DOM 客户端层将 IO 减速到 vSAN 磁盘组可以处理的速率。

补救措施:要避免 SSD 拥堵,请调整所用的虚拟机磁盘的大小。为达到最佳效果,我们建议虚拟机磁盘(活动工作集)的大小不超过所有磁盘组写入缓存累计大小的 40%。请注意,对于混合 vSAN 群集,写入缓存的大小为缓存层磁盘大小的 30%。在全闪存群集中,写入缓存的大小是缓存层磁盘的大小,但不应超过 600 GB。如果超限大量写入,容易引起VSAN群集夯住,容量层磁盘也将会无法被访问。