前回の投稿からかなり経ったが、続き。
あれから難なくRAID5の構築自体は完了したのだが、GRUBからの起動時にちゃんとinitが実行されないという障害にドハマりして、記事の纏めに時間が掛かってしまった。
とりあえず前回作成したRAID5の癖にディスクが2本しかないアレイに、もう一つのディスクを追加する。
# fdisk -H224 -S56 /dev/sda
前回sdbとsdcをアレイ構築に使った。パーティションIDを'fd'に指定するとmdadmが自動識別してくれるので、やっておくと絶対によい。作ってしまったsdb, sdcのパーティションについても、後から変更できる。
# mdadm /dev/md0 --add /dev/sda1
スペアとしてディスクが追加される。
# mdadm --grow /dev/md0 --raid-devices=3
RAID5のアレイが3本になり、パーティションサイズが拡張される。操作はバックグラウンドで実行されるが、ディスクのサイズによって非常に時間が掛かる。ちなみに自分の古いPCでは操作の完了まで20時間かかった。
# cat /proc/mdstat
この結果で状況が監視できる。
# resize2fs /dev/md0
サイズ拡張。自動でパーティション最後まで拡張してくれる。
ここ以降は/(root)をRAID5にした場合に必要な操作
# dpkg-reconfigure grub-pc
障害時に起動しないトラブルを避ける為、アレイに属するディスク全てをgrubのインストール先ディスクとして選択し、再構成しておく。
# update-initramfs -u -k all
initrdを更新する
本来はここまでの操作で再起動すれば普通に立ち上がってくるのだが、自分のケースではRAID5アレイをROOTに使っていたために、GRUBでブートができなくてハマった。
原因はカーネルがディスクドライバをロードする前にinitrdスクリプトのmdadmコマンドが実行されてしまい、initrd中にROOTが発見できないということであった。
以降はinitrdでrootが見えずフォールバックしてしまう人向け。
# cp -a /usr/share/initramfs-tools/scripts/local-top/mdadm /etc/initramfs-tools/scripts/local-top
# vi /etc/initramfs-tools/scripts/local-top/mdadm
viで編集し、冒頭にsleep 5を挿入する。アレイ認識の実行前にディスクドライバがロードが完了するようにする。
# update-initramfs -u -k all
設定弄ったら、initrdは忘れず更新する
今日はここまで。
コメントを残す