ソフトウェアRAID 1を組んでみてわかったこと

ソフトウェアRAID 1を組んでみてわかったこと

ちょっと右脳を使ってイメージしてみてください。
梅雨、台風、息が止まるぐらい熱くじめったい空気 ・・・ そして海!! ★(^_^)//

イメージできましたか? 
皆さんがご存知の夏の話ではありません。
初めてソフトウェアRAIDを組んでみて感じたことです。

これからその試行錯誤の道程を公開しますので、海に至るまでへばらずについてきてください。

1.梅雨が始まる。

image04
小規模でlabo用のサーバーということもあり、要件定義せずうかつに動いたのが梅雨の始まりでした。

■環境:
 OSはdebian 8.1、ソフトウェアRAIDに使ったのはmdadm 3.3.2-5

既に新規構築完了したサーバーへHDDを一台追加し、RAID 1にするというミッション。
RAIDコントローラーなんてものはありません。残された選択肢は初のソフトウェアRAIDへのチャレンジでした。
ざっと調査を終え、こんな手順に進むことに。

手順1.3TBのHDDを繋ぎ、fdiskで既存HDDと同じくパーティションを分ける。
手順2.mdadmコマンドで、追加したHDDのみでRAID 1構成を組む。
     ※注: OS領域を含む既存のHDDはbusyなため、ここではRAIDに追加できません。
手順3.OS等がインストールされた既存HDDは、rescueモードでRAID 1に追加する。

rescueモードから抜けて、OSを起動すると・・・あら?OSが起動しません!!
表示されたのは、こんなプロンプトです。

結局、OSのプロンプトが表示されることはありませんでした。

お恥ずかしながら、ここで一度断念し、OS再構築に踏み切ることにしました。

※mdadmとgrubに詳しい方なら、ここで既に解決策を掴んでいるかと思います。
まあ、以降の試行錯誤の過程をあたたかく見守ってください <(_ _)>

2.台風がやってきた!!

image07
どうせやり直しなら、OSのインストールするときの設定画面からHDDをRAID 1に設定すればいいじゃん!

と思い、サーバー構築を進めると今度はOSのインストール途中にCD-ROMドライブが勝手にアンマウントされ、OSのインストールが進まない事象が発生しました。

OSインストール時にコンソールを表示(★Tip参照)させ、CD-ROMをマウントしながら、なんとか乗り越えても、最終的にOS起動時に表示されるのはまたもgrubプロンプト!!

★Tip: Debianインストール中にAlt + F1~F5キーの内どれかを押してみてください。
     コンソールが切り替わりOSインストール時のログ閲覧と、インストール処理と並行して
     shell環境の使用が可能です。

3.晴れた後はじめったい空気

image08
嵐の中であれこれと試行錯誤した結果、以下のように手順をまとめました。
じめったい内容ですが、一応載せておきます。

手順1.3TBのHDD BへOSをインストールする。

手順2.3TBのHDD Aを追加し、parted(※)にてHDD Bと同じくパーティションを設定する。

     ※2TB以上のHDDのパーティション時に使えるツール

手順3. HDD Bのみでraid 1デバイスを作成し、ファイルシステムを構築する。

手順4. 作成したRAID 1デバイスをマウントし、HDD Bの内容をコピーする。

手順5. HDD Aへgrubをインストールする。

 ⇒blkidコマンドで確認した/dev/md0のUUIDを反映
 ⇒set rootの値を’(md/0)’に置換

手順6. OS起動時の自動マウント設定を変更する。

 ⇒blkidコマンドで確認した/dev/md0と/dev/md1のUUIDを反映

手順7.mdadmのコンフィグを設定する。

手順8.initramfsを更新する。

手順9.サーバーを再起動

サーバーを再起動すると、/dev/md0が自動でマウントされ起動する。。はず
でしたが、ここでまたもgrubプロンプトが登場してしまいます。

ああー、この夏、長くなりそう~~ (T-T)

ただ、こっちもgrubのtrouble shootingについて調査が進んでいました。
またもじめったいですが、以下の入力でOSは起動します。

手動だけど、ちゃんとOSは立ち上がるんですね。

うん?! ここで初めて気が付きます。
ソフトウェアRAIDは、OSが起動する前だと、読み込めないのでは?!

4.そして海へ

image05
答えは、手順5の「# vi /boot/grub/grub.cfg」にありました。

bootする際、ソフトウェアRAIDが機能するように関連モジュールを明示的にインストールすること!!

/boot/grub/grub.cfgに以下の設定を追記します。

再度、grubインストールしてOSを再起動すると…なんと/dev/md0からOSが起動しました!!
yeah—————————-!!

以降の手順は以下の通りです。

手順10./dev/sdbのパーティションtypeを変更する。

[/crayon]

手順11.RAIDデバイスへHDD Bを追加する。

すると、recoveryが始まり正常にソフトウェアRAIDが機能します。
recoveryの進捗及びRAIDの状態は以下のコマンドで見れます。

最後に

上記の手順を応用すると、片方のHDD障害時の交換と1台のHDDで稼働中のサーバーをRAID 1化することができます。

技術的な詳細説明は割愛していますが、失敗しながら黙々と進んでみるとLinuxの起動とDiskのパーティションについて理解できるいいミッションだったなと思います。

エンジニア力を鍛えたい方は、ぜひゼロからチャレンジして自分のものにすることをおすすめします。 ではまた!!

コメント