ここではLinuxのソフトウェアRAIDを取り扱う
ソフトウェアRAIDの場合、違う型番のHDDを使ったり柔軟な構成を組める。
しかし、ソフトウェアRAIDのバグ=RAIDアレイ崩壊の可能性もある点に注意する。
RAID同期ステータスの確認方法
# cat /proc/mdstat
HDDが故障した時にRAIDアレイ(RAID-1など)を再構築するには、mdadmコマンドを利用する。
説明に使う各HDDのステータスは下記の通りとする。
ステータス | /dev/md0 | /dev/md1 | |
/dev/sda | 稼働 | /dev/sda1 | /dev/sda2 |
/dev/sdb | 故障 | /dev/sdb1 | /dev/sdb2 |
# mdadm /dev/md0 -f /dev/sdb1 # mdadm /dev/md1 -f /dev/sdb2 # cat /proc/mdstat
# mdadm /dev/md0 -r /dev/sdb1 # mdadm /dev/md1 -r /dev/sdb2
# fdisk -l /dev/sda # fdisk /dev/sdb : w --- 稼働中のHDDと同じパーティション(Start-End)を作成する パーティション情報をそのままダンプする場合は↓のコマンドを打つ === # sfdisk -d /dev/sda | sfdisk /dev/sdb –-force
# fdisk /dev/sdb : t : fd Changed System type of partition 1 to fd (Linux raid autodetect) : w
# mdadm /dev/md0 --add /dev/sdb1 # mdadm /dev/md1 --add /dev/sdb2
# cat /proc/mdstat # mdadm --detail /dev/md0 # mdadm --detail /dev/md1
kernelのアップデート・再インストール、RAID-1アレイの再構築後は、
RAID-1で冗長化している2台のHDDそれぞれにgrubを入れ直す必要がある。
今回は、/dev/sdaと/dev/sdbでRAID-1を組んでいる事とする。
grubのデバイス指定はLinuxのデバイス指定とリンクしていないので、
明示的に設定を行う必要がある。
例えば、rootデバイスが/dev/sdaの場合、カンマの後の指定は下記のようになる。
/dev/sda | grub> device (hd0) /dev/sda |
/dev/sda1 | grub> root (hd0,0) |
/dev/sda2 | grub> root (hd0,1) |
/dev/sda3 | grub> root (hd0,2) |
/dev/sdb | grub> device (hd1) /dev/sdb |
/dev/sdb1 | grub> root (hd1,0) |
/dev/sdb2 | grub> root (hd1,1) |
/dev/sdb3 | grub> root (hd1,2) |
grubを手動インストールする際は、デバイスIDが大きいサブ側(/dev/sdb)へ先にインストールし、
その後にデバイスIDが小さいメイン側(/dev/sda)へインストールする
# df | grep boot /dev/md0 636 206984 268336 44% /boot # cat /proc/mdstat | grep md0 md0 : active raid1 sdb1[1] sda1[0] # grub --- > device (hd1) /dev/sdb > root (hd1,0) > setup (hd1) > > device (hd0) /dev/sda > root (hd0,0) > setup (hd0) > > quit