Linux
mdadm

ソフトウェアRAID の初期設定と運用 - mdadm

More than 3 years have passed since last update.

最近利用することがなくなった ソフトウェアRAID だが 初期構築と運用方法をまとめる。(CentOS/Redhat)


初期設定

2台のHDDにパーティションテーブルを作成する。


HDD1台目 パーティションテーブルの作成 (/dev/sdb)

# fdisk /dev/sdb

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-1044, 初期値 1):1
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-1044, 初期値 1044): 1044


作成したパーティションのタイプを Linux raidに設定

コマンド (m でヘルプ): t

選択した領域 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました


パーティションテーブルの保存

コマンド (m でヘルプ): w

パーティションテーブルは変更されました!


パーティションテーブルの確認

# fdisk /dev/sdb -l

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 1044 8385898+ fd Linux raid 自動検出


HDD2台目 パーティションテーブルの作成 (/dev/sdc)

# fdisk /dev/sdc

手順はHDD1台目と同様のため省略


ソフトウェアRAID設定

2台のHDD(/dev/sdb, /dev/sdc) をソフトウェアRAIDとして /dev/md0 に割り当て

# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1


ファイルシステムの構築

作成したRAIDデバイス(/dev/md0)にファイルシステム(ext3)を構築します。

mke2fs -j /dev/md0


ファイルシステムのマウント

# mkdir /mirror

# mount /dev/md0 /mirror/


RAID 情報の保存

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

起動時にマウントされるように /etc/fstab へ追加

# vi /etc/fstab

/dev/md0 /mirror ext3 defaults 0 0

初期構築は以上です。/mirror にソフトウェアRAIDがマウントされています。


運用方法


RAID状況の確認(同期やリビルド)

# cat /proc/mdstat


詳細確認

# mdadm --detail /dev/md0


1台目のハードディスク /dev/sdb に障害を発生させる

# mdadm --fail /dev/md0 /dev/sdb


障害が発生したHDD /dev/sdb を/dev/md0 から切り離す

# mdadm --remove /dev/md0 /dev/sdb


RAIDデバイスにハードディスク /dev/sdb を追加する

# mdadm --add /dev/md0 /dev/sdb


HDDの詳細

# mdadm --detail --scan 

ARRAY /dev/md0 metadata=1.2 spares=1 name=centos:0 UUID=7aef3364:f7d73931:8c05ce32:dcd9ae39


HDDを交換した場合は RAID情報を保存

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


その他


ブートディスクをソフトウェアRAIDにする場合

上記の例では不必要だが、MBRを書き込むディスクをRAIDとするときは、2本目のハードディスクにもMBRを書き込む必要がある。

rootとしてログインし、GRUB コマンドを実行します。

  [root@linux ~]# grub   

grub> root (hd0,0)  
grub> setup (hd0)
grub> root (hd1,0)  
grub> setup (hd1)  
grub> quit


mdadm コマンドが利用できない場合

# yum install mdadm