ハードウェアRAIDコントローラーをソフトウェアRAIDしようとして起動しなかった話
お詫び
Qiitaの元記事にて、区切り線を「---」で書いている場所があり、これがZennの記法に干渉して一部うまく表示できない記事がある事を認識しています。
全ての記事を精査しきれていないため、お手数ですがお見かけの際は教えていただけると大変喜びます。
ごあいさつ
鯖缶のくせに何を当たり前のことを書いているんだ、と思われる方は非常に多いと思いますが、アプリ屋あがりにはコレが結構難しい話だったので、備忘録がてらまとめておきます。
まさかこれだけのことのために2日もハマるとは思わなかったので……。
環境(ほかの環境でも起こりえる可能性があります)
- サーバーラックに格納するタイプの大きなアレ
- 専用RAID-SASコントローラー(MegaRAID)
- 後で知ったんですが、RAID機能がないSASコントローラーがあるそうです。お使いの機種にあるかどうかは要確認:サポート契約が必要?)
- ハードディスク(SAS)
- Ubuntu 14.04 Server(2017/11/07 時点で最新を使用)
こうすると動きました
名称はなんとなくでつけてます。手順はあってますが表記はうろ覚え。
電源を入れる前に
- 【要検証】HDDはVirtual Driver Group0で構築するものだけにする
BIOS側
- SATA,eSATAのコントローラー設定をRAIDにしない
- ブートオプションにHard Disk(Raid Adapter)を選択。UEFIではない
- ブートオプションメニューの下の方にあるHDD BBS Propertiesの起動メニューを2.と同じにする。この場合Hard Disk(Raid Adapter)
Raidコントローラー側(MegaRAID)
- 通常通り、Virtual Driver Groupなどを設定
- Ctrl MngのブートさせたいVirtual Driver Groupを指定
OSパーティション設定
- この前段までは普通に環境に合わせて設定
- ブート領域を設定。色々なサイトを参考にすると1Mぐらい?確保するとありますが、私はインストールガイドが指定する容量を設定しました。
ここで一つでも間違っているとGRUBレスキューモードが起動したり、Kernel Panicが起こったり(エラーメッセージはVFS...)最悪の場合、BIOS起動後に反応が返ってこなくなりました。
注
なお、Virtual Driveを設定する際に、同時にイニシャライズしておかないとOSレベルのパーティション設定でブートローダーがコケる?ようです。
私の環境だけかもしれませんが、後のOSインストール時にシステム領域のHDD以外を挿した状態だとOSがどこにインストールされたか分からず、GRUB rescueが起動します。
原因考察
考察と書いているのはメーカー側のサポートの範疇を超えてしまっているのと、私も正直説明が難しいからです……。
- ハードウェアRAIDコントローラーをソフトウェアRAIDすると起動しなかったのは、BIOSレベルでRAID制御をしようとしているものの、参照先がHDDなどではなくハードウェアRAIDコントローラーであるため『そんなもんねーです!』と突き返されてしまっている。
- ただし、OSインストール自体はできる。どこにインストールされているのかはこれまた分からないですが……
- BIOSが見ている記憶領域とハードウェアRAIDが管理している記憶領域(Virtual Driver - 実記憶領域)は別物?
- ハードウェアRAIDコントローラーのブート設定でVirtual Driveの指定をしてますが、OSのインストールはこの辺りをよろしくやってくれていない?
- インストールするOS種類、あるいはバージョンが古いために起こっている?
- Ubuntu 16.04 GUIだと何とかなってるっぽい。その時の設定を覚えていないので要検証
他にもいろいろガチャガチャやってたので、考察内容に記憶違いの情報が混ざってるかもしれません。
ちなみに
別メーカーのサーバーラック用のPCで似たような構成のもので試しましたが、こちらでも再現しています。
追記
HDDが2TB以上のパーティションにOS入れようとしていたので、いわゆる2TBの壁問題にぶちあたってこうなってしまったんじゃないか?
という可能性は高いです。
運用上検証の意味がなかったので精査していませんが、考えられる要因の一つとして挙げておきます。
さらに追記
Ubuntu16.04やCentOS7.3で上記問題が再現しなかったので、OSがハードウェアRAIDに対応しているかどうかが関係しているかもしれません。
Discussion