Ubuntu Server 18.04 を RAID を組みながらインストールする
要点をまとめるとこういうことです。
- Live インストーラではなく従来型のインストーラを使った方が良い
- インストーラ内でパーティションを作成すると、パーティションテーブルには GPT が使用される
- 手動でパーティションを作成する場合は /boot/efi へのマウントを忘れないように
- md デバイスは /boot/efi にマウントできない
やりたいこと
- こういう感じのソフトウェア RAID を組む
- 片方のストレージ (HDD) が抜けても起動できるようにする
前提
これは実機で試す前に Hyper-V で試したときの覚え書きです。実機では何か違いがあるかもしれません。
ブートモードには UEFI、パーティションテーブルには GPT を使用します。(レガシー BIOS、MBR は使用しません)
2 種類のインストーラ
Ubuntu Server 18.04 のインストーラには、新しい Live 版の物と従来型の物があります。
RAID を組みながらインストールする場合は従来型のインストーラを使った方が良いです。Live インストーラで RAID を組むとインストール中にエラーが発生するためです。
従来型インストーラのダウンロードページのリンクを貼っておきます。
Index of /releases/18.04.1/release
日本語を選ばない
最初に言語を選ぶ画面が表示されますが、ここで日本語を選ばず英語(あるいは他の得意な言語)を選びましょう。僕が日本語を選んで進めたときは途中で進行不能になりました。
パーティション分け & RAID 構築
ESP の作成を忘れないように
インストーラでパーティションを分ける場合、パーティションテーブルには GPT が使用されます。そして GPT を使用する場合、EFI System Partition (ESP) というパーティションを作る必要があります。これを忘れると OS を起動できなくなるので気をつけてください。
自動でパーティションを分けると ESP に 536.9 MB が与えられていたので、ESP のサイズはこれが目安になると思います。
完成図
インストール完了後、/boot/efi の冗長化
インストール直後の状態では sda が抜けたら OS が起動できなくなりますが、/boot/efi (ESP のマウントポイント) を冗長化することで sda なしでも起動できるようにします。
マウントポイントの確認。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 127G 0 disk ├─sda1 8:1 0 514M 0 part /boot/efi └─sda2 8:2 0 126.5G 0 part └─md0 9:0 0 126.4G 0 raid1 / sdb 8:16 0 127G 0 disk ├─sdb1 8:17 0 514M 0 part └─sdb2 8:18 0 126.5G 0 part └─md0 9:0 0 126.4G 0 raid1 / sr0 11:0 1 1024M 0 rom
sda1 と sdb1 の中身を確認。
$ sudo ls /boot/efi/ EFI $ sudo mount /dev/sdb1 /mnt/ $ sudo ls /mnt/ (何も出力されない)
/boot/efi を sdb1 にコピーします。
sudo rsync -a /boot/efi/ /mnt/
その後、お好みでブートエントリを作成しても良いと思います。
$ sudo efibootmgr --create --disk /dev/sdb --label "ubuntu redundancy" --loader "\\EFI\\ubuntu\\shimx64.efi"
他にも sdb に GRUB をインストールする方法や、rsync
ではなく dd
でコピーする方法もありますが、ここでは省略します。