So-net無料ブログ作成
検索選択

Linux software RAID - ディスクの全領域で RAID 5 ができる

Ubuntu Server の Software RAID では、アレイを構成する各ディスクの全領域を使って RAID 5 を作成しても起動できる。

Ubuntu Server 12.10 のインストールの場合は、「ディスクのパーティショニング」セクションのところで、「手動」を選択して、アレイを構成する各ディスクにパーティションを作成後、software RAID を選択すると、各ディスクのパーティションを RAID に構成できる。

ソフトウェアで RAID 5 を実現しているわけだから、カーネルが起動しないと RAID 上のファイルシステムにアクセスできないと思っていた。そのため、以前は、カーネルがある boot パーティションは software RAID から除外していた。

どうやら GRUB 2 ブートローダーが、最初に Software RAID を認識して、アクセスできるようにしているみたいだ。grub のメニューで c を入力して、コマンドラインで確認したところ、md/0 が表示されている。

image

Grub 2 ブートローダーはどんな構成になっているのか。
Software RAID を構成する各ディスクのパーティションは、2048 セクターから始まっているが、ディスク先頭から124セクターまでの 64KB には boot.img (MBR,512byte)や core.img が書き込まれているようだ。
(R-Studio のエディタで、ディスクイメージファイルの124セクターを表示)
image
この core.img が Software RAID を認識して、root ファイルシステムにアクセスできるようにしているようだ。

boot.img と core.img は、ubuntu 12.10 では、/boot/grub/i386-pc/ にある。

root@ubuntu:/boot/grub/i386-pc# file *.img
boot.img:            x86 boot sector; partition 4: ID=0xd3, starthead 205, startsector 4278184271, 0 sectors, code offset 0x63
cdboot.img:          data
core.img:            data
diskboot.img:        data
g2hdr.img:           x86 boot sector, code offset 0x8c
grldr.img:           x86 boot sector, code offset 0x5e
kernel.img:          ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped
lnxboot.img:         Linux kernel x86 boot executable bzImage, version \353fHdrS\003\002, RW-rootFS,

lnxboot.img はcore.img に含まれる。GRUB 2 は小さなLinux カーネルで、これが SoftwareRAID を認識できるのでは。
GNU GRUB Manual

strings でバイナリ中のテキストを見てみると、boot.img + core.img とddでコピーしたハードディスクイメージ sda.img の先頭はほとんど同じになる。

root@ubuntu:/boot/grub/i386-pc# strings boot.img core.img | head -n 15
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
Floppy
loading
Geom
Read
Error
Z[^_]
@t;1
root@ubuntu:/boot/grub/i386-pc# strings /mnt/sda.img | head -n 15
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
loading
Geom
Read
Error
Z[^_]
@t;1
([^_]

Grub 2 については、GNU GRUB Manual があるが、まだよく分かっていないので、解釈が間違っているかもしれない。
VirtualBox で仮想ディスクを3台作り、Ubuntu Server 12.10 をインストールしている。RAID 5 を構成するディスクを取り外してみたり、0 を書き込んでみたりしてリカバリを実験したので、次回記事にしたい。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。