ブートパーティションをミラーリングする

mdadmを用いてブートパーティションをRAID1で運用するように切り替える。
既存運用の/bootをsda1, 新規追加パーティションをsdb1とする。
とりあえずやる前に/bootのバックアップはとっとこね。

ということでまずsdb1をレイドアレイとして構築する。
まず、fdiskでsdb1のパーティションシステムIDをLinux raid auto(0xfd)に設定する。
やり方がわからなかったらぐぐろう。
そしraidアレイを構築する。
(結論から言うとこれにさらに –metadata=0.9 のオプションが必要だった)

# mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb1

構築できたら情報をmdadm.confに記録する。

# mdadm --detail --scan >> /etc/mdadm/mdadm.conf

/etc/fstabのを環境に合わせて修正。

/dev/sda1 /boot ext3 defaults 0 2
から
/dev/md1 /boot ext3 defaults 0 2
みたいな

initramfsの更新。

# update-initramfs -k all -ut

必要があればgrub関係の修正をしてupdate-grub。
(rootデバイスがmdになる場合など)

sdb1だけで構築されている方肺のmd1にファイルシステムを作成して/bootの内容を移す。

# mke2fs -t ext3 /dev/md1
# mount -t ext3 /dev/md1 /mnt/temp/
# cp -pr /boot/* /mnt/temp/
# umount /mnt/temp

最後にsda1をRAIDに追加する。

# mdadm --add /dev/md1 /dev/sda1

fdiskでファイルシステムIDもfdに変えておく。
でいけるかと思ったんだけども、error 2が発生して起動しない。
grubをMBRに再セットアップしようとしてもfilesystem type unknownと言われたりしてうまくいかない。
果てさて、どうしてこうなった。

ということで調べていたらこんな記事を見つけた。
同じ現象だ。
要約すると、mdadmで構築するRAIDのメタデータのバージョンがデフォルトだと1.2だけど、grubは1.2に対応してないから0.9で作ろうね、っていうことらしい。
ということで、RAIDを構築する時のオプションに –metadata=0.9 を付け加えてやり直した。
いけた。
罠すぎた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>