2005年9月28日

壊れたファイルシステムは元に戻らない

1:1 Hot Standby型のシステムがある。サービスを提供するマシンAと、その双子マシンBで出来ていて、Aが何らかの理由で倒れたらBが take over する、というものだ。

AとBはSAN経由でディスクを共有している。とはいえ、A が動いている最中にBが同じディスクをマウントしてしまうとディスク上のイメージに矛盾が発生する。そこで、A が動いている最中はAだけがこのディスクをマウントし、AがこけたらBがマウントするようにしたい。

問題はこうだ。Aがこけた。当然、Aがマウントしていたディスクは適切な umount 処理を経ずに倒れている。Bが mount しようとすれば、当然「適切に umount していない」ことは検出される。Bはこのディスクを mount する前に何をすればよいだろうか?

この問題、意外と面倒くさい。まず、Journal FS 以外の場合、無条件に fsck が動く。がfsckが動いて ファイルシステムが正常になるかというと、そんな保証はない。fsckは矛盾を検出して矛盾を解消するだけであって、その解消方法が2通り以上合った場合、正しい解消方法を選ぶ保証はない。つまり、fsckは破壊を確定的にする危険性があるのだ。

Journal FS であれば、Journal を apply すれば大丈夫だろうって? そんなことはない。
そもそも Journal に記録されているメタデータ更新が「必要十分」とは限らない。indirect block更新をユーザーデータ更新だと言い張るファイルシステムは存在するし、この場合、fsckを動かさないと indirect block上にある矛盾は検出しない。

Journalに書かれている通りにメタデータを更新したらメタデータが壊れた、何てこともざらにある。ext3なんかこのバグの温床だ。理由は3つ。
1) Journalのフォーマットがあまりにも高密度すぎて、Journal なのか「前回 journal を書いた際の忘れ形見」なのか区別がつかないJournalが発生してしまうこと。
2) Metadataの更新順序がそもそも間違って Journal に記録されている場合があること
3) Journal block の更新順序が正しくない場合がある(Journalはlogなので、先頭から順に書き込まれる必要がある。これが守られていない場合がある。シークに対するaccess最適化がかかってしまっている場合にこれが生じる)

最後に、Journal をいくら apply しても bad sector 検出にはならない。理由は簡単で、bad sector は head 退避中に生じるかもしれないからだ。本来書き込むはずのない sector が bad sector を起こしている場合、これの検出は全sectorチェックしかない。fsckでフルセットのチェックをかけるしかないのだ。


A->Bの一回目の切り替えの際に障害が起こっている可能性は低いと思う。でも、だからと言って、チェックを怠れば、A->B->A->B->A->B ぐらいの切り替えで、赤字のタイミングで生じた障害が、顔を出す危険性がある。あまりにも遠い過去に生じた破壊によって生まれた障害は、もうバックアップ をどこまで戻せばよいのかも、そこからどうやって復旧すればよいのかも、判らない状態に陥るだろう。もう、ホットスタンバイどころの話ではない。

fsckで障害が検出された場合、修復できる保障ができるチャンスは低い。しかし、fsckで障害が検出されない、というのはサービスを継続するべきかどうかの判断には重要なのだ。

fsckは、非正常切り替え時には毎回行うべきである。自分が致命傷を負ったのか、まだ大丈夫だったのか、判定できるのは fsck だけなのだから。

その意味で言うと、Journal FS にしたからといって、何かを速くしてよいわけではないのだ。

2005年9月26日

The HichHiker's Guide to the GALAXY

見に行ってしまいました。

これはもう傑作でした。原作はC級(ベースストーリーが公共事業でダム湖の下に沈む村から抗議に出かけた若者の話だった辺りが、クラスを大幅に下げているんだが)だったのに、映像化したらA-ぐらいまでクラスアップしてたよ。恐るべし、ビジュアライゼーション。

特にポイントはオープニングのイルカさん達。彼らの歌は秀逸でございました。もう、あれだけで掴みはオッケーみたいな。

馬鹿話を見たければ、是非お勧めです。見る見るうちに脳みそが溶けて、ヘラヘラ状態に陥ること請け合い。

2005年9月23日

Bug in template


I found a bug in template of this blog.
Information about this template was as follow:

Blogger Template Style
Name: Thisaway (Rose)
Designer: Dan Rubin
URL: www.superfluousbanter.org
Date: 29 Feb 2004


In this template, there was line that look like following:

<head>
  <title><$BlogPageTitle$></title>
  <$BlogMetaData$>

This part was at very beginning.


This works fine for Thunderbird, but did not work fine for IE.
The reason was pretty simple. It's because I was using non-ascii character on title. I'm using UTF-8.


As you might notice, UTF-8 and ASCII are compatible for first 128 characters.
Therefore, even if header parts are like above, as long as blogger are using ascii base characters for it's title, no problem arise. But what will happen if I used characters like ... Kanji, for example.


Since HTML assume default character set to be ASCII, HTML Brouser have right to assume non-ascii character to be what they BELIEVE. IE on Windoes XP-SP1 Japanese edition, assumed characters to be Shift JIS. And as result, views were all messed up.


Solutions were pretty simple. What we needed was the following line before the title:


  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


This line was generated by <$BlogMetaData$> line at the beginning. This line needed to be before <title><$BlogPageTitle$></title> the title line.


So comes the solution. Change the template from


<head>
  <title><$BlogPageTitle$></title>
  <$BlogMetaData$>


to


<head>
  <$BlogMetaData$>
  <title><$BlogPageTitle$></title>


And you'll have happy life.

mantis

A Mantis I shot several days ago.
Cool.

2005年9月20日

スケジュールすでに破綻予定

大変由々しき事態が発生した。2つの重要なイベントがぶつかったのだ。
  • Black Hat Japan(http://www.blackhat.com/html/bh-japan-05/bh-jp-05-jp-index.html)
  • OSDL F2F in Baijing
どちらも同じ10/17の週である。しかも 10/18からの F2F と 10/18 までの BHJ、場所は東京と北京、どうあがいても無理だ。

あぁ、どうしてくれよう。こんなことなら、BHご本家に行っておけばよかった。
日本で火が吹いてようが何しようが、私のプロジェクトではなかったのだから。

2005年9月18日

空軍は土木業でもある

ジェリー・パーネルの混沌の館にてを読みはじめた。積読リストから偶発的にpopされたのだ。
ここに書いてあった、目からうろこの内容がタイトル。

確かに考えてみれば、空軍は土木業なしには成立しない。
航空機は全て離着陸基地を必要とする。永遠に飛び続ける飛行機は無い。船は一旦就航したらそのほとんどの時間を海の上で過ごせるが、飛行機はほとんどの時間を地上ですごすのだ。当然、そのための基地を設計し、製造し、管理運営していかなくてはいけない。

金持ち父さんだったか…にも同じような話があった。マクドナルドはハンバーガー販売業で儲けているのではない。ショッピングモールなどの作成を手がけ、そこへ集客するためにハンバーガー販売業を営んでいるのであって、実質的には土地の価値を上げて、賃金を稼ぐ不動産業なのだそうだ。

こういう本質論は、まだまだどこかに落ちていそうだ。

2005年9月16日

FFVII AC

DVD 買いましたよ。
いきなり、見ましたよ。
おぉ、ゲームのときと全然違う。見栄えが違う。
あのつるつるお肌はどうしたんだ、ユフィ。
そうかその上着はジーンズをピンクに染めたものだったんだな、エアリス。
そしてティファ、設定であったはずの揺れる胸はどうしたんだ。揺れてないぞ…

それはともかく、モデルが違うとここまで見栄えが違うのか、と驚き。
これはPS3最初のゲームとして是非、FF-VII again を作って欲しいものだ。
当然今回のDVD用モデリングデータで。

2005年9月15日