Linuxmaniaトップ活用ガイドRAIDボリュームからのブートとパーティション

Linuxmania:活用ガイド


■RAIDボリュームからのブートとパーティション


システム全体をソフトウェア RAIDのボリュームとして、RAIDボリュームからシステムを起動したい場合の注意点をご紹介します。

HDD 1MBRbiosgrubRAID 1

/boot
RAID

   /   
SWAP
・・・MBRbiosgrubSWAP
HDD NMBRbiosgrubSWAP



SWAP領域



SWAP領域に冗長性を持たす意味はあまりありません。 システム全体をRAIDボリューム上に構築したい場合でも、SWAP領域は別途用意します。 Linuxは起動時に存在するSWAP領域を自動で使用しますので、HDD を交換した際などには残りのSWAP領域を自動で使用します。

SWAP領域は余裕があれば実メモリより大きめに確保します。 例えば実メモリ 4GB を HDD 3 台に分ける場合、 各 2GB で、計 6GB を確保するなどするとよいでしょう。

各 HDD にSWAP領域を確保 HDD故障で残ったSWAP領域
HDD 1RAID

   /   
SWAP
・・・SWAP
HDD NSWAP
HDD 1RAIDSWAP
・・・RAID
   /   
SWAP
HDD NSWAP


SWAP領域用に RAID 0 を構築することによって、高速化を図ることも考えられます。 RAID 0 ボリュームは HDD 1台の故障で破壊されますので、 HDD を交換した場合には後に再度SWAP領域用の RAID 0 ボリュームを作成する必要があります。
SWAP領域用に RAID 0 を構築 HDD故障時にSWAP領域は不可
HDD 1RAID

   /   
RAID 0

SWAP
・・・
HDD N
HDD 1RAIDRAID 0

SWAP
・・・RAID
   /   
HDD N


/boot



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/bootRAID

   /   
・・・
HDD N
HDD 1/bootRAID
・・・RAID
   /   
HDD N

RAID 1 だけは、初期の GRUB からサポートされていますので、/boot に使用する部分を RAID 1 の多重ミラーとして構築することで、HDD 故障時の起動、再起動が可能となります。
/boot を RAID 1 にする HDD 1 故障時も起動可能
HDD 1RAID 1

/boot
RAID

   /   
・・・
HDD N
HDD 1/bootRAID
・・・RAID 1
/boot
RAID
   /   
HDD N



MBR(マスターブートレコード)



起動するためには、GRUB を MBR へインストールする必要があります。 縮退時も考慮して、全ての HDD の MBR へそれぞれ GRUB をインストールしておくことをお勧めします。 また、HDD 交換時にも新しい HDD の MBR への GRUB のインストールをお勧めします。

Ubuntu の Alternative版のインストーラにて、このように /boot を RAID 1 に設定してインストールした場合には、自動で /dev/sda から /dev/sdX まで全てに grub-install が実行されます。

HDD 1MBRRAID 1

/boot
RAID

   /   
・・・MBR
HDD NMBR

※ MBR は、HDD の先頭セクタです。


GPT(GUID パーティションテーブル)



2TBを超す HDD ではパーティションテーブルに GPT を利用しますが、GPT からブートするためには 予約済み BIOS ブート領域(biosgrub)というパーティション約1MBを用意する必要があります。 手作業でパーティションテーブルを設定する際には忘れがちなので注意しましょう。

※ GPT からのブートは GRUB2 からサポートされています。

HDD 1MBRbiosgrubRAID 1

/boot
RAID

   /   
・・・MBRbiosgrub
HDD NMBRbiosgrub

Ubuntu のインストーラでは、ガイドによるパーティショニングを試しに行ってみることで、biosgrub が必要かどうかを判断することもできます。

セクタ指定を 2048 の倍数に



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 です。

2TB HDD での設定例

00MBR
133GPTヘッダとGPT予約領域
Start (sector)End (sector)SizeCodeName
342047空き領域









204840951024.0 KiBEF02BIOS boot partition





4096395263191.0 MiBFD00Linux RAID
39526439031234551.8 TiBFD00Linux RAID
390312345639070289911.9 GiB8200Linux swap
3907028992空き領域
Start (sector)End (sector)SizeCodeName
最後から 33 手前最後GPTヘッダとGPT予約領域

4096 = 2048 * 2
395264 = 2048 * 193
3903123456 = 2048 * 1905822
3907028992 = 2048 * 1907729


参考






[作成日 2011/04/26]