Quantcast
Channel: Royal Windows
Viewing all articles
Browse latest Browse all 288

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

$
0
0

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 を書き込んでみたりしてリカバリを実験したので、次回記事にしたい。


Viewing all articles
Browse latest Browse all 288

Trending Articles