今どきのソフトウェアRAID1 (Fedora 20)



(2014.11)

家族のノートPCのHDDがクラッシュして、再構築にずいぶん手間が掛かった。データのほとんどは自宅サーバのほうにあったので何とか事なきをえたが、やっぱりデータ喪失は大変。

ディスクドライブを冗長化する方法を調べてみた。

ネット上に解説ページは多いが、古い情報も多い。最新の構成に合うものを取捨選択しなければならない。

もともと1台のHDDで正常に動作している Fedora 20 Linux システムに、同じ大きさのHDD を1台だけ (2台ではなく) 加えて、全体をRAID1化する。

RAIDレベル

RAIDレベルは、数字が大きいほうがいいわけではない。

RAID 0 Data striping による性能向上. 冗長ではない. むしろ耐障害性は悪化。Intel Rapid Storage Technology (RST) が使っている。わざわざこれを選ぶことはない。
RAID 1 Mirroring. ディスクドライブ2台(以上)に同内容を書き込む. 冗長.
RAID 4 (RAID 5で代替された。)
RAID 5 Parity を分散して記録. 冗長。1台までの故障に対応。
RAID 6 Parity を二つ生成し、分散記録。冗長。2台までの故障に対応。ディスクドライブの必要台数はRAID 5より多い。
RAID 10「RAID 1/0」や「RAID 1+0」とも言う (同じもの). RAID 1アレイを複数使って RAID 0する. 冗長. 必要ディスクドライブ台数多い。

小規模だと RAID 1になるだろう。ビジネスだと RAID 6.or 10?

See RAIDレベルの話: 1+0と6はどっちが安全か? - たごもりすメモ 正しい運用を前提とするなら, RAID 6 のほうが, RAID 1+0 より数桁、安全。

LinuxのRAIDモジュール

(2015.9更新)

Linux でソフトウェアRAID1を構築しようと思うと、次の3つの方法がある。(1), (2) は Step by Stepで構築する手順も書いてみた。

ちなみに、"RAID on LVM" というのを挙げている解説ページもあるが, 冗長になっておらず、意味がない。(LVM情報が破損したときに、どこにミラーされているの?)

(1) Multiple-Device (MD) カーネルドライバ
MDカーネルドライバを使ってRAIDアレイを作り、その上でLVM を作る。もっとも, LVMは作らなくても構わない。

LVM on RAIDと呼ばれ、昔からある方法。

/boot も冗長化できるのがメリット。

(2) LVM RAID volume (RAID logical volume)
LVM の機能で、ミラー化された RAID logical volume (LV) を作る。

LVM は RAID 1/4/5/6/10をサポートしている。

RHEL 6までは Mirrored Logical Volumeという名前だった. RHEL 7 (Fedora 18~19) から RAID Logical Volumeに代わっている。 2.3. LVM Logical Volumes

柔軟性が高く、物理ディスクの大きさを揃える必要がないのがメリット。/boot を載せられないので、そこは md と組み合わせる。

現在は、RAID logical volume は内部で MDカーネルドライバを使っている, ようだ。

(3) Btrfs
Btrfsは、ほかの Linux ファイルシステムと異なり、RAID 機能を統合している。

2015年2月にリリースされた Linuxカーネル 3.19 で RAID 5/6も統合されたようだ。しかし、動くようになっているかどうか不明。

MDカーネルドライバ (LVM on RAID)

伝統的な方法。複数の物理ディスクに, 必要な同じ容量のパーティションを用意し、これらのパーティションをペアにして、/dev/mdN を作る。

あとは、そのボリュームに LVM を載せればOK.

Step by Step で RAID 1化する解説を用意しました:

LVM RAID logical volume

LVM RAID volumeのほうが、非常に柔軟性がある。同じ大きさのドライブを用意しなくても、とにかく Logical Volume (LV) が複数のドライブに配分されれば大丈夫。

ただし現在のところはまだ、/boot には適用できない (GRUB2から起動できない). /boot についてはMD RAID (かつ非LVM) で作ってやる必要がある。

Step by Step で RAID 1化する解説を用意しました:

落とし穴

ミラクル・リナックス:ブートディスクをソフトウェア RAID1 (ミラーリング) に構成する際の注意

ブートドライブをRAID1にする場合は、それぞれのドライブのMBRにGRUBをインストールしなければならない。そりゃそうだ。

ネット上のページだと, /bootはRAID化できないとしているものも多いが、現在ではMD RAIDでRAID化可能。

パーティションの切り方

シングルHDD構成で、Fedora 20 の初期設定だと, /bootは独立したパーティションだが、swapがLVMの上に載っている。swapをRAID化する必要はない。

LVM on RAIDでいく場合は、swapをLVMの外に出さなければならない。

また、/ (root) と /home, /var が同じ LVになっているので、これもついでに分けてもいいかもしれない。

少なくとも, ファイルサーバでは, //home は分けよう。Fedora 17のころは、分かれていた。