1. VSAN集群安全关机与重启的核心挑战
第一次接触VSAN集群关机流程时,我也犯过直接断电的低级错误。那是在测试环境里,四台ESXi主机同时断电后,整个VSAN存储池直接崩溃,花了整整两天时间才恢复数据。这次惨痛教训让我明白:VSAN作为分布式存储系统,其关机重启流程远比传统存储复杂得多。
VSAN集群的特殊性在于它的"三副本机制"。简单来说,你的虚拟机数据会被拆分成多个组件,分散存储在不同主机的磁盘组中。这就好比把一份文件复印三份,分别放在三个不同的文件柜里。如果突然同时关闭所有文件柜,不仅可能损坏文件,还可能导致系统无法确认哪份才是最新版本。
实际运维中最常见的三大场景是:
- 机房搬迁:需要完整关闭整个VSAN集群
- 硬件维护:可能涉及部分主机下线
- 紧急故障处理:异常情况下的强制关机
以我最近处理的某金融客户案例为例,他们的生产环境运行着vCenter 7.0 U3管理6台ESXi 7.0主机组成的VSAN集群。在预演关机流程时,我们发现两个关键问题:首先是vCLS虚拟机(vSphere Cluster Service)没有正确处理,导致重启后HA功能异常;其次是某台主机上的SSD缓存盘出现早期故障征兆,但被日常监控忽略。这两个问题如果没在关机前发现,都可能引发灾难性后果。
2. 关机前的十二项必做检查
2.1 版本兼容性确认
很多工程师容易混淆vCenter和ESXi的版本要求。根据VMware官方说明,集群关闭向导功能需要同时满足:
- vCenter 7.0 Update 3或更高版本
- ESXi主机版本不低于6.7 P03
验证方法很简单:在vCenter界面右键点击集群,如果看到"关闭集群"选项,说明功能可用。我遇到过客户环境vCenter是7.0.3.00100版本但功能缺失的情况,后来发现是因为ESXi还停留在6.5版本。升级ESXi到6.7 P03后,功能立即出现。
2.2 数据健康状态检查
建议按照以下顺序进行全面检查:
- 通过Skyline Health检查所有告警项
- 在"监控→vSAN→重新同步对象"确认无正在进行的数据同步
- 特别关注"虚拟对象"中的单副本虚拟机
去年有个惨痛案例:某制造企业在关机前未检查单副本虚拟机,结果重启后发现关键MES系统的数据库VMDK文件损坏。由于是单副本配置,最终导致72小时的生产数据永久丢失。我的经验法则是:任何单副本虚拟机都必须临时改为双副本,等维护完成后再视情况调整。
2.3 关键服务配置调整
这个步骤经常被忽视,但至关重要:
# 检查HA和DRS当前状态 esxcli system settings advanced list -o /VSAN/IgnoreClusterMemberListUpdates # 禁用HA和DRS(防止主机下线触发虚拟机迁移) vim-cmd hostsvc/autostartmanager/update_autostartentry "disable"特别注意vCLS虚拟机的处理。在vSphere 7.0 U1+环境中,必须先启用撤回模式:
# 临时禁用vCLS服务 vim-cmd vcls/cluster/disable # 确认vCLS虚拟机已被删除 vim-cmd vmsvc/getallvms | grep vcls3. 分步关机操作指南
3.1 标准关机流程
对于支持集群关闭向导的环境(vCenter 7.0 U3+),推荐使用内置工具:
- 右键集群→关闭集群
- 通过预检查后,系统会自动处理虚拟机电源状态
- 等待所有主机进入维护模式
- 手动关闭物理主机电源
但实际环境中我们常遇到旧版本,这时需要手动操作:
# 将主机置于无操作维护模式(不迁移数据) esxcli system maintenanceMode set -e true -m noAction # 确认所有虚拟机已关闭 vim-cmd vmsvc/getallvms | awk '{print $1}' | xargs -I {} vim-cmd vmsvc/power.getstate {} # 安全关机 esxcli system shutdown poweroff -d 60 -r "VSAN maintenance shutdown"3.2 混合版本处理技巧
当遇到vCenter和ESXi版本不一致时(比如vCenter 7.0管理ESXi 6.5主机),需要特别注意:
- 先关闭所有虚拟机(包括vCenter)
- 通过SSH逐个主机执行维护模式
- 使用
-m noAction参数避免数据迁移 - 最后关闭物理电源
有个实用技巧:可以先用PowerCLI编写关机脚本,通过Get-Cluster | Get-VMHost按版本分组处理。我曾用这个方法成功处理过包含5种不同ESXi版本的混合集群。
4. 安全重启的七个关键步骤
4.1 物理层启动顺序
正确的电源开启顺序应该是:
- 核心网络设备(至少等待5分钟让交换机完全启动)
- 存储设备(如SAN交换机、FC交换机)
- ESXi主机(建议间隔30秒逐台启动)
- 等待vCenter自动启动(通常需要8-15分钟)
常见错误是同时启动所有主机,这可能导致:
- 网络风暴(特别是使用LLDP协议时)
- VSAN组件选举冲突
- vCenter启动超时
4.2 服务恢复验证
主机全部上线后,不要急于退出维护模式。建议按此顺序检查:
# 检查VSAN服务状态 esxcli vsan cluster get # 验证网络连通性 vsantracecheck -q # 查看磁盘组状态 esxcli vsan storage list只有当所有主机都显示"Healthy"状态后,再逐台退出维护模式:
esxcli system maintenanceMode set -e false4.3 vCLS服务恢复
这是最容易出问题的环节。正确操作是:
- 确认所有主机已退出维护模式
- 恢复vCLS服务配置:
vim-cmd vcls/cluster/enable- 等待10-15分钟让系统自动创建vCLS虚拟机
- 通过
vim-cmd vmsvc/getallvms | grep vcls确认三个vCLS实例已就绪
5. 常见故障处理手册
5.1 主机无法加入集群
症状:主机显示"vSAN取消配置状态" 应急方案:
# 重置vSAN网络配置 esxcli vsan network reset # 强制重新加入集群 esxcli vsan cluster leave esxcli vsan cluster join -u $(esxcli system uuid get)5.2 数据组件异常
当出现"对象无可用副本"错误时:
- 首先检查
/var/log/vsan-health/日志 - 尝试手动修复:
vsan.check_state -r- 如无效,考虑使用
vsan.obj_status_report生成详细报告
5.3 vCenter启动失败
如果vCenter虚拟机无法启动:
- 通过ESXi本地界面直接启动
- 检查存储策略合规性:
vsan.vm_object_info -v <vCenter VM MoID>- 必要时从备份恢复
记得某次紧急恢复时,我们发现vCenter的VMDK文件被标记为"已删除",其实是VSAN元数据损坏。最终通过vsan.object_recover命令找回了文件。这也提醒我们:任何时候都不要跳过预检步骤。