コグノスケ


2010年 12月 14日

ファイルサーバのカーネルを入れ替え

家のファイルサーバを復活させたついでに、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月 15日 01:31)

コメント一覧

  • hdk 
    こういうときに LABEL=foo とか UID=bar 方式の指定方法が役に立つんだなぁ、ということを最近知りました。 
    (2010年12月15日 01:49:07)
  • すずき 
    全くその通りですね。私も最初はudevイラネーとか思ってましたが、RAIDがぶっ飛んで思い知ったのです…。 
    (2010年12月18日 08:52:42)
open/close この記事にコメントする



2010年 12月 15日

RAID が崩壊した

外付け HDD のドライバをカーネルモジュールにして、めでたしめでたし…かと思ったら、起動時に変なメッセージが出ています。読んでみると HDD 5台構成にしたはずの RAID 5 が 4台構成で動いています。

RAID が縮退モードで動いてます
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 のままで一度起動したことが原因でした。

RAID さんの憂鬱

デバイスファイル名だとわかりづらいので、変化前の内蔵 HDD が sda だったときのデバイスファイル名を小文字で、変化後の sdf だったときのデバイスファイル名を大文字で書きましょう。対応表は下記の通り。

変化前変化後コメント
sdaSDF内蔵 HDD
sdbSDA外付け HDD 1
sdcSDB外付け HDD 2
sddSDC外付け HDD 3
sdeSDD外付け HDD 4
sdfSDE外付け HDD 5

上記を踏まえて時系列で説明してみましょう。

  • RAID は(sdb, sdc, sdd, sde, sdf)で組んでいたので、変化後は(SDA, SDB, SDC, SDD, SDE)で RAID 5 を再構築しなければなりません。
  • そんなことつゆ知らずの RAID システムは同じデバイスファイル名(SDB, SDC, SDD, SDE, SDF)で RAID 5 を再構築しようとします。
  • 内蔵 HDD の SDF は RAID 5 の構成部分ではありませんので、RAID システムは「SDF が変になった!」と判断します。
  • RAID システムは SDF をアレイから外し、SDB, SDC, SDD, SDE つまり sdc, sdd, sde, sdf の 4台構成にします。
  • 内蔵 HDD が sda になって、再び元の構成に戻ります。
  • そんなの関係ねえ RAID システムはやっぱり同じデバイスファイル名(sdb, sdc, sdd, sde, sdf)で RAID 5 を再構築しようとします。
  • 先ほどの 4台構成に入っていなかった sdb だけ更新されておらず、情報が古いため RAID システムは「sdb が変になった!」と判断します。
  • RAID システムは sdb をアレイから外し、sdc, sdd, sde, sdf の 4台構成にします。←今ココ

とまあ、RAID システムのバカなんだか賢いんだかよくわかんねえ動きをしてくれた結果、4台構成になってしまったわけです。それにしても HDD 認識の順番がころころ変わるのは困るのよねー…。

RAID 復っっ活!!

直し方は時間かかりますがとても簡単です。sdb が物理的に壊れたわけではないので、単に sdb をもう一度アレイに追加すれば良いだけです。

アレイにディスクを追加

# mdadm --manage /dev/md0 -a /dev/sdb

こんな感じです。長くても 1日ほっとけば直ってると思います。アレイを直している様子が見たければ、$ cat /proc/mdstat で概要が、# mdadm --detail /dev/md0 で詳細情報が見られます。

編集者: すずき(更新: 2010年 12月 15日 01:32)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2010年 12月 23日

レコーダーがやってきた

奥さんが何か番組を録画したいと言っていたのでレコーダーを買いに行きました。せっかくだし会社に貢献するかなってことで、DIGA DMR-BWT1100 を買いました。

昔レコーダのチームの人に型番の読み方を聞いたんだけど、忘れましたね…。確か BWT は B: Blu-ray 対応、W: 2チューナ(Z: 3チューナ、R: 1チューナ)、T: 3D 対応(何も無し: 3D 未対応)、だっけ?数字は計画性が無くて 100 増えたり 1000 減ったりしてイマイチ意味がわかんねーです。

アンテナ線

さっそく DIGA をテレビに繋ごうと思って、今日テレビの裏を見たら、引っ越し当初に「映ればいいだろ、こんなの」ってずさんな配線をしたのを思い出しました。

家にある AQUOS は地デジも BS も映るのに、アンテナ線が 1本しか繋がっていません。UHF/BS 混合の信号を BS 端子に入れて、地デジ端子を開放状態にすると、地デジも BS も映ってしまうためです。

でも DIGA はそんなヘンテコ仕様になってないので、UHF/BS 分配器とアンテナ線 3本が追加で必要です。分配器はどうでもいいとしても、アンテナ線が全然足りません。後で買ってくるか…。

編集者: すずき(更新: 2011年 1月 28日 14:47)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2010年 12月 29日

帰省

実家へ帰省のため北海道へ。

それにしてもこの時期の飛行機チケットは高いなあ。帰省ラッシュを良いことに足下見過ぎ。

編集者: すずき(更新: 2011年 1月 28日 16:49)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報