バックアップは重要です。


バックアップは重要である。

NetBSD の総会と BoF も間近に迫っていた 2013 年 7 月某日。事件は起きた。

USB 3.0 のホストコントローラー向けドライバの開発マシンで、まぁまぁ、の区切りが見えてきたところだったので、Subversion で管理されてるコードを commit しておこうとしたところ、ファイルサーバーから応答がない。

本当なら root hub のエミュレーションまで済んだログあたりを Twitter にでも投げて、amazon の wishlist 乞食でもしてやるくらいの勢いだったのだ。

そんなクソ甘えた考えを吹き飛ばすように、俺様のこれまでの成果をあざ笑うかのように、ファイルサーバー様は「お疲れ様」の一言をかけることもなく一切の問いかけに沈黙を貫いていた。

「あれ?なんかハングでもしてんのかな?」

ping を打ってみた。

これは通る。SSH でアクセスしてみた。応答がない。

「仕方ないなぁ。なんか死んでるんかな。」

VGA ケーブルをひっぱり出して、コンソール画面を見てみる。ddb に落ちてるわけではない。

USB キーボードをつないでみる。見慣れた緑の attach ログが出てくる。ここも問題なさそうだ。

ログインを試みる。

固まる...

なんとなく動いているようだが、システムとしては完全に逝ってる感がする。

「まぁ、これ 6.0 ちょい前のシステムやし、なんか地雷踏んだかもな。」

ちょっとした焦りのような違和感を感じつつも、いつものことさ、とタカをくくっていた。

「shutdown ができないのは明らかやし、多少論理的な整合性を失ったくらいやったら、これまでも何度も直してきたしな。大丈夫やろ。そもそもソースコードは全部こっちにあるんやから。」

いつものごとく、リセットボタンを押した。

システムは言う。「No boot device detected.」

ブートデバイスがない、だと?なんだ、それ。今のいままでいたじゃないか。

電源を落として再投入して BIOS に入る。

全デバイスが見えない。HDD も Blu-ray ドライブ、何もかもだ。

状況を咄嗟に理解できず。しばし、呆然とする。ここからが地獄だった。

肝心のディスクが見えない。かけらもだ。ケーブルがやばいのか?そうなのか?

マシンの開腹を行い確認する。特段の異常はなさそうだ。

もう一度 BIOS を確認するとやはり全ディスクが見えていない。

電源異常ならもっと手前からおかしくなることが多い。

マザーボードか?パッと見た限りではあるが、コンデンサが妊娠した感触や形跡、液漏れも見当たらない。

嫌な汗が噴き出していた。

「戦慄した」

この言葉がこれほどピッタリくる場面はないだろう。

バックアップはとってあったか?

ヤバイ。これはヤバイ。汗が止まらない。震えも抑えきれなくなってきた。

落ち着け。落ち着くんだ。思い出せ。思い出すんだ。

気分的に参っていたし、残念ながら引っ越し直前にバックアップをとった記憶はない。

じゃあ、いつとったか。これも残念ながら、パッと思い当たるほどの記憶はない。

むしろ、ここ数年でとった記憶なんてさっぱりないくらいだ。

この目の前にある、ただのガラクタと化しそうなマシンを眺めながら、自らの記憶の断片をひたすら走査しつつ、最後にバックアップをとったのはいつか、それは、ここ直近の作業をそれなりの時間で復旧可能なものなのか、それらを一心不乱に考えていた。

考えても無駄だ。そんな記憶はない。

ここからはできる手立てをとるしかない。

家の LAN 構成を一手ににぎっている RTX1200 の設定を変更する。LAN のホスト名を引けなくなるが、大元が死んでるのだから、参照できる必要はない。Windows マシンなりが外部に出ていける最低限の状況は確保しておこう。

次に Windows マシンから NetBSD/amd64 6.1 の ISO イメージをダウンロードし、なんらかの起動手段を確保しようとした。

復旧を目指していたのだから、ておくれ BSD のがよかったかもしれない、と思ったのは、ずいぶんになってからのことだ。それくらいには判断力が落ちていたのだろう。

次 / を担っていたディスクはまずいと判断し、電源とデータのケーブルを抜いた。

ヘッダ異常だった場合は放置したくらいでは復旧しないだろうし、下手に電源オンオフを繰り返すとディスクを傷つけて、完全にとどめを刺すからだ。

いや、こんなことは今思えばそうだが、そのときは本当にそう思っていただろうか。もはや、ただケーブルを抜いた、ということしか思い出せない。

そのあと、一縷の望みをかけて電源を入れ、BIOS 画面に入る。

データディスクと Blu-ray ドライブが見えた。

「あー、これでデータの多くは救い出せんや。ずっと後回しにしてた 6.1 に入れ替える時間をとれたと思えばええんや。」

そう思いながら、Windows マシンで作った NetBSD/amd64 6.1 の bootable DVD で起動して、壊れてないはずの HDD の中身を確認する。このディスクもあぶないかもしれない、予備の HDD に全部移し替えてしまおう、と思ったからだ。

「戦慄した」

/home がない。

/ と、/home と、/export があって、/home と /export がデータディスクにあると思い込んでいた。

「disklabel を切って、普段は mount せず、定期バックアップしてたんやったかな?」

disklabel -r と打つ。

「全領域 /export や。」

私は、これに続く衝撃を言葉にする能力は持ち合わせていない。

何度目かの言葉であるが、次の言葉しか浮かばない。

「戦慄した」

もはや USB 3.0 なんかどうでもいい。こんなものゼロから書いても知れている。そもそも2日か、3日か、その程度の期間で書きあげたものだ。

いや、そのコードは USB 3.0 開発マシンに残っているのか。無駄にきっちり残っているな。

そんなことよりも、この3か月の間に書いたコードの方が問題だった。

コードだけではない。設定から何から何までのデータが一度に吹き飛んでしまった。

とりあえず、大量のデータはデータで、新しい HDD 2 台に dd でまるまるコピーをとる。

高速に確実にコピーするにはディスクの端から端まで dd で移した方が確実だし、復旧前データがそのまま残っていると何かと都合がいいからだ。

ここで概ね私の HP は 0 になる。

データ復旧

後日、ものすごい大枚をはたいて、データ復旧会社に依頼し、壊れた HDD からデータ復旧を試みてもらった。

案の定、ヘッダが破損しており、データが全部取り出せる可能性は低いことが分かる。いや、そんなことは分かっていた。だいたい認識すらできなくなっていたのだから。

最終的にはディスクにも影響が出ていたのだろう。/ はほぼ壊滅しており、取り出されたデータも原型がなんであったか分からないものが多かった。これはあらかじめ伝えていたからいい。/usr とか /var なんか作り直せばいい。

もっとも大事な /home だが、ここは幸いにも、ほぼデータが復旧できていた。

暗号関連や資料や、なんやかやの元となるデータの多くが復旧されていた。

その後、一週間ほどかけて、以前と変わらない環境に戻して、後回しにしていた、バックアップ体制もしっかり構築した。

瞬停時対策の UPS も導入しておきたいところだが、今期の予算がほぼギリギリでまだ導入できてない。

こういうのが後になって問題となるのだが...

サーバーの再構築中は激しい雷雨に見舞われ、復旧を一時中断したりするなど、不幸続きであったことも書いておこう。

最後にこの言葉を書いておきたいと思います。

バックアップは重要です。バックアップは重要です。
※大事なことなので2回書いておきます。

皆様も大事なデータはしっかりバックアップをとっておきましょう。


戻る