RAID-5, 6あるいは1などでディスクが壊れた際の交換方法を紹介します。
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 62498888 1879716 60619172 4% / /dev/md0 521580 521580 0 100% /mnt/md0 # mdadm --detail /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Sat Jan 31 16:05:28 2009 Raid Level : raid5 Array Size : 521600 (509.46 MiB 534.12 MB) Device Size : 104320 (101.89 MiB 106.82 MB) (... 略 ...) Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 3 8 18 3 active sync /dev/sdb2 4 8 50 4 active sync /dev/sdd2 5 8 34 5 active sync /dev/sdc2 # mdadm --fail /dev/md0 /dev/sdb1 mdadm: set /dev/sdb1 faulty in /dev/md0 # mdadm --detail /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Sat Jan 31 16:15:28 2009 Raid Level : raid5 Array Size : 521600 (509.46 MiB 534.12 MB) Device Size : 104320 (101.89 MiB 106.82 MB) (... 略 ...) Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 3 8 18 3 active sync /dev/sdb2 4 8 50 4 active sync /dev/sdd2 5 8 34 5 active sync /dev/sdc2 6 8 17 - faulty spare /dev/sdb1
LinuxでソフトウェアRAIDアレイをいじるにはmdadmコマンドを使います。使用中のRAIDアレイ(100MBディスク6本からなるRAID-5アレイ)で故障を発生させます。といっても実際にディスクを破壊するわけにはいきませんので、--failでシステムに故障を伝えます。故障したデバイスはfaulty spareという状態に変更されます。
次に故障したディスクを外します。
# mdadm --remove /dev/md0 /dev/sdb1 mdadm: hot removed /dev/sdb1 # mdadm --detail /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Sat Jan 31 16:28:28 2009 Raid Level : raid5 Array Size : 521600 (509.46 MiB 534.12 MB) Device Size : 104320 (101.89 MiB 106.82 MB) (... 略 ...) Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 3 8 18 3 active sync /dev/sdb2 4 8 50 4 active sync /dev/sdd2 5 8 34 5 active sync /dev/sdc2
故障したディスク(faulty spare)を --removeに指定して、アレイから取り除きます。アレイから取り除けるのは、故障している、していないに関わらずスペアディスクのみです。活きているディスクを --removeしようとしても失敗します。
次に新たなディスクを追加します。
# mdadm --add /dev/md0 /dev/sdb1 mdadm: added /dev/sdb1 # cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] md0 : active raid5 sdb1[6] sdd2[4] sdc2[5] sdb2[3] sdd1[2] sdc1[1] 521600 blocks level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU] [====>................] recovery = 20.5% (22272/104320) finish=0.0min speed=22272K/sec unused devices: <none> # mdadm --detail /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Sat Jan 31 16:58:28 2009 Raid Level : raid5 Array Size : 521600 (509.46 MiB 534.12 MB) Device Size : 104320 (101.89 MiB 106.82 MB) (... 略 ...) Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 3 8 18 3 active sync /dev/sdb2 4 8 50 4 active sync /dev/sdd2 5 8 34 5 active sync /dev/sdc2
新たなディスクを --addで加えることでディスクの数が6本に戻ります。するとリカバリが始まります。今まで通り --detailで見ても良いですが、/proc/mdstatにもっとわかりやすい進行表示が出ます。
素晴らしいことにRAID-5アレイを止めなくとも、上記の作業が全てできます。リカバリ処理もI/O帯域を食いつぶさないように加減しますから、ユーザは --removeしてディスク交換して --addすれば、後はシステムがよきに計らってくれるわけです。便利ですね。
< | 2009 | > | ||||
<< | < | 01 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.20.
using GD 2.3.3(png support.)