机房断电8小时恢复全过程

一次真实的机房断电事故恢复全过程:UPS电池老化只撑8分钟,20台服务器宕机,深信服EDS断电保护机制救了数据,8小时恢复全部业务。

机房断电8小时恢复全过程,踩了哪些坑

凌晨3:07,手机弹出告警:机房温度异常。三分钟后第二条告警:EDS存储节点3离线。接着是雪崩式的告警——15台虚拟机全部异常关机,核心交换机不可达。打电话给值班同事,他说外面市政施工挖断了电缆,整栋楼停电了。

这是深圳某企业自建机房的真实事故记录。20台服务器,1套深信服EDS分布式存储(3节点),UPS已运行4年。从断电到全部业务恢复,耗时5小时。下面按时间线还原整个过程,包括排查、恢复和事后复盘的教训。

03:00 断电瞬间

市政施工挖断电缆,市电中断。UPS开始放电。正常情况下这套UPS设计续航30分钟,足够支撑IT设备优雅关机。但UPS电池已经运行4年没有更换,电池容量衰减严重。实际放电只撑了8分钟,电压就跌到了临界值以下,UPS逆变器停机,所有设备硬断电。

这8分钟里发生了什么?什么都没有。因为机房没有配置UPS告警联动关机脚本,UPS放电期间没有任何自动关机动作。8分钟后设备直接断电,等同于拔电源。

03:15 到达现场

运维人员到场,看到的是一片黑。应急灯亮着,服务器全部静默。第一个动作不是去按电源键,而是检查物理环境:空调是否还在运行(空调走的是市电不是UPS,已经停了),机柜温度是否在上升(短时间问题不大,但夏天要抓紧)。

然后开始排查设备状态:

EDS存储: 3个节点,节点1和节点2电源指示灯灭,节点3的硬盘指示灯亮着橙色——这是EDS的断电保护机制触发了。节点3在检测到电压异常时自动将硬盘切换为只读状态,防止异常写入损坏数据。这个机制后面救了数据。

服务器: 20台物理机全部宕机,包括6台跑MySQL的数据库服务器、4台应用服务器、2台跑虚拟化的计算节点(上面15台虚拟机)、以及若干网络和安全设备。

网络: 核心交换机没有配置保存——这个坑太常见了,running-config没write到startup-config,断电后配置丢失。

03:30 开始恢复

恢复顺序遵循一个原则:先存储后计算,先核心后外围。

第一步:恢复EDS存储。 节点1和节点2按电源键启动,正常引导。节点3需要手动干预:进入EDS管理界面,将硬盘从只读状态恢复为读写状态,然后触发数据一致性校验。EDS的校验机制会比对3个节点的数据副本,发现不一致的块自动修复。这次校验耗时约40分钟,没有发现数据损坏——断电保护机制起了作用。

如果对深信服EDS分布式存储的可靠性机制感兴趣,可以看这篇场景拆解,里面有EDS在各种故障场景下的表现。

第二步:恢复网络。 核心交换机上电后发现配置丢失,只能从备份配置恢复。幸运的是运维团队有定期备份配置的习惯,最近一次备份在两周前。恢复配置后,交换机正常启动,路由和VLAN恢复。但两周内的配置变更(新增了几条ACL规则)需要手动补上。

04:00 虚拟化平台恢复

存储和网络就绪后,开始恢复虚拟化平台。计算节点上电启动,登录vCenter(或超融合管理平台),15台虚拟机状态全部显示为"异常关机"。

按业务优先级逐台开机: - 04:00 先起MySQL主库虚拟机,检查InnoDB恢复日志,确认数据一致性 - 04:10 起MySQL从库,等待主从同步追平 - 04:20 起Redis集群,检查持久化文件 - 04:30 起应用服务器,逐个验证服务连通性 - 05:00 核心业务系统全部启动,开始功能验证

MySQL的InnoDB引擎在异常关机后会自动做崩溃恢复,通过redo log重做未完成的事务。这次恢复耗时约3分钟,没有数据丢失。但如果是MyISAM表,可能需要手动修复索引。建议核心业务用InnoDB,别用MyISAM。

06:00-08:00 验证和收尾

核心业务恢复后,花了两个小时做全面验证:用户登录、订单流程、报表导出、文件上传下载,每个功能都走一遍。发现一个隐藏问题:消息队列服务(RabbitMQ)的持久化数据在异常关机时损坏了一个队列,导致消息积压。手动重建队列后恢复正常。

08:00,全部业务验证通过,对外服务恢复正常。从断电到完全恢复,总计5小时。

教训清单(具体可操作)

这次事故后,我们和客户一起做了复盘,列出了具体改进项:

UPS电池3年必须换。 这套UPS电池运行4年未换,设计续航30分钟实际只有8分钟。UPS电池的寿命跟充放电次数和环境温度有关,机房常年25-30°C,电池3年后容量衰减到60-70%是正常的。建议3年强制更换,别等第4年。换电池的成本约2000-5000元,比起一次停机5小时的业务损失,不值一提。

市电双路+发电机。 单路市电是这次事故的根因。如果机房有双路市电从不同变电站引入,一路断了另一路自动切换。预算允许的话加一台柴油发电机,市电全断时发电机自动启动。关于深圳机房建设方案的预算清单,可以参考这篇,里面有机房供电系统的详细配置和报价。

交换机配置变更后立即save。 这个坑太常见了。每次改完交换机配置,执行一下write memory或copy running-config startup-config,5秒钟的事,能省断电后几个小时的配置恢复时间。

UPS告警联动关机。 UPS放电时应该触发自动关机脚本:先关虚拟机(优雅关机),再关物理机。vSphere有vSphere DPM和HA的联动接口,超融合平台也有API。配置好之后,UPS放电期间系统自动有序关机,比硬断电安全得多。

EDS断电保护策略要提前配。 这次EDS节点3的只读保护机制起了关键作用,但这个策略是部署时配的。如果没配,节点3可能在电压不稳时继续写入,损坏数据。部署EDS时务必开启断电保护策略:检测到电压异常自动只读,这是数据安全的最后一道防线。

应急响应SOP。 事故发生后的前15分钟最关键。谁到现场、谁负责什么、联系谁、第一步做什么——这些应该在平时就写成SOP贴在机房门口。这次运维人员到场后的操作顺序正确(先检查环境→再检查存储→最后恢复业务),但更多是因为经验,不是因为有SOP。

事后改进

客户在事故后一个月内完成了以下改造:UPS电池全部更换(成本3500元),新增一台10kVA柴油发电机(成本约4万),核心交换机配置每日自动备份到TFTP服务器,虚拟化平台配置UPS联动关机策略。总投入约5万,换来的是下次断电时不再手忙脚乱。

如需机房基础设施评估或EDS断电保护配置,联系华南腾飞科技,我们提供机房巡检、UPS测试和存储系统安全策略配置服务。