最近处理了一些关于“vSAN磁盘被写满”和“vSAN被撑爆”的问题。关于存储被用满的问题一直以来经常发生,不仅包括传统存储,甚至是个人笔记本也经常出现“榨干最后一兆空间”的事情。针对vSAN而言,这类问题不仅和用户平时的使用习惯有关,也与用户对vSAN的理解有限有关,所以借这个机会正好来谈一谈。
vSAN本身有哪些措施来平衡磁盘的使用率?
=========================
我们先说下vSAN本身有哪些机制来平衡vSAN磁盘的使用率。
vSAN运行的过程中,在满足存储策略的前提下,vSAN会尽可能平均分布组件的存放位置,确保所有节点的所有磁盘的使用率大致相同。
(所有主机上的每个磁盘使用率基本相同)
在任何一个磁盘的使用率超过80%时都会触发vSAN主动进行数据平衡来尽可能平均所有磁盘的使用率。
在最大使用率磁盘和最小使用率磁盘差值超过30%,vSAN会提示可以手工触发磁盘平衡。
参考文档:
vSAN Health Service - Cluster health - vSAN disk balance (2144278)
vSAN Health Service - Physical Disk Health - Disk Capacity (2108907)
发生“vSAN磁盘写满”的原因?
=========================
不过毕竟胳膊拧不过大腿,vSAN只能尽力确保磁盘使用率平衡。
(一个真实案例的vSAN磁盘写满的案例)
发生“vSAN磁盘写满”主要是因为几个原因:
虚拟机overprovisioning
用户在部署虚拟机时候没有进行太仔细的使用空间的规划,虽然部署时可以正常的进行下去,但是随时使用时间越来越长,实际占用的空间越来越大,最终把vSAN撑满。
vSAN节点发生故障,但是vSAN没有足够的剩余空间去新建数据
在发生硬件故障的场景下,例如主机离线,磁盘组离线甚至是网络分区,vSAN会在其他可用的节点上根据VM使用的存储策略重建数据副本。如果vSAN可用空间不够的话,那么在重建的过程中也会把vSAN撑满。
vSAN平衡时候产生临时文件
vSAN 在平衡时会产生一些临时文件,如果vSAN本身使用率就非常高的话,在进行磁盘平衡的时候有可能把vSAN用满。
用户忽略vSAN的告警
一些用户没有定期检查vSAN健康检查的习惯,因此忽略了vSAN健康检查的告警,直到有一天创建VM时失败或者VM无法开机的时候才发现vSAN已经用满。
发生“vSAN磁盘写满”时对虚拟机有哪些影响?
=========================
无法新建虚拟机
现有虚拟机无法开机
无法迁移VM到vSAN上
Linux文件系统变为只读模式
Windows蓝屏
参考文档:
Linux based file systems become read-only (51306)
发生“vSAN磁盘写满”时应该做什么?
=========================
关闭正在运行的vSAN释放vswap文件
迁移VM到其他存储
添加新的资源到vSAN当中,例如新的主机,新的磁盘。
(谨慎)调整VM的存储策略,例如从FTT=1到FTT=0,从"thick"调整到“thin”
检查故障的主机/磁盘/磁盘组,尝试把他们恢复到正常状态
(谨慎)删除一些不重要的VM
(推荐)联系VMware技术支持
如何避免类似的问题发生?
=========================
确保vSAN有足够的使用可用空间
官方的建议是保持vSAN的使用率在70%左右(命令:df -h)。这当然不是说vSAN只能用70%的容量,而是防患未然,确保在发生主机故障时候vSAN有足够的空间进行数据重建。
对于存放实际业务数据的任何存储来说,谨慎永远是最重要的!
*严格意义上来说,70%这个数值也不够严谨,而是应该以客户实际情况来计算出一个使用率。
参考文档:
/en/VMware-vSphere/6.7/com.vmware.vsphere.vsan-planning.doc/GUID-581D2D5C-A88F-4318-A8B3-5A5F343F1247.html
vSAN Health Service - Physical Disk Health - Disk Capacity (2108907)
培养良好的使用习惯,定期进行vSAN健康检查。
vSAN健康检查中Limits这里可以计算出一台主机故障后vSAN的使用容量。
更新vSAN到最新的版本
我们在新版本中优化了数据重建/同步的过程,可以减少同步数量和重建数据时临时文件的占用空间,类似的优化我们每个版本都会发布。
(个人经验) 主机上留下一个磁盘槽位,并且留下一块磁盘用于备件。
如果出现问题可以快速添加存储资源。
第一时间联系VMware技术支持
在处理vSAN磁盘用满的故障时候,有些命令的使用其实是蛮有“讲究”的:不同的执行顺序就会有不同的结果。因此请第一时间联系VMware技术支持团队,让专业的人来做专业的事情。