Ubuntu Server 18.04 を RAID を組みながらインストールする

要点をまとめるとこういうことです。

やりたいこと

  • こういう感じのソフトウェア RAID を組む f:id:Ginkyo:20181105160556p:plain
  • 片方のストレージ (HDD) が抜けても起動できるようにする

前提

これは実機で試す前に Hyper-V で試したときの覚え書きです。実機では何か違いがあるかもしれません。

ブートモードには UEFIパーティションテーブルには GPT を使用します。(レガシー BIOSMBR は使用しません)

2 種類のインストーラ

Ubuntu Server 18.04 のインストーラには、新しい Live 版の物と従来型の物があります。

RAID を組みながらインストールする場合は従来型のインストーラを使った方が良いです。Live インストーラRAID を組むとインストール中にエラーが発生するためです。

従来型インストーラのダウンロードページのリンクを貼っておきます。

Index of /releases/18.04.1/release

日本語を選ばない

最初に言語を選ぶ画面が表示されますが、ここで日本語を選ばず英語(あるいは他の得意な言語)を選びましょう。僕が日本語を選んで進めたときは途中で進行不能になりました。

パーティション分け & RAID 構築

RAID を構築したいので手動でパーティションを分けます。

ESP の作成を忘れないように

インストーラパーティションを分ける場合、パーティションテーブルには GPT が使用されます。そして GPT を使用する場合、EFI System Partition (ESP) というパーティションを作る必要があります。これを忘れると OS を起動できなくなるので気をつけてください。

自動でパーティションを分けると ESP に 536.9 MB が与えられていたので、ESP のサイズはこれが目安になると思います。

完成図

f:id:Ginkyo:20181105163938p:plain

インストール完了後、/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 でコピーする方法もありますが、ここでは省略します。