Ubuntu16.04でraid1設定

OS:UbuntuでソフトウェアRAIDで対応する必要があり、
RAID1の構成をしたときに、インストール後、起動してこないという現象があった
検証のためのメモ

Mac環境で試すために、VirtualBoxを使うことにします。
OSはUbuntu16.04 Server版を使用します。

参考URL
[How To Create RAID Arrays with mdadm on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-16-04)
[LVM(Logical Volume Manager)について](https://users.miraclelinux.com/technet/document/linux/training/2_2_3.html#training2_2_3)
[論理ボリュームの管理](https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/LV.html)


# 環境
## VirtualBoxの準備
- VirtualBoxのインストール
https://www.virtualbox.org/ からダウンロード
>すでにインストールされているけど、うまく起動できない場合、
一旦VirtualBoxをuninstallすると解決するかもしれません。
uninsallしても用意した仮想環境は削除されません。

- VirtualBoxに仮想環境を準備する 
 - raid構成を再現するために仮想HDDを複数設定する
 - インストールする予定のubuntu（ubuntu-16.04.2-server-amd64.iso）を設定する 

|![スクリーンショット 2017-07-14 20.04.14.png](https://qiita-image-store.s3.amazonaws.com/0/39911/1200f9b4-4b29-be04-17a6-9aa7152487eb.png)|![スクリーンショット 2017-07-14 20.05.30.png](https://qiita-image-store.s3.amazonaws.com/0/39911/a945fadf-a134-6aaf-639e-164abc19790d.png)|
|:--:|:--:|

## Ubuntuをインストールする
コンソール画面でfdiskコマンドを使ってパーティション分けをします。
fdiskコマンドを使うためには、「Rescumodeモード」で実行する必要があります。
Mac環境ではコンソール画面へはoption+fn+F2、インストーラ画面へはoption+fn+F1で切り替えれます。
（実機だと、コンソール画面へはALT+F2、インストーラ画面へはALT+F1）

VirtualBoxの切り替えのコツ。（VirtualBoxがアクティブ状態で）
optionを先に押しておいて、fn+F2を同時に押すと割と素直に切り替わってくれました。

|[言語選択]　日本語|[メニュ]　一番下のモード（Rescumode）|
|:--|:--|
|![スクリーンショット 2017-07-14 21.32.57.png](https://qiita-image-store.s3.amazonaws.com/0/39911/eef04898-578c-b0b0-d82d-942c77629708.png)|![スクリーンショット 2017-07-14 21.33.55.png](https://qiita-image-store.s3.amazonaws.com/0/39911/f59943fe-985a-60ea-576f-2ab690c1401c.png)|

|[インストーラ画面]||[コンソール画面]|
|:--|:--|:--|
|![スクリーンショット 2017-07-15 12.34.29.png](https://qiita-image-store.s3.amazonaws.com/0/39911/33e1fc0d-1354-ada4-b40d-8dafbe1df511.png)|コンソール画面に切替できるが<br>fdiskコマンドはまだない|![スクリーンショット 2017-07-15 12.34.55.png](https://qiita-image-store.s3.amazonaws.com/0/39911/bb4dc47a-9d54-2b82-5ed1-667a8b010fc0.png)<br>![スクリーンショット 2017-07-15 12.35.16.png](https://qiita-image-store.s3.amazonaws.com/0/39911/e2d369bd-f570-1a99-a383-c2260f986929.png)|
|![スクリーンショット 2017-07-15 12.52.44.png](https://qiita-image-store.s3.amazonaws.com/0/39911/a5dd43bf-b1c9-2fa5-6ebf-83eaf6330e82.png)![スクリーンショット 2017-07-15 12.53.06.png](https://qiita-image-store.s3.amazonaws.com/0/39911/3905941e-ee60-5d34-1f60-3a6272ae9a62.png)![スクリーンショット 2017-07-15 12.53.57.png](https://qiita-image-store.s3.amazonaws.com/0/39911/10941147-ef42-7985-7210-cfcbcd8f6626.png)|日本語選択||
|![スクリーンショット 2017-07-15 13.46.08.png](https://qiita-image-store.s3.amazonaws.com/0/39911/5dd3c14a-5007-0ab3-bdd0-01b308de3ebc.png)|ネットワーク読込が始まるとfdiskコマンドが使えるようになる|![スクリーンショット 2017-07-15 13.51.06.png](https://qiita-image-store.s3.amazonaws.com/0/39911/8e5b6940-2cde-0337-b168-205280c33d98.png)|

- HDDの確認

```:仮想HDD4台認識してくれてる
# ls /dev/sd*
/dev/sda  /dev/sdb  /dev/sdc  /dev/sdd
```
## fdiskコマンドでパーティションを作成する 

```
# fdisk /dev/sda
```
>
[Command:p　　パーティション情報を表示する]
　Disklabel type:dos　　　＜ー DOSであること確認
[Command:n　　新しいパーティションを作成する]
　Select: p (default)
　Partition number: 1 (default)
　First sector: (default)
　Last sector: (default)
[Command:t　　パーティション・タイプを変更する]
　Selected partition: 1
　Partision type: fd
[Command:a　　ブートの可否を切り替える]
　Selected partition: 1
[Command:w　　パーティション情報を書き込んで，終了する]
![スクリーンショット 2017-07-15 15.41.10.png](https://qiita-image-store.s3.amazonaws.com/0/39911/eb68a32c-4991-d299-8258-176828d38450.png)
/dev/sda の設定はこんな感じになった。/dev/sdbも同じ設定をする。
![スクリーンショット 2017-07-15 16.58.09.png](https://qiita-image-store.s3.amazonaws.com/0/39911/6103ab28-4483-8767-2e6b-f8ffe0632995.png)

## ソフトウェアRAID設定  
2台のHDD(/dev/sda, /dev/sdb) をソフトウェアRAIDとして /dev/md0 に割り当て

```
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 --assume-clean
```
使用しているコンポーネントデバイスが、bootフラグが有効なパーティションでない場合は、警告が表示される可能性があります。
続行するにはyを入力するのが安全だそうです
![スクリーンショット 2017-07-15 18.00.18.png](https://qiita-image-store.s3.amazonaws.com/0/39911/fb7cf8ba-a362-cc87-733e-bab73ee42d20.png)

raid1ができているかを確認。
[UU]となってるので認識している
![スクリーンショット 2017-07-15 18.26.37.png](https://qiita-image-store.s3.amazonaws.com/0/39911/b2e107ef-620e-c041-294f-0806b7f9d9af.png)

## /dev/md0 の設定,gpd/LVM設定
パーティションはmd0p1,md0p2とし、
md0p1はGPT(GUID Partition Table)
md0p2はLVM(Logicl Volume Manager)にする

```
# fdisk /dev/md0
```
>
[Command:g　　GUID Partition Tableにする]
[Command:n　　新しいパーティションを作成する]
　Select: p (default)
　Partition number: 1 (default)
　First sector: (default)
　Last sector: 1024K
[Command:n　　新しいパーティションを作成する]
　Select: p (default)
　Partition number: 2 (default)
　First sector: (default)
　Last sector: (default)
[Command:t　　パーティション・タイプを変更する]
　Selected partition: 2
　Partision type: 30
[Command:w　　パーティション情報を書き込んで，終了する]
![スクリーンショット 2017-07-15 23.09.19.png](https://qiita-image-store.s3.amazonaws.com/0/39911/e30d88dd-30e7-5176-fe52-5fb8ad4f605c.png)
/dev/md0 の設定の確認をする。（md0p1,md0p2ができてる）
![スクリーンショット 2017-07-15 23.34.24.png](https://qiita-image-store.s3.amazonaws.com/0/39911/c93be3ab-7ec7-852f-52a9-c0fff5df9e76.png)

### 物理ボリュームの作成(LVM設定)
LVMはサイズを変える可能性があるならば入れとくのがいいらしい。

```
# vgcreate vg0 /dev/md0p2  ＜ーボリュームグループの作成
# lvcreate -L 4G -n root vg0　　＜ー論理ボリュームの作成３つにわけてみた
# lvcreate -L 200M -n swap vg0
# lvcreate -l100%FREE -n data vg0 
# lvscan  ＜ー確認
# lvremove /dev/vg0/data　　　　　＜ー失敗した時に消した 
```
![スクリーンショット 2017-07-16 0.26.28.png](https://qiita-image-store.s3.amazonaws.com/0/39911/27631f20-c21f-9652-8189-081503950084.png)

パーティションの設定が終わったので、
インストーラー画面に戻って続きをする。

## 手動でディスクのパーティショニング設定
インストーラ画面で「手動」を選択し、コンソーラ画面で設定した
RAID1デバイス、LVM vg０の領域の設定をそれぞれ行います。
（ファイルシステム作成、マウントの作業）

|![スクリーンショット 2017-07-16 1.03.37.png](https://qiita-image-store.s3.amazonaws.com/0/39911/e15e8bda-3965-d3e3-b6e6-291f91f42b69.png)|![スクリーンショット 2017-07-16 15.45.35.png](https://qiita-image-store.s3.amazonaws.com/0/39911/788cc5d9-5146-291e-5e48-45152f3de09e.png)|
|:--:|:--:|

|選択項目|利用方法<br>![スクリーンショット 2017-07-16 15.46.45.png](https://qiita-image-store.s3.amazonaws.com/0/39911/8bd66c28-4e06-44fd-3a56-d47f032e3087.png)|マウントポイント選択<br>![スクリーンショット 2017-07-16 15.47.39.png](https://qiita-image-store.s3.amazonaws.com/0/39911/01fcf49a-7aba-0faa-72c9-85cfac626e3d.png)|名前<br>![スクリーンショット 2017-07-16 16.33.57.png](https://qiita-image-store.s3.amazonaws.com/0/39911/01464261-4b9c-c589-43c8-e94f6e4bbda6.png)||
|:--:|:--:|:--:|:--:|:--:|
|LVM VG vg0, LV root|ext4選択<br>![スクリーンショット 2017-07-16 15.47.23.png](https://qiita-image-store.s3.amazonaws.com/0/39911/6c587329-93aa-ae8f-96a9-d9360851e6fa.png)|/選択<br>![スクリーンショット 2017-07-16 16.16.37.png](https://qiita-image-store.s3.amazonaws.com/0/39911/c416be13-a8e5-bd9e-6873-b0049b396812.png)||![スクリーンショット 2017-07-16 16.20.11.png](https://qiita-image-store.s3.amazonaws.com/0/39911/0ad95bc6-fbbf-b147-1a1a-73c6e8a4c0da.png)|
|LVM VG vg0, LV data|ext4選択<br>![スクリーンショット 2017-07-16 15.47.23.png](https://qiita-image-store.s3.amazonaws.com/0/39911/6c587329-93aa-ae8f-96a9-d9360851e6fa.png)|/srv選択<br>![スクリーンショット 2017-07-16 15.51.30.png](https://qiita-image-store.s3.amazonaws.com/0/39911/746865e4-44cc-3977-5c90-4d4318870ab2.png)||![スクリーンショット 2017-07-16 15.52.36.png](https://qiita-image-store.s3.amazonaws.com/0/39911/23205f98-902b-3c17-9441-71b89db9a8aa.png)|
|LVM VG vg0, LV swap|スワップ領域選択<br>![スクリーンショット 2017-07-16 16.28.14.png](https://qiita-image-store.s3.amazonaws.com/0/39911/cc17b840-e4d6-8f68-db74-0bf310fd59b3.png)|自動的にスワップのマウントになった|||
|RAID デバイス0.1|ext2選択<br>![スクリーンショット 2017-07-16 16.36.06.png](https://qiita-image-store.s3.amazonaws.com/0/39911/4d03966e-9920-d1cf-0fb3-5bdd96602fe8.png)|/boot選択<br>![スクリーンショット 2017-07-16 16.37.46.png](https://qiita-image-store.s3.amazonaws.com/0/39911/8fa46b26-cded-ed8f-f964-df1e6e575567.png)|bootと入力<br>![スクリーンショット 2017-07-16 16.34.20.png](https://qiita-image-store.s3.amazonaws.com/0/39911/b90d23da-762e-f56e-76b9-be441f1bb78c.png)|![スクリーンショット 2017-07-16 16.40.46.png](https://qiita-image-store.s3.amazonaws.com/0/39911/45a49fd8-7831-b897-88ae-5dfbb347be20.png)|
設定が終わったら、「パーティショニングの終了とディスク変更の書き込み」を選択
書き込み内容を確認して「はい」選択
![スクリーンショット 2017-07-16 17.06.53.png](https://qiita-image-store.s3.amazonaws.com/0/39911/3961d1a2-73c0-a5d0-8191-59648de6f93b.png)![スクリーンショット 2017-07-16 17.09.34.png](https://qiita-image-store.s3.amazonaws.com/0/39911/79b19111-4ba8-ef7b-a698-3ae872710c45.png)
これでシステムインストールが始まります。

終わったら再起動。コンソール画面でなら```reboot```

これで起動はするのですが、
Rescumodeではユーザ登録がないので、あとでユーザ登録をする必要がでてきます。

通常インストーラ画面ではユーザ登録できます。

|![スクリーンショット 2017-07-15 13.14.14.png](https://qiita-image-store.s3.amazonaws.com/0/39911/771cd74d-e3c6-9874-0ec7-266f40205497.png)<br>(この画面は[option+2]で表示される。)|通常インストールのメニュ<br>|
|:--:|:--:|
|![スクリーンショット 2017-07-16 0.49.47.png](https://qiita-image-store.s3.amazonaws.com/0/39911/73778386-317f-7aef-63c7-c1f2dee9c86f.png)|ネットワークの設定|
|![スクリーンショット 2017-07-15 13.09.17.png](https://qiita-image-store.s3.amazonaws.com/0/39911/357243b8-285e-b166-0b3f-9a7e924aaf25.png)![スクリーンショット 2017-07-15 13.09.48.png](https://qiita-image-store.s3.amazonaws.com/0/39911/db69568c-13b5-ea8c-65c4-dc1bd5d1cdb8.png)![スクリーンショット 2017-07-15 13.10.18.png](https://qiita-image-store.s3.amazonaws.com/0/39911/d83be621-fb24-9c96-91bf-15a09f0b188a.png)![スクリーンショット 2017-07-15 13.10.31.png](https://qiita-image-store.s3.amazonaws.com/0/39911/c9dcc4f8-bb61-9a14-949b-46abb2465112.png)![スクリーンショット 2017-07-15 13.10.56.png](https://qiita-image-store.s3.amazonaws.com/0/39911/04e1f27c-ba04-5553-fd03-e57812f59962.png)|ユーザとパスワードのセットアップ|
|![スクリーンショット 2017-07-15 13.27.57.png](https://qiita-image-store.s3.amazonaws.com/0/39911/ede915cd-436e-5104-22e8-e5acd1818af5.png)|時間の設定 Asia/Tokyoなのを確認|


# 障害対応の確認
## [対応]片肺になったときに自動的には起動しない理由
ubuntu16.04は　mdadam version3.3 がデフォルトらしい
バージョンを3.4にするとなおる
[参考]
https://askubuntu.com/questions/789953/how-to-enable-degraded-raid1-boot-in-16-04lts

```
 wget http://launchpadlibrarian.net/275652884/mdadm_3.4-4_amd64.deb
 sudo dpkg -i mdadm_3.4-4_amd64.deb
```

## [対応]HDD交換とした場合
+ 新HDD パーティションをわける

```
 新HDDが認識しているか確認
 $ls /dev/sd*　　＜-生きてるHDDが/dev/sdaとして、新HDDが/dev/sdb とした場合
 $sudo fdisk -l /dev/sda　　＜ー 生きているHDDのパーティション情報の確認
 $sudo fdisk /dev/sdb　　　＜ー 初期化　sdaと同じ設定にする
```
+ 新HDD RAIDデバイスへ組み込む

```
 現在のraid状況の確認 md0に新HDDはつながっていないことはmd0の並びと[U_]からわかる
 $cat /proc/mdstat
 Personalities：[raid1]・・・・・
 md0：active raid1 sda2[0] 
        ・・・・・・・[U_] 
 md0に組み込む
 $mdadm -a /dev/md0 /dev/sdb2
 再度状況の確認
 $cat /proc/mdstat
 Personalities：[raid1]・・・・・
 md0：active raid1 sda2[0] sdb2[0]　　　＜ー追加されてる 
        ・・・・・・・[UU] 　　＜ーUで認識されてる
```

もっと複雑な障害対応の時に必要になるかも
参考：
[LVMでRAID1の構築、障害対応、他RAIDボリュームの追加](http://qiita.com/TsutomuNakamura/items/c9c277049e0032ed6116#lvm-%E3%81%A7raid1-%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B)