Seishi Ono's blog

Fugaces labuntur anni. 歳月人を待たず

Ubuntu 14.04 LT Desktop でSoftware RAID

Ubuntu

Ubuntuはさほど気に入ったOSというわけでもなかったので、あまり触ったことが無いが、ひょんなことからDesktopをインストールしてみる気になった。どうせなら、Software RAIDを組んでみようと思ったら、一発インストールというわけには行かなかった。試していないが、server版ではこう言う問題はない。あったら大騒ぎだろうな。要するにデスクトップで酔狂なことをするからダメなんだけれど。

 課題

desktopタイプは、RAIDを前提にしたインストーラーではないようなので、まず、”Try Ubuntu"で LiveCDを起動してから、ターミナルを使って作業する。それはまあ仕方ない。

問題は、RAIDの設定が無事に終わっても、インストールの最後で、grubのインストールでこけてしまうことにある。Ubntuのバグか仕様かはわからない。(もっとも私のインストールの仕方に何かそもそもの勘違いがあるのかもしれない。alternativeのインストーラがあるのかもしれない) 

RAIDを組む

desktopタイプでは、”Try Ubuntu"で LiveCDを起動してから、ターミナルを使って作業する。

ここでは、RAIDはミラー( raid1)の例にしたが、RAIDの他の場合も違いは無い。

  • まず、ターミナルでraidを組むためにmdadmをインストールする
apt-get install mdadm
  • fdiskでミラーを組むためのディスクを作る。
fdisk /dev/sda
fdisk /dev/sdb

 この場合はパーティションは、nで作成し、いわれるがままデフォルトの全体を一つだけのプライマリーで作る。ただし、最後にタイプだけをtコマンドで raid( fd)にしておき、wで書き込みをする。

できあがったらミラーを組む。仕上がりはこんな感じになるだろう。

fdisk -l 

/dev/sda1 ...... fd Linux raid
/dev/sdb1 ...... fd Linux raid
  •  続いて、Software RAIDを組む。
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1 --metadata=0.90

インストール

ここまでの作業でインストーラーを動かせば、RAIDディスク ( /dev/md0)にインストールできるようになる。普通にインストールが進むのだが、最後にgrubに書き込みをしようとして失敗し停止する。

 

私の環境では、面倒なことに、停止した箇所で、「このまま続行」を選ぶことができない(ほかの選択肢も選べない)。grubに書き込めないのは、インストーラーが想定していないインストール方法なので仕方がないにしても、何も選べなくなるのは、Ubuntuのバグでは無いかと思う。このまま異常終了させるしか無い。

修正作業

再び、ターミナルにもどって作業する。

  • /dev/md0をマウントする。私の場合、ファイルフォーマットをLVMとしたので、マウントは/dev/mapper以下の論理デバイスで行う。
mount /dev/mapper/ubuntu-vg-root /mnt
  • bootファイルは通常通りマウントする
mount /dev/md0p1 /mnt/boot
  • 環境関係もマウントする
mount -t proc none /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
  • 名前解決のためにファイルをコピーしておく
cp /etc/resolv.conf /mnt/etc

ここで一度 change root してmdadmをインストールしておく

chroot /mnt
apt-get install mdadm
exit
  • change root 環境から抜けたらraidのUUIDを保存するために関係のファイルを設定しておく。これを忘れるとブートできなくなる
/usr/share/mdadm/mkconf > /mnt/etc/mdadm/mdadm.conf
  • 最後にchrootしてからgrubを書き込む
chroot /mnt
grub-install /dev/sda
grub-install /dev/sdb
exit

起動後の修正

あとはbootすれば、起動するはずであるが私の環境ではubuntuのバグで、起動時にちょっとしたエラーが出る("Error: diskfilter writes are not supported")。LVM+RAIDの組み合わせで出るらしい。そのまま放っておいてもしばらくすればbootするので、実害はなさそうだが、修正提案はでているようだ。

https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1274320

ここの#34に従って、/etc/grub.d/00_header を書き換える。

以上