硕大的汤姆

硕大的汤姆

The official website of Minhua Chen

03 Jan 2021

切尔诺贝利(一键容灾预案引发的事故)

看完了 HBO 的《切尔诺贝利》,真相在最后一集揭晓。

  • 故事中的切尔诺贝利 4 号反应堆,原本应该在建成时就完成的安全测试,在投产后三年都没有完成,并且在事故前已经失败了三次。(容灾演练连续失败三次
  • 原本应该在白天进行的安全测试,由于基辅电网对产量的要求而推迟,而此时核电站已经半功率运行了半天。(容灾演练随意修改时间)
  • 夜间进行安全测试时,操作员是新人,完全不知道如何操作。(没有事前培训
  • 安全测试没有通知其他部门的人。(没有对齐其他部门
  • 半功率运行了半天的反应堆产生了大量的氙气,导致反应堆毒化。
  • 安全测试开始后,需要先降低反应堆功率,而由于反应堆毒化,功率降低过快,很快低于计划的 700mw,并直接降到了 30mw。当值班主任判断出反应堆毒化后,建议先停机后,当时在场负责人佳特洛夫却一意孤行,要求尽快恢复反应堆功率。(发现异常没有立即停止容灾演练
  • 操作员为了能恢复反应堆功率,将几乎所有控制棒从反应堆内拔出。但由于反应堆毒化,功率仍然没有快速升高,而是维持在了 200mw。
  • 当氙气消耗完后,反应不再受到抑制,功率骤升。当时值班主任阿基莫夫急忙按下 az-5 按钮,试图关停反应堆。(正是这一操作导致了悲剧)
  • az-5 按钮按下后,原本被拔出的控制棒全部同时被插回反应堆。原本这是个「一键容灾预案」,结果由于控制棒的顶端是石墨构成的,石墨会加速反应,这让原本就快要失控的反应堆功率继续上升,引发了爆炸。(容灾预案本身有 bug
  • 更惨的是,当时的反应堆是单层防护,爆炸后,堆芯直接暴露在空气中,直接伤害了当地居民,并让后续清理工作变得异常困难。(还 TM 没有兜底方案)
  • 当爆炸发生后,加特洛夫还不肯向上反映真实情况,人民不能在最短时间内得到疏散。(没有坦诚面对问题,没有立即止损
  • 「az-5 容灾预案」的 bug 在三十年前就被发现,但是并没有被严肃对待。(任由线上问题存在)

《切尔诺贝利》是一部非常非常值得观看和反思的作品,有着极大的教育意义。对于软件工程师来说,虽然我们的工作不是操作核电站,但这场人类史上最大的事故也能教会我们很多。

  • 容灾演练应该事前有计划,有安排,有培训,有在线下环境执行过的预案。
  • 容灾演练前要对齐其他部门,避免其他部门由于信息缺失造成恐慌,甚至执行错误的预案或操作。
  • 一旦发现异常立即停止容灾演练,系统优先恢复正常。
  • 系统本身应该有兜底方案,无论是否执行容灾演练,应确保兜底方案有效。
  • 出现事故应该立即止损。
  • 容灾预案不应该有 bug。
  • 发现系统 bug 应该及时同步,并设立 todo 定期检查,查漏补缺。