概要
2024年10月29日から11月1日にかけて、4サイトのエンタープライズNVMeドライブ41台が、特定の電源投入時間数でコマンドの受け付けを停止しました。これは、ある製造バッチのファームウェア欠陥によるものです。ミラーリングがそのうち39件の障害を吸収し、顧客への影響はありませんでした。ワルシャワの1ノードでは、同じバッチのドライブが同じ日にラックに搭載されていたため、ミラーの両半分が40分以内に失われました。そのノード上の2つのインスタンスがデータを失いました。この2番目の部分は、ベンダーではなく、私たちの過失です。
タイムライン
時刻はすべてUTCです。
| 時刻 | イベント |
|---|---|
| 10月29日 03:11 | ワルシャワのノードでドライブがバスから外れる。ミラーが縮退し、ホットスペアがリビルドを開始。日常的な事象で、ページャーは鳴らず。 |
| 10月29日 03:49 | 同じミラーの2台目のドライブが落ちる。ノードはルートプールを失い、停止。 |
| 10月29日 03:52 | ページャーが発報。オンコール担当が03:55にオンラインになる。 |
| 10月29日 04:20 | ノードは現地で復旧不能と判断。ホットスペアからのリビルドは不可能。スペアは、もはや応答しないソースからのリビルド中だった。 |
| 10月29日 05:40 | ドライブのログを調査していたエンジニアが、2つの障害が18か月ではなく18電源投入時間差であることに気づく。疑惑は単なる不運からコホート(同調障害群)に移る。 |
| 10月29日 06:15 | バッチIDと電源投入時間数によるフリート全体のクエリ。影響を受けるバッチには206台のドライブがある。31台はすでにカウントを超えて故障しており、残りはその数値まで40時間から900時間の範囲。 |
| 10月29日 07:30 | ベンダーに連絡。欠陥は4時間以内に確認された。ウェアレベリングテレメトリのカウンタが1,536電源投入時間でオーバーフローし、コントローラを固着させる。修正するファームウェアリビジョンが、6週間前に静かに出荷されていた。 |
| 10月29日 09:00 | 残り時間数で優先順位をつけたローリングファームウェアアップデートを開始。 |
| 10月30日 22:40 | バッチ内の最後のドライブが更新または交換された。 |
| 11月1日 14:00 | 影響を受けた顧客インスタンスが復元または返金された。 |
根本原因
原因は2つあり、そのうち1つはドライブメーカーに帰属します。
メーカーの原因: テレメトリカウンタが特定の電源投入時間数でオーバーフローし、コントローラを固着させた。ドライブは電源サイクルで復活するが、戻って数分以内に再び固着する。プラッタ上のデータは無傷でアクセス不能であり、これは午前4時に診断しようとする者にとって最悪の組み合わせです。
当社の原因: 同じ納品で届いたドライブからミラーを構成したこと。ミラーは2つの独立した障害ドメインであるべきだが、同じバッチの2台のドライブが同じ午後にラックされ、同じ時間内に電源が入ったものは、重要な意味で独立していない。フリート全体で11のミラーがこの方法で構成されていた。10台はホットスペアが先にリビルドを完了して幸運だった。1台はそうではなかった。
この原則は何年も前から認識していた。しかし、それを構築手順に書き込んだ者はおらず、構築手順こそが、納期に追われる午前2時に人々が従うものである。
影響
- 39件の障害はミラーによって吸収され、顧客に見える影響はなかった。
- 1ノードが9時間18分オフライン。
- そのノード上の14インスタンスがノード外部のバックアップから復元され、最大11分の書き込みが失われた。
- バックアップが一切ない2インスタンス。両方ともノード上のすべてを失った。
変更したこと
- 購入バッチを分割。 同じバッチの2台のドライブがミラーを構成してはならず、ペアを保護するホットスペアは3番目のバッチから調達する。文書ではなく、ビルドツールで強制する。11月4日に実施。
- 電源投入時間数のコホートアラート。 バッチ識別子を共有する4台以上のドライブが互いに100時間以内にあり、かつ任意のキリの良い時間数に近づいている場合にアラートを発するようにした。これは粗いヒューリスティックだが、今回の問題を19日前に検出していたはずである。
- 本番投入前のファームウェアの慣らし運転。 新しいドライブファミリーは、顧客データを運ぶ前にテストラックで2,000電源投入時間を稼働させる。この欠陥は1,536時間で表面化したはずである。
- ベンダーのファームウェアリリースノートを定期的に読むようにした。 修正は必要な6週間前に存在していた。担当者が割り当てられていなかったので、誰も見なかった。
変更しなかったこととその理由
ドライブファミリーやベンダーは変更しなかった。 欠陥は実際にあり、開示は不十分だったが、当社の損失は相関したバッチ処理によるものであり、どのメーカーでも再現していただろう。切り替えることは断固とした措置に見えたかもしれないが、何も修正しなかった。
ノード外部バックアップは、500ギガバイトあたり9ユーロのアドオンのまま。 それを全員に適用することは、ほとんどの顧客が自分で複製しているサービスに対して全員に請求することを意味し、私たちは安全の外観に対して料金を請求するつもりはない。変更したのは注文フォームで、インスタンスストレージはミラーリングされており、ミラーリングはバックアップではないと明記し、確認ステップでこの文を黙ってスキップできないようにした。
トリプルミラーリングには移行しなかった。 これはギガバイトあたり3分の1多くのコストがかかり、実際のメカニズムである相関障害には対処しない。2つの独立したドメインは、3つの従属ドメインよりも優れている。
2人の顧客
両者とも、影響を受けた期間について、支払いに使用した資産で全額返金され、何の正当化も求められなかった。1人は去った。もう1人は残り、今ではバックアップアドオンを購入している。注文フォームに同じ文を読み、それが以前から弱い形で存在していたことを知った上で。
どちらの結果も私たちの手によるものではなかった。私たちの手にあったのは、ミラーを適切に構築することだけであり、私たちはそれをしなかった。