目次

Linux Software RAID

HDDの障害によるデータの損失に備えるために、RAIDは有効な手段である。一度RAIDを使い始めると、実際にトラブルに見舞われたことはほとんどないが、もう非RAID構成ではどうも不安で仕方がない。

RAIDには、ハードウェアで構成するものとソフトウェアで構成するものがある。最近では、マザーボードにRAID機能が搭載されていることも多いが、Linuxではどうも使い勝手が悪いところがある。また、RAIDが搭載されていないマザーボードでも運用しなければならないことがあることや、Linuxでの運用の柔軟性などから、基本的にはLinuxのカーネルが提供するソフトウェアRAIDを使っている。以下では、Gentooでの設定方法を記録しておく。

ここではRAID 1でミラーリングされたディスク上にGentooをインストールする方法を記述する。この手順が理解できれば、他のパターンでも簡単に設定できるだろう。

参考資料など

起動

Install CDで起動する。

RAID用カーネルモジュールのロード

RAID1 = ミラーリングで構成するので、RAID1モジュールをロードする。

> modprobe raid1

ロードしなくてもコマンドの発行で自動的にロードするはずだが念のためロードしておく。

パーティションの作成

パーティションごとにRAIDを構成する。

ここでは、「/boot」「/」「swap」の3種類を作成する。

> gdisk /dev/sda

デバイスファイル作成

RAIDデバイス数に応じて作成する。

# mknod /dev/md1 b 9 1
# mknod /dev/md2 b 9 2
# mknod /dev/md3 b 9 3

RAIDの構成

mdadmコマンドでRAIDデバイスを構成

grub0.97でRAID1を利用する場合には、「/boot」および「/」パーティションについては古いメタデータ形式にする必要がある。

基本的には–metadata=0.90で全て作成する。

grub2が標準で利用可能になったので、–metadata=1.2など新しい形式でも利用可能。その場合、–nameオプションで名前を指定することもできる。指定しなければ、その時のホスト名を基準に作成されるようだ。

> mdadm --create --verbose --metadata=0.90 /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
> mdadm --create --verbose --metadata=0.90 /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
> mdadm --create --verbose --metadata=0.90 /dev/md3 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3

#grub2以降の場合
> mdadm --create --verbose /dev/md3 --name=NAME --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3

2TB以降のディスクを利用する場合の注意点

initfamfsの作成

> genkernel --mdadm --mdadm-config=/etc/mdadm.conf initramfs

Gentooではgenkernelコマンドを利用して作成できる。RAIDを利用するためには、mdadmオプションを指定してinitramfsを作成しなければならない。またRAIDの構成情報も指定してやる(標準の場所なら指定しなくても問題ない)。

grubのパラメータの変更

title Gentoo Linux 3.x.y-gentoo
kernel /vmlinuz-3.x.y-gentoo root=/dev/ram0 real_root=/dev/md2 domdadm
initrd /initramfs-genkernel-x86_64-3.x.y-gentoo

以上でinitrdを利用してRAIDを構成できるようになる。

RAIDデバイスの準備

mdadmでRAIDデバイスを作成するとデバイスの構成が始まる。検証しなくても問題なく動作するが、初回はチェックしておくのがよいだろう。RAIDデバイスのステータスは

で確認できる。watchコマンドなどでデバイス構成の進捗を確認するとよい。

> watch --interval=1 cat /proc/mdstat

デバイス構成中でも操作は可能だが、できれば完了するまで待つのがよいかもしれない。

RAID構成情報の記述

metadata=0.9を利用する場合には、(確かmetadataにデバイス名が記録されているので)構成ファイルを記述しなくても自動的に元の構成が再現される。metadata=1.*の場合は、カーネルのRAID自動構成は機能するが、デバイス名が/dev/md127など意図しないものとなる。

metadata=1.*ではudevのruleでmdadmコマンドが呼ばれて/etc/mdadm.confに沿ってRAIDデバイスが構成される。rootfsの場合には、initrdで仮のファイルシステムでカーネルをロードして、その中のbusyboxでmdadmを実行してRAIDを構成する。rootfsでなければ、カーネルの自動構成は機能する。

> mdadm --detail --scan >> /etc/mdadm.conf 

OSのインストールなど

以上の手順で/dev/md*ができるので、このデバイスにファイルシステムを作成して通常通り利用する。