OS:UbuntuでソフトウェアRAIDで対応する必要があり、
RAID1の構成をしたときに、インストール後、起動してこないという現象があった
検証のためのメモ
Mac環境で試すために、VirtualBoxを使うことにします。
OSはUbuntu16.04 Server版を使用します。
参考URL
How To Create RAID Arrays with mdadm on Ubuntu 16.04
LVM(Logical Volume Manager)について
論理ボリュームの管理
環境
VirtualBoxの準備
- VirtualBoxのインストール
https://www.virtualbox.org/ からダウンロード
すでにインストールされているけど、うまく起動できない場合、
一旦VirtualBoxをuninstallすると解決するかもしれません。
uninsallしても用意した仮想環境は削除されません。
- VirtualBoxに仮想環境を準備する
- raid構成を再現するために仮想HDDを複数設定する
- インストールする予定のubuntu(ubuntu-16.04.2-server-amd64.iso)を設定する
Ubuntuをインストールする
コンソール画面でfdiskコマンドを使ってパーティション分けをします。
fdiskコマンドを使うためには、「Rescumodeモード」で実行する必要があります。
Mac環境ではコンソール画面へはoption+fn+F2、インストーラ画面へはoption+fn+F1で切り替えれます。
(実機だと、コンソール画面へはALT+F2、インストーラ画面へはALT+F1)
VirtualBoxの切り替えのコツ。(VirtualBoxがアクティブ状態で)
optionを先に押しておいて、fn+F2を同時に押すと割と素直に切り替わってくれました。
[言語選択] 日本語 | [メニュ] 一番下のモード(Rescumode) |
---|---|
[インストーラ画面] | [コンソール画面] | |
---|---|---|
コンソール画面に切替できるが fdiskコマンドはまだない |
|
|
日本語選択 | ||
ネットワーク読込が始まるとfdiskコマンドが使えるようになる |
- HDDの確認
# 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 パーティション情報を書き込んで,終了する]
/dev/sda の設定はこんな感じになった。/dev/sdbも同じ設定をする。
ソフトウェア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を入力するのが安全だそうです
raid1ができているかを確認。
[UU]となってるので認識している
/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 パーティション情報を書き込んで,終了する]
/dev/md0 の設定の確認をする。(md0p1,md0p2ができてる)
物理ボリュームの作成(LVM設定)
LVMはサイズを変える可能性があるならば入れとくのがいいらしい。
# vgcreate vg0 /dev/md0p2 <ーボリュームグループの作成
# lvcreate -L 4G -n root vg0 <ー論理ボリュームの作成3つにわけてみた
# lvcreate -L 200M -n swap vg0
# lvcreate -l100%FREE -n data vg0
# lvscan <ー確認
# lvremove /dev/vg0/data <ー失敗した時に消した
パーティションの設定が終わったので、
インストーラー画面に戻って続きをする。
手動でディスクのパーティショニング設定
インストーラ画面で「手動」を選択し、コンソーラ画面で設定した
RAID1デバイス、LVM vg0の領域の設定をそれぞれ行います。
(ファイルシステム作成、マウントの作業)
終わったら再起動。コンソール画面でならreboot
これで起動はするのですが、
Rescumodeではユーザ登録がないので、あとでユーザ登録をする必要がでてきます。
通常インストーラ画面ではユーザ登録できます。
(この画面は[option+2]で表示される。) |
通常インストールのメニュ |
---|---|
ネットワークの設定 | |
ユーザとパスワードのセットアップ | |
時間の設定 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ボリュームの追加