Debian GNU/Linux 4.0 etch だとインストーラーから RAID の設定ができるようだが、とりあえずハードディスク一台でシステムを立ち上げて、後から別にハードディスク2台を追加したので、ここでは mdadm(8) を用いた話。RAID レベルは RAID1。
RAID 構成の基本的な流れは
- それぞれのハードディスクにパーティションを作成 (fdisk)
- RAID を構成 (mdadm)
- ファイルシステムを構築 (mkfs)
- マウント設定
で、1 の fdisk と 3 の mkfs の間に RAID の構築が挟まると考えると(少なくとも私は)分かりやすい。
パーティションの作成
今回は SATA 接続の2台のハードディスクが対象なので
# fdisk /dev/sdb
# fdisk /dev/sdc
なお、パーティション・タイプを聞いてくる質問
Hex code (type L to list code):
に対しては fd (inux raid autodetect) と答える。
RAID1 を構成
# aptitude install mdadm
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
ファイルシステムを構築
# /sbin/mkfs.ext3 /dev/md0
構築状況の確認は、
# mdadm --detail /dev/md0
または
# cat /proc/mdstat
でできる。
マウント設定
例えば /data にマウントするには
# mount /dev/md0 /data
起動時に RAID を自動マウントさせるには /etc/fstab に
dev/md0 /data ext3 defaults 1 1
を追加する。
/etc/mdadm/mdadm.conf の編集
Web を検索すると
- DEVICE
- ARRAY
の設定が必要という記事をたくさん見かける。DEVICE に関しては default の mdadm.conf に
DEVICE partitions
とあり、man mdadm.conf を見るとこう書くだけで /proc/partitions から自動で拾うとある。DEVICE /dev/sdb1 /dev/sdc1 と具体的に書いた方が効率がよいのか、それとも partisions でよいのか分からなかったのでとりあえず partitions のままにしておく。
ARRAY に関しては、default の mdadm.conf には記載が無く、しかも
# definitions of existing MD arrays
というここに書いて風のコメントがあったので追記した。
# mdadm -E --scan >> /etc/mdadm/mdadm.conf
ところで RAID とペアでよく出てくる LVM (Logical Volume Manager) が最初何者なのか知らなかった。分散ファイルシステム/ブロックデバイスをまとめる - 古橋貞之の日記 にある、
データの冗長化はできるが動的にサイズを変更できないRAIDと、データの冗長化はできないが動的にサイズが変更できるLVMと、動的にサイズを拡張できるファイルシステムを組み合わせる手法です。
というシンプルな説明が非常に分かりやすいと思う。