HDDの障害によるデータの損失に備えるために、RAIDは有効な手段である。一度RAIDを使い始めると、実際にトラブルに見舞われたことはほとんどないが、もう非RAID構成ではどうも不安で仕方がない。
RAIDには、ハードウェアで構成するものとソフトウェアで構成するものがある。最近では、マザーボードにRAID機能が搭載されていることも多いが、Linuxではどうも使い勝手が悪いところがある。また、RAIDが搭載されていないマザーボードでも運用しなければならないことがあることや、Linuxでの運用の柔軟性などから、基本的にはLinuxのカーネルが提供するソフトウェアRAIDを使っている。以下では、Gentooでの設定方法を記録しておく。
ここではRAID 1でミラーリングされたディスク上にGentooをインストールする方法を記述する。この手順が理解できれば、他のパターンでも簡単に設定できるだろう。
Install CDで起動する。
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
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を構成できるようになる。
mdadmでRAIDデバイスを作成するとデバイスの構成が始まる。検証しなくても問題なく動作するが、初回はチェックしておくのがよいだろう。RAIDデバイスのステータスは
で確認できる。watchコマンドなどでデバイス構成の進捗を確認するとよい。
> watch --interval=1 cat /proc/mdstat
デバイス構成中でも操作は可能だが、できれば完了するまで待つのがよいかもしれない。
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
以上の手順で/dev/md*ができるので、このデバイスにファイルシステムを作成して通常通り利用する。