Ubuntu ServerでOS起動するSATAソフトウェアRAID構成を構築してみた

# 背景

ベアメタルサーバーにて、ストレージ2台でソフトウェアRAID1(ミラー)構成でOS起動する設定メモ、個人的にまとめて検証してみた。
RHELやCentOSの情報は見掛けるけど、Ubuntu環境でも試してLinux環境の汎用性のある情報としたいかなと思っています。
ハードウェアRAIDカードが導入簡単だけど安くはないのでSATAで簡単にソフトウェアRAIDで冗長化しましょう。

# 動作環境

この手の情報はネットで検索するとVirtualboxで試したページはよくあるけど、実機のベアメタルサーバーで実際に動作するかは、メーカーや機種によってBIOSの動作も違ってくるので一概に言えないのでご了承下さい。あくまで参考までに。
今回は皆さんの自宅ラックに数台はよくある、FUJITSUのPRIMERGYシリーズの中古ラックマウントサーバーの実機で検証しました。

- [FUJITSU Server PRIMERGY（プライマジー）](https://www.fujitsu.com/jp/products/computing/servers/primergy/)

# BIOS設定

最初にベアメタルサーバーの実機のBIOS設定をします。[F2]や[DEL]キーでBIOS画面を表示させます。
![IMG_4025 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/0db5a97a-95fb-4b88-22de-a9e5a4078d33.jpeg)
![IMG_4027 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/82e50fb3-fc4d-ca5d-b2c5-f4d4e8bd878a.jpeg)
ここでBIOS設定のSATAモードは[RAID Mode]ではなく[AHCI Mode]に設定します。
この[RAID Mode]はいわゆるFakeRAIDとも言われているWindows OSのドライバーソフトが前提のソフトウェアRAID設定です。
この種のFakeRAIDはLinuxではドライバーソフトが不足しているので原則として使用不可です。一部にはRHELのドライバーソフトがある場合があります。

# Ubuntu Server インストーラー

ubuntuのソフトウェアRAID環境をインストールする時は、「Desktop」版や通常の「Server(Live)」版ではインストールがうまく出来ないので、必ず「Alternative Ubuntu Server installer」版を使用しましょう。

- [Alternative downloads](https://ubuntu.com/download/alternative-downloads)

今回は「Ubuntu Server 18.04.3 LTS」を使用しました。

# 言語設定

日本語を選択すると途中で止まってしまうので、英語のままでインストールします。
![IMG_4029.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/a854ce4d-4a1e-1bd2-cb23-4236a43f2b19.jpeg)
ただしキーボードや地域設定は日本語でも問題はありませんでした。

# ストレージのパーティション構成

今回は単体のストレージ全体として２つのパーティションを作成します。ひとつはOS起動用、もうひとつがOSやユーザー用です。
それを２台「/dev/sda」「/dev/sdb」でRAID1(ミラー)構成にしますので、合計４つのパーティションになります。
![IMG_4030 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/ad14d849-3b79-255a-8edf-9bcb1f38fb53.jpeg)
そのパーティションではRAID属性のパーティション上にExt4のファイルフォーマットを構築します。
なおLVMについては今回は使用しません。

## OS起動用パーティション作成

ストレージの最初にOS起動用のパーティションを作成します。
サイズは1GBもあれば十分です。２台のストレージにそれぞれ「/dev/sda1」「/dev/sdb1」作成します。
パーティションはRAID属性に設定します。また必ずOS起動フラグ(bootable flag:)を有効(on)にしましょう。
![IMG_4031 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/10b489d2-237f-87c1-4294-96980f5dbabf.jpeg)
![IMG_4032.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/eb7c00b8-34c3-b9a7-fc57-8d81207879e8.jpeg)
Ext4のファイルフォーマットはRAIDを構成した後なのでここでは設定しません。間違えないように。

## OSやユーザー用パーティション作成

ストレージの残りの空き領域はOSやユーザー用として、２台のストレージにそれぞれ「/dev/sda2」「/dev/sdb2」作成します。
またパーティションはRAID属性に設定します。
![IMG_4033.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/8f53a998-b6b9-429f-4433-477cbe57bd35.jpeg)
Ext4のファイルフォーマットはRAIDを構成した後なのでここでは設定しません。間違えないように。

## RAID構成デバイスMDを作成

RAID構成ストレージはMDデバイスとして認識されます。２台のストレージに作成したRAID属性のパーティションをそれぞれ組み合わせて、MDデバイスを作成します。

- 最初に作成したOS起動用の容量1GBのRAID属性パーティション「/dev/sda1」「/dev/sdb1」を組み合わせて「md0」のRAIDデバイスを作成
![IMG_4035 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/7464e4ae-0c24-e6f6-14b7-5e7b8be5cda9.jpeg)

- 残りの「/dev/sda2」「/dev/sdb2」を組み合わせて、「md1」のRAIDデバイスを作成
![IMG_4037 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/2ecacc72-986f-b082-a453-ad3312b5e01c.jpeg)

もしも作成後に画面表示内容が変わらない場合は、１つ画面を戻して再認識させると表示されます。

## Ext4ファイルフォーマット設定

作成されたRAIDのMDデバイスにExt4ファイルフォーマットのパーティションを作成します。

- OS起動用の「md0」のマウント位置は「/boot」に設定
![IMG_4040 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/af4e1664-983a-8103-755a-74f74867c177.jpeg)

- OSやユーザー用の「md1」のマウント位置は「/」に設定
![IMG_4042.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35898/7a64cd45-d5d6-09a4-5edc-952a39754b33.jpeg)

## パーティション作成の最終確認

ストレージのソフトウェアRAID構成が想定通りかよく確認して、インストールのパーティション作成を実行します。
特にOS起動用RAIDパーティションのOS起動フラグを忘れていないか確認しましょう。
これで最後までインストールが無事に完了して再起動出来ると思います。

# OS起動確認

再起動後、RAIDの同期設定が進行しているので確認してみます。


```
$ cat /proc/mdstat
```

RAID同期が完了したら、それぞれのストレージ単独でOS起動するか確認してみましょう。



# 参考

[CentOSにてRAIDストレージの障害発生HDD交換の作業メモ](https://qiita.com/ohhara_shiojiri/items/2515d1184603fc3826b4)