从实战到避坑:VSAN集群安全关机与重启的完整指南

张开发
2026/4/19 22:57:07 15 分钟阅读

分享文章

从实战到避坑:VSAN集群安全关机与重启的完整指南
1. VSAN集群关机重启前的准备工作第一次接触VSAN集群关机重启时我犯了个低级错误——直接拔电源。结果你们猜怎么着整个集群直接崩溃数据差点全丢。从那以后我就养成了关机前必做检查的习惯。下面这些准备工作都是我踩坑后总结出来的血泪经验。首先得确认vCenter和ESXi的版本。这个特别重要因为不同版本的VSAN关机流程差异很大。比如vSphere 7.0 Update 3开始就提供了集群关机向导但前提是你的vCenter版本要够新。我遇到过vCenter 7.0.3.00100版本没有这个功能而7.0.3.00700版本就有的情况。所以千万别想当然一定要先确认版本。检查集群健康状态是第二个关键步骤。我习惯用vSAN运行状况服务来检查重点关注这几个指标存储空间使用率千万别在快满的时候关机重新同步对象状态确保没有正在同步的数据虚拟对象副本数单副本虚拟机建议先改成双副本说到副本数我有个惨痛教训。有次系统故障后重建单副本虚拟机直接变成了不可访问对象数据全丢了。所以现在只要是计划性关机我都会先把单副本虚拟机改成双副本。2. 关键配置调整与虚拟机处理关机前的配置调整直接影响重启成功率。我建议按照这个顺序操作关闭所有正在运行的任务备份、快照等检查并关闭HA和DRS处理vCLS虚拟机vSphere 7.0 U1及以上版本需要关闭HA特别重要我有次没关结果重启后所有VM都跑到一台主机上去了负载直接爆表。DRS也要关不然主机停机可能会触发不必要的迁移。vCLS虚拟机是个容易忽略的点。在vSphere 7.0 U1之后需要通过SSH修改配置参数config.vcls.clusters.domain-cnumber.enabledFalse这样才能安全删除vCLS虚拟机。不处理这个的话关机时可能会遇到各种奇怪问题。虚拟机电源状态处理要看vCenter的位置如果vCenter不在VSAN上关闭所有虚拟机如果vCenter在VSAN上关闭除vCenter外的所有虚拟机我建议在关机前用脚本批量检查虚拟机状态避免遗漏。有次我就漏了个测试用的VM结果关机时还在跑任务导致数据不一致。3. 主机维护模式的选择与操作进入维护模式是关机前最后一道防线但选项选错照样会出问题。VSAN提供了三种维护模式选项确保数据可访问性默认不迁移数据但确保可访问无操作不迁移数据对于全集群关机必须选无操作模式。这个在6.5叫无数据撤出6.7叫无数据迁移。选错选项的话重启后数据可能就不可用了。通过SSH进入维护模式的命令是esxcli system maintenanceMode set -e true -m noAction我建议逐台主机操作每台都确认进入维护模式后再关机。有次我太着急四台主机一起操作结果第三台卡住了整个流程都得重来。关机顺序也有讲究先关业务VM再关非vCenter系统VM最后关vCenter如果在VSAN上4. 集群重启的标准化流程重启过程看似简单但细节决定成败。我总结的最佳实践是电源开启顺序先开网络设备等交换机完全启动再开主机电源建议间隔1-2分钟最后等vCenter自动启动vCenter启动后别急着操作我一般等10-15分钟让服务完全初始化。有次手贱太早操作结果配置都没加载完。退出维护模式有两种方式Web界面操作SSH命令esxcli system maintenanceMode set -e falsevCLS虚拟机需要重新启用config.vcls.clusters.domain-cnumber.enabledTrue这个操作后会在vCenter任务里看到新建vCLS虚拟机的过程。虚拟机开机要控制节奏避免开机风暴。我习惯先开核心系统间隔5分钟再开次要系统最后开测试环境每次批量开机不超过5台VM这样能有效避免存储性能瓶颈。5. 常见问题排查与恢复即使按流程操作也可能遇到问题。最常见的是主机启动后无法加入集群。这时候别慌按这个步骤排查检查网络连接ping网关、DNS等验证VSAN服务状态/etc/init.d/vsanhealth status查看磁盘状态esxcli vsan storage list如果出现数据不可用的情况先确认是不是用了错误的维护模式。全集群关机必须用无操作模式其他模式反而会导致问题。我遇到过最棘手的情况是vCenter虚拟机损坏。这时候需要通过主机直接控制台恢复vCenter或者从备份还原实在不行就重建vCenter并重新添加主机数据恢复方面如果对象显示为不可访问可以尝试esxcli vsan debug object list -u 对象UUID esxcli vsan debug object repair -u 对象UUID6. 版本差异与特殊场景处理不同vSphere版本的VSAN关机流程确实有差异我整理了个简单对照表版本维护模式选项名称关机向导vCLS处理6.5无数据撤出无不需要6.7无数据迁移无不需要7.0无操作有需要特殊场景处理vCenter托管在VSAN上必须最后关机、最先启动混合版本集群按最低版本ESXi主机的流程操作延伸集群优先关闭见证主机有次处理延伸集群时我先关了数据站点主机结果见证站点认为发生了分区自动启动了保护机制。后来才知道应该先关见证主机。对于大型集群超过8节点我建议分组操作将集群分成多个容错域按域逐个关机重启时反向操作7. 自动化脚本与监控建议手动操作容易出错我后来都改用脚本了。分享几个实用脚本片段关机前检查# 检查重新同步状态 vsan.check_state() { local output$(esxcli vsan debug object list | grep Resyncing) [ -z $output ] echo OK || echo Resyncing objects found }批量进入维护模式for host in $(cat hostlist.txt); do ssh $host esxcli system maintenanceMode set -e true -m noAction done监控方面我推荐配置vSAN健康检查告警监控重新同步进度设置对象健康状态告警有条件的可以用Skyline Health做深度检查它能发现很多潜在问题。我通过它发现过即将失效的磁盘及时更换避免了数据丢失。最后提醒下所有关键操作都要记录日志。我习惯用script -a /var/log/vsan_shutdown_$(date %Y%m%d).log这样出了问题也有据可查。

更多文章