RAID
2012/05/17 Yohei EHARA
RAID
複数台のハードディスクを組み合わせて仮想的に1台のハードディスクとする技術。
主に用いられるのは、以下に示すRAID 0,1,5,6あたり。
RAID 0
ストライピングとも呼ばれる。
例えば、n台のHDD2TBをRAID 0で構築した場合、このHDDは1台のHDD n TBとみなされる。この方法では、n台のHDDに分散して書き込みができるため、書き込み速度は向上するが、
n台のうち1台でも故障すれば全てのデータが失われる
そのため、RAID 0それのみで用いるのは非常に危険である。
RAID 1
ミラーリング (二重化) とも呼ばれる。偶数台のHDDが必要。
例えば、n台のHDD2TBをRAID 1で構築した場合、このHDDは1台のHDD (n/2) TBとみなされる。この時、n台のHDDのうち半数のn/2台はバックアップとして用いられるため、
n台のうち(n/2)+1台が故障しない限りデータは失われない。
耐障害性は非常に高いが、HDDの利用効率は半分となっているため、利用効率と耐障害性を両立させたければ後述のRAID 5,6が良い。
RAID 5
最低3台のHDDが必要。
例えば、n台のHDD2TBをRAID 5で構築した場合、このHDDは1台のHDD (n-2) TBとみなされる。この時、n台のHDDそれぞれに容量の 1/n だけパリティ領域 (バックアップのようなもの。厳密にはちょっと違う) を作成することで、
n台のうち2台が故障しない限りデータは失われない。
耐障害性、利用効率の両面で優れているが、HDDの数が増えるほど耐障害性が低くなるという欠点がある。
RAID 6
最低4台のHDDが必要。
例えば、n台のHDD2TBをRAID 6で構築した場合、このHDDは1台のHDD (n-4) TBとみなされる。つまり、RAID 5におけるパリティ領域を2倍にし、耐障害性を向上させたのがRAID 6である。
n台のうち3台が故障しない限りデータは失われない。
耐障害性、利用効率の両面で優れているが、RAID 5と同様にHDDの数が増えるほど耐障害性が低くなるという欠点がある。
その他
これら以外にも、RAID 1+0, 0+1, 5+0, 5+1, 6+0, 6+1 など、上記の基本のRAIDを組み合わせることでRAIDの種類は増える。
- RAIDの種類について: http://www.atmarkit.co.jp/fpc/special/raidglossary/index.html
- ソフトウェアRAIDとハードウェアRAID: http://itpro.nikkeibp.co.jp/article/COLUMN/20060712/243118/
UbuntuでソフトウェアRAID
$ sudo apt install mdadm
- RAIDの構築
まず各HDDにパーティションを作る(フォーマットは不要)。gpartedなどで。 $ sudo mdadm --create /dev/md0 --level=5 --raid-device=5 /dev/sd[bcdef]1 $ cat /proc/mdstat ... UUUU_になるが, 最後の_は気にしない。じきに正常になる。
- 失敗したら→RAIDの削除
$ sudo mdadm --stop /dev/md0 $ sudo mdadm --remove /dev/md0 $ sudo mdadm --zero-superblock /dev/sd[abcde]
- 障害のあるディスクを見つけるには?
$ cat /etc/mdadm.conf ... 正常状態の記述 $ cat /proc/mdstat ... 現状の記述 これらを比べる。後者に入っていないデバイスが障害。
- RAIDのUUIDを調べる (fstab用。/dev/disk/by-uuidとは違う!)
$ sudo tune2fs -l /dev/md0 |grep UUID
- RAIDの構築(mdadm --create)が終わったら, フォーマット
$ sudo mkfs -t ext4 /dev/md0
- ソフトウェアRAIDを構築したHDD群は, そのまま別のマシンにつないでも, /dev/md127などのデバイスファイルとして自動認識されるようだ(少なくともRAID5で4TB x 5台のシステムは, うまくいった)。とてもフレキシブル!
Keyword(s):
References:[トレーニングコース] [とらりもんHOME]