mdadm RAID1復旧の試験

下準備

ディスクは3本ある状態。状況確認

fdisk -l

フォーマット

sdb,sdcでraid1作成。sddはスペアディスク。それぞれ10MB。

fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd

fdiskのコマンドはこんな。

n, p, 1, 1
t, fd

raid0作成

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[bc]1
mkfs.ext4 /dev/md0
mount /dev/md0 /mnt/

確認

mdadm --misc --detail /dev/md0
mdadm --misc --examine /dev/sdb1
mdadm --misc --examine /dev/sdc1

停止と再開のテスト

umount /mnt
mdadm --misc --stop /dev/md0
mdadm --misc --detail /dev/md0
mdadm --assemble /dev/md0 /dev/sd[bc]1

[root@localhost ~]# mdadm --assemble /dev/md0 /dev/sd[bc]1
mdadm: /dev/md0 has been started with 2 drives.

ケース: sdbのディスクが壊れた

sdbに失敗マークつける

mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --misc --detail /dev/md0

[root@localhost ~]# mdadm --misc --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 11:42:49 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 18
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
_
0 8 17 - faulty spare /dev/sdb1

sdbを取り除く

mdadm /dev/md0 --remove /dev/sdb1
mdadm --misc --detail /dev/md0

[root@localhost ~]# mdadm /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0
[root@localhost ~]# mdadm --misc --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 11:50:11 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 21
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1

この状態でも使えることは使える

再起動してみるとどうなる?

/dev/md127で認識されてる。
これはinitramfsで自動assembleされるため。
dracutとかで作り直せばよさそうだけど、パラメータわからん。

sudo fdisk -l

ディスク /dev/md127: 8 MB, 8126464 バイト
ヘッド 2, セクタ 4, シリンダ 1984
Units = シリンダ数 of 8 * 512 = 4096 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

デグレーデッドな状態

mdadm --misc --detail /dev/md127

[root@localhost ~]# mdadm --misc --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 11:53:23 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 31
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1

mount /dev/md127 /mnt/

マウントすればもちろん使える

新規ディスク追加

mdadm /dev/md127 --add /dev/sdd1
mdadm --misc --detail /dev/md127

addするとrebuildが走る。けど、この場合は10MBのディスクなので一瞬で終わってる。

[root@localhost ~]# mdadm /dev/md127 --add /dev/sdd1
mdadm: added /dev/sdd1
[root@localhost ~]# mdadm --misc --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 15:55:14 2013
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 56
_
Number Major Minor RaidDevice State
2 8 49 0 active sync /dev/sdd1
1 8 33 1 active sync /dev/sdc1

md127からmd0に戻す

mdadm --misc --stop /dev/md127
mdadm --assemble /dev/md0 /dev/sd[cd]1

[root@localhost ~]# mdadm --misc --stop /dev/md127
mdadm: stopped /dev/md127
[root@localhost ~]# mdadm --assemble /dev/md0 /dev/sd[cd]1
mdadm: /dev/md0 has been started with 2 drives.

ケース:追加したsddのディスクも壊れた

mdadm /dev/md0 --fail /dev/sdd1
mdadm /dev/md0 --remove /dev/sdd1

sdbに新しいディスクを入れて追加する

mdadm /dev/md0 --add /dev/sdb1

おっけー

ケース:片肺で動かす

追加ディスクないけどとりあえず動かしたい、もしくは、片方のディスクだけでデータみたい、というケース。

1ディスクだけでアセンブル

runをつけないとinactiveでの起動になる。

mdadm --assemble /dev/md0 /dev/sdc1 --run

[root@localhost ~]# mdadm --assemble /dev/md0 /dev/sdc1 --run
mdadm: /dev/md0 has been started with 1 drive (out of 2).
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1]
7936 blocks super 1.2 [2/1] [_U]
_
unused devices:
[root@localhost ~]# mdadm --detail /dev/md127
mdadm: cannot open /dev/md127: No such file or directory
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 16:01:55 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 81
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1

いちおう使えるので、mount -o ro /dev/md0 /mntとかで読み取り専用でマウントするのがよいと思う。