2009/08/04

mdadmで/dev/md2を/dev/md0にリネームしてみた

以前にUbuntu 8.04に付けておいたHDDの引越しをする時に、/dev/md0と/dev/md1に相当するディスクを付けたままUbuntu 8.04を新規インストールしたために'/'に相当するデバイスが/dev/md2と番号が飛んでいる状態になっています。

いまは古いmd0, md1デバイスを削除しているので、番号を飛ばしたまま/dev/md2のみを使っている状態です。それでも古い情報が"/etc/mdadm/mdadm.conf"に残っているので、他のマシンでRAIDで使っていたHDDをeSATA経由で接続などすると微妙に面倒な状態になっています。

古いmd0, md1の情報をmdadm.confから削除してもよかったのですが、今回は/dev/md0を'/'として使うべく変更を加えてみました。

mdadm.confの編集

まずはRAIDの構成情報が入っているファイルを修正します。 ”/etc/mdadm/mdadm.conf”の修正前はこんな感じでした。

ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d082ac73:3124c6d4:e368bf24:bd0fce41
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=4b794d70:02464c5d:990747c6:3412373c
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=cd55e5a4:25c64e41:e368bf24:bd0fce41

この中から現在使っていないmd0, md1の行を削除して、md2をmd0にrenameします。

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=4b794d70:02464c5d:990747c6:3412373c

GRUB menu.listの編集

カーネルのオプションで、どのデバイスを'/'として扱うのか記述する個所があります。 ”/boot/grub/menu.lst”ファイルは通常カーネルのパッケージを最新版にするときに再生成されるなど、自動的にメンテナンスされています。

古いカーネル設定でも起動できないと微妙に不便だったりするので、古い設定を残しつつ/dev/md0を使うように変更しておきます。 変更前の設定ファイル。

title  Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.24-24-generic root=/dev/md2 ro quiet splash
initrd  /boot/initrd.img-2.6.24-24-generic

単純にmd2をmd0にしても良いのですが、問題があった場合に古い設定で起動できるようにinitrdファイルを残しつつ、エントリを増やします。

title  Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic on md0
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.24-24-generic root=/dev/md0 ro quiet splash
initrd  /boot/initrd.img-2.6.24-24-generic

title  Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.24-24-generic root=/dev/md2 ro quiet splash
initrd  /boot/initrd.img-2.6.24-24-generic.old

元々のエントリ(下段)は残しつつ、initrdファイル名を微妙に変更しています。 新しいエントリ(上段)はmd0を'/'にするように指定しています。

initrdの再作成

UbuntuというかDebian系列ではinitrdファイルの再生成には mkinitramfs を使用します。 使い方は単純。

$ cd /boot
$ sudo cp -ip initrd.img-2.6.24-24-generic initrd.img-2.6.24-24-generic.old
$ sudo mkinitramfs -o initrd.img-2.6.24-24-generic 2.6.24-24-generic

"2.6.24-24-generic"に相当する文字列は$ uname -rコマンドの戻り値と同じで、現在動いているカーネルのバージョンを示していて、パッケージの管理やらいろいろ使われるキーワードです。

さいごに

あとは再起動をすれば、initrdファイルの中から mdadm.conf が読み込まれて/dev/md0が作成され、その/dev/md0が'/'としてマウントされる事になります。

ここで/dev/md0が'/'にマウントされるためには、/etc/fstabの中で"/dev/md2"といったデバイス名を使わずにext3ファイルシステムのUUIDを使用している事が条件になります。

# /dev/md2
UUID=81f555da-76a2-4e7f-96e4-ed59ad010b3d /               ext3    relatime,errors=remount-ro 0       1

おもいついてから終るまで30分ぐらいで終ったけれど、意外に落とし穴が多いかもしれない。 今日得たものは、番号が変ったデバイスファイルと、mdadm周りに対するチョットした知識でした。

0 件のコメント: