ファーストサーバの障害について
ファーストサーバと言えばASK ACCSのoffice氏事件(挨拶)
いや今回関係ないですが、単に私は忘れていない。
さて、できたてほやほやのこの問題ね。 http://support.fsv.jp/info/nw20120625_01.html
この中間報告読んで、私の感想は。
「ちょwwwおまwww馬鹿じゃねーのwww」
でした。はい。
サーバー置いてたわけでもないし、完全に専門外だから、あまりきっちりしたことは言えないんですが。みんなが言ってるようなことなら言っても良いでしょ。まあ今更言わんでも誰かが言ってるという話もあるが、別にそれは良いじゃん。
さて、なんでゲラゲラ笑うか。まずコレを読んでくれ。でも読むと私の文章読む必要がなくなるか。
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97
一番重要なところ抜粋。
失う要因としてもっとも大きなものは、ユーザ自身が誤って消したり、間違った情報を書き込んでしまうことである。それを完全に防止することは不可能であり、その対策としては失われては困るデータを失う前に通常とは別の場所にコピーしておくことしかない。そのような行為をバックアップをとると言う。
良いですか、そもそも馬鹿が手動で稼働中のサーバの中身を全消しするのなんて、あって当然のまれに良くある非常事態*1で、そこからでも生還するための手立て、それがバックアップなんです。ハードウェア障害だけじゃないんです、危機は。普段使ってるところじゃないところにとっておかないと、それはバックアップとして弱いわけです。
で、バックアップは普通、インターバルの長いフルバックアップと、インターバルの短い差分バックアップでやります。
なんでそういうことをするかというと、
- バックアップは複数の日時のデータを取り出せないと、色々な問題に対処できないから
- 毎度毎度フルバックアップとってるとディスクがいくらあっても足りないから
これを両立するためなんですね。
なんで複数の日時のデータがいるかというと、たとえば3日前に馬鹿が重要なファイルを消していたとします。3日経ってからやっと発見した。バックアップを毎日とっていたとして、1日前のものしかなかったら、やっぱりその重要なファイルは失われてしまっているわけですよ。
これを、フルは1ヶ月、あとは毎日差分をとっている。フルバックアップは3セット保有、とすると、バックアップしたいシステムにあるファイル容量の3倍以上が最低限必要なんて容量食いになりますが、どんなタイミングでも2ヶ月前までならいつの日の状態にでも戻せるわけです。
- 戻れるポイントが多くて、
- いつの時点でも行ったり来たりできて、
- そのくせ設備にお金がかからなくて、
- その設備自体も壊れにくく、
- 多少壊れても戻れるポイントが減るだけ、
っていうのが凄く良いバックアップですね。
ところが、中間報告を読む限り、
「普段動いているシステムと同じ構成のシステムが用意してあって、毎日午前6時にコピーするだけ」
だったと。アホか。これ、戻れるポイントが一点しかないですよね?その上本番のシステムと同じだけのコンピュータ群が必要だと。高いわ!弱いのに高いわ!金返せ!*2そもそもそういうのはバックアップって言わない。冗長化のうち、コールドスタンバイっていうんじゃないのそれ。というか、ディスク全消しするヒューマンエラー起こすようなところが、コールドスタンバイの待機系にいざという時にちゃんと切り替え作業できんのか?
えーとだいぶエキサイトしてきたんですが、中間報告に戻ると、こんなことが書いてある。
システムを含むデータのバックアップは毎朝6時に取得しております。
しかしながら、脆弱性対策のためのメンテナンスはバックアップをしてあるシステムについても実施しておかないと、メンテナンス実施後にハードウェア障害が発生してバックアップに切り替えた途端に脆弱性対策が講じられていないシステムに戻ってしまうことが過去に発生し、脆弱性対策がなされていないシステムが動き続けていたという反省に立ち、脆弱性対策のメンテナンスに関しては対象サーバー群とそのサーバー群のバックアップ領域に対して同時に更新プログラムを適用するという構造に修正して実施しました。
そのため、今回のメンテナンス実施において、対象サーバー群のデータ消失と同時にバックアップ領域のデータも消失したという事象に至っています。
反省することが違ーう!
バックアップは脆弱性対策が講じられていない時点に戻そうとして戻れなかったらバックアップじゃないのよ!
本番のシステムで脆弱性が治れば、そのあとにとった最新のバックアップは勝手に脆弱性治ったバージョンになるでしょ。その前の差分は当然脆弱性治ってないでしょ。でもそこに立ち返れるのはとても重要で、それがバックアップでしょ。そうじゃないと「実は脆弱性対策の作業が間違ってた」時に戻れないでしょうに。
やるべきだった反省は、システムはいつ巻き戻るのかわからないんだから、バックアップからレストアしたら、必ずソフトウェアのバージョン確認をする手順書を作るなり、バージョン一覧を自動で作成して最新と勝手に比較し、古かったら警告するシステムを作るなり、そういう方でしょう。
そもそもね、待機させるから複製をとっておこうというなら、両方個別に手を入れるんじゃありません!両方同時に手を入れようとしたら、手動だと片方だけ手を入れてもう片方忘れて内容が違うとか起きるでしょ。だから同時に手を入れてなおかつ同じ内容にしようとして、よしこれはプログラムを作って両方同時に流そう、ってなる。だからそれが間違ってたら両方消える。馬鹿野郎当たり前でございます。
違うよね?そもそも待機させるから複製をとっておこう、ってなったら、片方に手を入れて、ちゃんと動いているの確認して*3、それからまるごと複製するでしょ普通。そうしないと内容の同期がとれないでしょ!普通のバックアップなら、一カ所に手を入れて定期バックアップ待つだけでしょ!2箇所に手を入れようという発想それ自体がバグなのよ!
…はあはあ。息切れしてきた。
まとめに入ろう。
- それバックアップじゃないから。
- それ反省するところ間違ってるから。
- 2箇所に同時に手を入れようという発想が間違ってるから。
ああ疲れた。まあそういうことで。