■RAIDボリュームからのブートとパーティション
システム全体をソフトウェア RAIDのボリュームとして、RAIDボリュームからシステムを起動したい場合の注意点をご紹介します。
HDD 1 | MBR | biosgrub | RAID 1
/boot | RAID
/ | SWAP |
・・・ | MBR | biosgrub | SWAP |
HDD N | MBR | biosgrub | SWAP |
SWAP領域に冗長性を持たす意味はあまりありません。
システム全体をRAIDボリューム上に構築したい場合でも、SWAP領域は別途用意します。
Linuxは起動時に存在するSWAP領域を自動で使用しますので、HDD を交換した際などには残りのSWAP領域を自動で使用します。
SWAP領域は余裕があれば実メモリより大きめに確保します。
例えば実メモリ 4GB を HDD 3 台に分ける場合、 各 2GB で、計 6GB を確保するなどするとよいでしょう。
各 HDD にSWAP領域を確保 |
HDD故障で残ったSWAP領域 |
HDD 1 | RAID
/ | SWAP |
・・・ | SWAP |
HDD N | SWAP |
|
HDD 1 | RAID | SWAP |
・・・ | RAID / | SWAP |
HDD N | SWAP |
|
SWAP領域用に RAID 0 を構築することによって、高速化を図ることも考えられます。
RAID 0 ボリュームは HDD 1台の故障で破壊されますので、 HDD を交換した場合には後に再度SWAP領域用の RAID 0 ボリュームを作成する必要があります。
SWAP領域用に RAID 0 を構築 |
HDD故障時にSWAP領域は不可 |
HDD 1 | RAID
/ | RAID 0
SWAP |
・・・ |
HDD N |
|
HDD 1 | RAID | RAID 0
SWAP |
・・・ | RAID / |
HDD N |
|
Linux の ソフトウェア RAID は Linux により実現されているため、GRUB ブートローダが Linux カーネルを起動するまでは基本的には使用できません。
このため、システム全体をRAIDボリューム上に構築したい場合でも、/boot を GRUB ブートローダが読み込める場所へ、すなわちRAIDボリュームの外に出す工夫が必要となります。
/boot パーティションは、100MB から 200MB 程度を確保します。
※ /boot ディレクトリにはカーネルと起動イメージ(initrd)があります。
※ 例外的に RAID 1 だけは、初期の GRUB からサポートされています。
※ GRUB2 ではこの他の RAID もサポートされはじめましたが、このページでは紹介しません。
最初の HDD の最初のパーティションに /boot をインストールする方法が最も簡単です。しかし、最初の HDD が故障した場合には、たとえRAIDボリュームが縮退して運用可能であっても、/boot が無くなるため起動できなくなってしまいます。
HDD 1 に /boot |
HDD 1 故障時は起動不可 |
HDD 1 | /boot | RAID
/ |
・・・ | |
HDD N | |
|
HDD 1 | /boot | RAID |
・・・ | | RAID / |
HDD N | |
|
RAID 1 だけは、初期の GRUB からサポートされていますので、/boot に使用する部分を RAID 1 の多重ミラーとして構築することで、HDD 故障時の起動、再起動が可能となります。
/boot を RAID 1 にする |
HDD 1 故障時も起動可能 |
HDD 1 | RAID 1
/boot | RAID
/ |
・・・ |
HDD N |
|
HDD 1 | /boot | RAID |
・・・ | RAID 1 /boot | RAID / |
HDD N |
|
起動するためには、GRUB を MBR へインストールする必要があります。
縮退時も考慮して、全ての HDD の MBR へそれぞれ GRUB をインストールしておくことをお勧めします。
また、HDD 交換時にも新しい HDD の MBR への GRUB のインストールをお勧めします。
Ubuntu の Alternative版のインストーラにて、このように /boot を RAID 1 に設定してインストールした場合には、自動で /dev/sda から /dev/sdX まで全てに grub-install が実行されます。
HDD 1 | MBR | RAID 1
/boot | RAID
/ |
・・・ | MBR |
HDD N | MBR |
※ MBR は、HDD の先頭セクタです。
2TBを超す HDD ではパーティションテーブルに GPT を利用しますが、GPT からブートするためには 予約済み BIOS ブート領域(biosgrub)というパーティション約1MBを用意する必要があります。
手作業でパーティションテーブルを設定する際には忘れがちなので注意しましょう。
※ GPT からのブートは GRUB2 からサポートされています。
HDD 1 | MBR | biosgrub | RAID 1
/boot | RAID
/ |
・・・ | MBR | biosgrub |
HDD N | MBR | biosgrub |
Ubuntu のインストーラでは、ガイドによるパーティショニングを試しに行ってみることで、biosgrub が必要かどうかを判断することもできます。
gdisk を使用してパーティションを切る場合には、Ubuntu インストーラのガイドによるパーティショニングに習い、
2048 の倍数のセクタから開始し、 2048 の倍数マイナス 1 のセクタで終了するように設定することをお勧めします。
デフォルトでは First sector = 34 からユーザが使用できる領域ですが、 2047 セクタまでの約1MBは、空き領域としておくということになります。
先頭から 33 セクタより前のセクタは、MBR、GPTヘッダとGPT予約領域 ですので、ユーザが意識する必要はなく設定も出来ません。
末尾に端数のセクタが残りますが、これも空き領域としておくということになります。
さらに最後の34セクタにも先頭と同様なGPTヘッダとGPT予約領域がありますが、同様にユーザは意識する必要はなく設定も出来ません。
※ 2048 の倍数は、仕様ではありませんので、こだわる必要はありませんが、他のOSや設定ツールとの互換や、RAIDのストライプサイズと実際のセクタが揃うことでのパフォーマンス向上などが考えられます。
※ ここでいうセクタは CHS ではなく LBA です。
※ 1 sector は 512 byte です。
0 | 0 | MBR |
1 | 33 | GPTヘッダとGPT予約領域 |
Start (sector) | End (sector) | Size | Code | Name | | |
34 | 2047 | 空き領域 | | 設
定
可
能
範
囲 |
2048 | 4095 | 1024.0 KiB | EF02 | BIOS boot partition | 設
定
範
囲 |
4096 | 395263 | 191.0 MiB | FD00 | Linux RAID |
395264 | 3903123455 | 1.8 TiB | FD00 | Linux RAID |
3903123456 | 3907028991 | 1.9 GiB | 8200 | Linux swap |
3907028992 | | 空き領域 | |
Start (sector) | End (sector) | Size | Code | Name | | |
最後から 33 手前 | 最後 | GPTヘッダとGPT予約領域 |
※ | 4096 | = | 2048 | * | 2 |
※ | 395264 | = | 2048 | * | 193 |
※ | 3903123456 | = | 2048 | * | 1905822 |
※ | 3907028992 | = | 2048 | * | 1907729 |
参考
Linuxmania製品を使おう!
- RAIDの選定
- RAIDボリュームからのブートとパーティション
- ソフトウェアRAIDインストール手順(作成中)
- ソフトウェアRAID故障HDD交換手順(作成中)