外付けHDDのドライバをカーネルモジュールにして、めでたしめでたし…かと思ったら、起動時に変なメッセージが出ています。読んでみるとHDD 5台構成にしたはずのRAID 5が4台構成で動いています。
md: md0 stopped. md: bind<sdb> md: bind<sdd> md: bind<sde> md: bind<sdf> md: bind<sdc> md: kicking non-fresh sdb from array! md: unbind<sdb> ...
あるぇー、なんで /dev/sdbが弾かれてるの?HDD壊れたかしら?って思ったのですが、違いました。内蔵HDDをsdfのままで一度起動したことが原因でした。
デバイスファイル名だとわかりづらいので、変化前の内蔵HDDがsdaだったときのデバイスファイル名を小文字で、変化後のsdfだったときのデバイスファイル名を大文字で書きましょう。対応表は下記の通り。
| 変化前 | 変化後 | コメント |
|---|---|---|
| sda | SDF | 内蔵HDD |
| sdb | SDA | 外付けHDD 1 |
| sdc | SDB | 外付けHDD 2 |
| sdd | SDC | 外付けHDD 3 |
| sde | SDD | 外付けHDD 4 |
| sdf | SDE | 外付けHDD 5 |
上記を踏まえて時系列で説明してみましょう。
とまあ、RAIDシステムのバカなんだか賢いんだかよくわかんねえ動きをしてくれた結果、4台構成になってしまったわけです。それにしてもHDD認識の順番がころころ変わるのは困るのよねー…。
直し方は時間かかりますがとても簡単です。sdbが物理的に壊れたわけではないので、単にsdbをもう一度アレイに追加すれば良いだけです。
# mdadm --manage /dev/md0 -a /dev/sdb
こんな感じです。長くても1日ほっとけば直ってると思います。アレイを直している様子が見たければ、$ cat /proc/mdstatで概要が、# mdadm --detail /dev/md0で詳細情報が見られます。
この記事にコメントする
家のファイルサーバを復活させたついでに、Linux Kernelを2.6.30からlongterm maintenanceの2.6.35.9に入れ替えました。2.6.30以降のどこかでファイルサーバのCPU(Intel Atom)への対応が入ったのと、longtermなら中途半端なバージョンよりは安定している気がすると思ってのことです。
コンパイルしていざ再起動するとkernel panic…。rootがマウントできないと怒っています。
今までは内蔵HDDがsdaで、外付けのRAIDがsdb, sdc, sdd, sde, sdfだったのですが、カーネルを入れ替えたら内蔵HDDがsdf外付けのRAIDがsda, sdb, sdc, sdd, sdeになってしまったようです。
認識順序が変わったかなと思って、試しにroot=/dev/sda1をroot=/dev/sdf1に変えて再起動したところあっさり起動しました。しかしトラブった時のために昔の環境も残しておきたいのですよ。
カーネルごとに設定を書けるgrubは良いとしても、/etc/fstabはそうはいきません。swap領域に /dev/sda5を使っているので、カーネル入れ換えごとに /dev/sda5にしたり、/dev/sdf5にするのは面倒くさいです。
設定ファイルをいちいち書き換えるのは面倒くさいので、内蔵HDDさんにはなんとしても /dev/sdaで居ていただかなくてはなりません。そのためにはカーネルから一番最初に内蔵HDDを認識してもらう必要があります。
幸運なことに私の環境では内蔵HDDのドライバはata_piixで、外付けHDDのドライバはsata_sil24と異なるドライバが使われていましたので、ata_piixをカーネル組み込みに、sata_sil24だけモジュールにしました。これならata_piixが一番最初に認識され、rootがマウントされ、その後sata_sil24が認識されます。バッチリです。
最初はLinuxのHDD認識のアルゴリズムを見ないとわからないけど、面倒くさそうだなあ??と考えていたのですが、そんなこと調べるまでもなく単純に解決できたのでした。
めでたし、めでたし。
この記事にコメントする
| < | 2010 | > | ||||
| << | < | 12 | > | >> | ||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| - | - | - | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | - |
25年10月6日
25年10月6日
25年9月29日
25年9月29日
20年8月24日
20年8月24日
16年2月14日
16年2月14日
25年7月20日
25年7月20日
25年7月20日
25年7月20日
25年7月20日
25年7月20日
20年8月16日
20年8月16日
20年8月16日
20年8月16日
24年6月17日
24年6月17日
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
過去日記について
アクセス統計
サーバ一覧
サイトの情報合計:
本日: