vsan的容量设备故障和缓存设备故障分析

Wesley13
• 阅读 1076

容量设备故障解析:
磁盘故障可能是任何存储环境中最常见的故障了,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群集夯住,容量层磁盘也将会无法被访问。

本文同步分享在 博客“xjsunjie”(51CTO)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
DevOpSec DevOpSec
3年前
磁盘问题定位与解决
磁盘问题定位基本流程:磁盘的压力分析,主要使用下面几个性能计数器(针对单独的物理盘,每个物理磁盘都会有一组):1.Avg.DiskReadQueue
御弟哥哥 御弟哥哥
3年前
RAID在数据库存储上的应用
随着单块磁盘在数据安全、性能、容量上呈现出的局限,磁盘阵列(RedundantArraysofInexpensive/IndependentDisks,RAID)出现了,RAID把多块独立的磁盘按不同的方式组合起来,形成一个磁盘组,以获得比单
Wesley13 Wesley13
3年前
mysql索引BTree和B+Tree分析
BTree索引!(https://oscimg.oschina.net/oscnet/3329cf028540693bf2307cdc60e8fccc776.jpg)  【初始化介绍】 一颗b树,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Linux磁盘和文件系统扩容彻底研究
1.物理卷:_LVM逻辑卷的底层物理存储单元是一个块设备,比如一个分区或整个磁盘。要在LVM逻辑卷中使用该设备,则必须将该设备初始化为物理卷(PV)。_2.卷组:物理卷合并为卷组(VG)。这样就创建了磁盘空间池,并可使用它分配逻辑卷。3.逻辑卷:逻辑卷管理会根据物理存储生成提取层,以便创建逻辑存储卷。这样就比直接使用物理存储在很
Stella981 Stella981
3年前
Linux 磁盘管理
Linux磁盘管理1.查看磁盘或者目录的容量df和dudf查看已挂载磁盘的总容量、使用容量、剩余容量等,可以不加任何参数,默认是按k为单位显示的df!(https://oscimg.oschina.net/oscnet/2a85de92f0249e7dd3523f0cbc1fcfafdc2.jpg)df常用参
nvme磁盘故障注入方法
在存储系统中,磁盘的故障是很可能出现的问题。存储软件的设计需要对故障进行处理,提高系统的健壮性。然而磁盘的故障是不可控的,当我们想测试软件故障处理的分支时,不是很方便。用软件模拟的方法能覆盖的场景比较少,而且和实际故障的差距会比较大。因此,如果能让故障下沉到磁盘,尽可能的靠近磁盘,才能构造出尽可能真实的故障场景。本文针对nvme磁盘,在磁盘驱动这一层调研了几种可以注入磁盘故障的方法。