「ファイルサーバが壊れた話」の続き。
これを直そうといろいろやってみて、なんとか復旧した模様。
やったこと。
- RAIDデータのバックアップ
使っていた領域が300GB程度だったので、500GBのディスクを購入してそこに移した。
ところがこの500GB HDD(日立)は、それまで使っていたバッファローのIDEコントローラ(Sil680使用)との相性が悪く、DMAエラーを頻発。この対処は後にするということにして、とりあえずPIOモードで動かすことにした。
- RAIDのおかしいディスクの撤去
なんと、7DEしか使ってないRAIDだったのに、箱の中には10個のHDDがっ! よく思い出したら、前回11DEでRAIDを組んでいたが2DE飛んだためにDEを減らすことにしたのだった。その時さらに「次に拡張するためのDEのス ペース確保」ということもあり、7DEでRAIDを組んで、残りのDEはスペアにすることにしていた。
ところが余分に2つもあったDEは、1つは壊れていたものだから、結局生きているDEは7つということに。
- RAID再構成
7DEで1.5TBということにして再構成。ところがkern.logを見ていると、DMAエラーを出して勝手にPIOモードに遷移している。処 理に途方もなく時間がかかるようになる。どうもバッファローのIDEコントローラはDMAを頻発するようだ。ちなみにIDEカードの構成はバッファロー (Sil680)が2枚とロジテック(Promise)が1枚。この時点で「IDEカード換えよう」という気になる。
- ヨドバシへ
今の筐体はディスクを交換するのにネジを大量に外さないといけなくて面倒臭い。なので、「これから先のディスク構成」のことを考えつついろいろ物色。
「やっぱり専用の箱がいいな」と思うのだが、500GB DEの製品は、まだまだ馬鹿高い。DEそのものが2万ちょいで買えるのに、製品だと4DEで20万近い。「ディスクなしのベアボーンがあればいいのに」と 思うのだが、製品としては「白箱」くらいしかないので諦める。「結局ファイルサーバは作らないといけないんだな」ということだ。
それでもディスク交換の手間はダルいので、「外付けSATA箱」なんてものを見るのだが、今のファイルサーバは以前使っていたPen3で作ったも のだから、バスはPCIしかない。このファイルサーバでの一番のボトルネックはPCIバスなので、PCI上にSATAのカードを載せるというのは、あまり 得策ではない。そもそも、SATAの増設カードはほとんどPCI-Expressだ。などと考えながらいろいろ見ているうちに、「マザー交換すりゃいーや ん」という結論になる。
用途としては、「software RAIDやってnfsとsambaのサーバ」でしかないので、そんなに凄い速度はいらない。そこで、「安くてバスのいっぱいあるマザー」「それに載る一番安いCPU」ということで探す。最低条件は「PCIが4つ以上あること」である。
ヨドバシで見る限りでは、GA-M55plus-S3GにSempron 2800+という構成が、基本要求の範囲で一番安くかつ将来性があるのではないかという結論となる。CPUなんて何でもいいんだが、PCIが4つ以上ある という安いマザーは、Intelのものはなかった。また、今さら939でもないということもあって、この選択とした。ついでに電源をもっとパワーのあるも のに交換して、メモリを程々(512MB)にして…ということで、総額3万強。
- マザー交換等々
マザーに載せるべきものを載せ、元のマザーと交換。これ自体はまぁわりとすんなり。最初はメモリが1つ壊れていて、意味不明のエラーで驚いたりもしたが、1枚抜くことで解決。あいかわらず500GB DEの方ではDMAエラーが出るが、RAIDにしてる方ではエラーも出ないので、一応RAIDの構成処理を走らせてみる。
Linuxでsoftware RAIDを動かすと、/proc/mdstatというファイルに、進捗状況やら構成やら処理の予想残り時間が出て来る。これを時々のぞいてやると、進捗が わかる。これを見ると、前のファイルサーバの時には6時間程度かかるような表示が出ていたのだが、今のファイルサーバだと4時間強くらいで終わる意味の表示をしている。IDEコントローラもDEも換えた訳ではないのに不思議だ。
RAIDの方では特にDMAエラーを出すこともなく、構成処理は完了する。しかし、あいかわらず500GB DEの方はエラーが出てPIOモードになる B(
- 64bit kernelに
Sempronと言えどもAMD64なので、せっかくだから64bit kernelにしてみることにした。これはカーネルだけの64bit化でユーザランドについては手をつけてない。
- とりあえず最新ソース(2.6.18)を入手して展開。
- 現行カーネルソースから.configを持って来る
- Makefileの中のARCHという変数設定を探し、これを「x86_64」と決め打ちにする(makeの時にARCH=x86_64と指定してもいいが、一々面倒臭い)
- make menuconfigして、パラメータ設定。32bitバイナリの実行を有効にすることを忘れない
- include/asmのシンボリックリンクをasm-x86_64へ張り直す(これをしないと意味不明なコンパイルエラーで悩む)
- 普通にmake & make instal
これだけでカーネルは64bit化される。
ただ、ユーザランドはそのままなので、新規にコンパイルしても32bitバイナリしか生成されない。この状態で64bitバイナリを生成したければ、gccに -m64 を指定する。
- やっぱりDMAエラー
カーネルのその辺をいじったら気が変わってDMAエラーは出なくなるかもと期待したが、無理だったようだ。しょうがないので、動きの悪いバッファロの板を他のものに交換するために、再びヨドバシへ。
コントロールチップが何であるか明記されているPCIのIDEコントローラで一番安いものは、「玄人指向」のものだったので、これを購入する。コントロールチップはIT8211だ。どうも今時のIDEはこれが主流のようだ。
問題のカードをこれで交換して動かすと、DMAエラーも出ずにちゃんと動いている。ということで、改修は完了。2TBのファイルサーバが復活した。