起動途中に電源を落としたりしたせいで、RAID5のディスク一つの同期が取られなくなり、sdc2が認識されずに下記のような状態 "UU_U"になってしまった。
$ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sda2[0] sdd2[3] sdb2[1] 467370816 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U] unused devices: <none>
ちなみにdmesgに表示されている起動途中のメッセージは次のような感じです。
[ 75.015810] md: md0 stopped. [ 75.023087] md: bind[ 75.023280] md: bind [ 75.023460] md: bind [ 75.023634] md: bind [ 75.023706] md: kicking non-fresh sdc2 from array! [ 75.023764] md: unbind [ 75.023818] md: export_rdev(sdc2) [ 75.029305] raid5: device sda2 operational as raid disk 0 [ 75.029363] raid5: device sdd2 operational as raid disk 3 [ 75.029418] raid5: device sdb2 operational as raid disk 1 [ 75.030264] raid5: allocated 4262kB for md0 [ 75.030322] raid5: raid level 5 set md0 active with 3 out of 4 devices, algorithm 2
さて、ここで sdc2 を復旧します。すでにsdc2はremoved状態になっているので
$ sudo mdadm -D /dev/md0
.... Number Major Minor RaidDevice State 0 8 2 0 active sync /dev/sda2 1 8 18 1 active sync /dev/sdb2 2 0 0 2 removed 3 8 50 3 active sync /dev/sdd2
追加は普通にmdadmで追加します。
$ sudo mdadm /dev/md0 --add /dev/sdc2
この直後は/proc/mdstatに進捗が表示されるので終るまで過激なI/Oは一応避けます。
$ while true ; do cat /proc/mdstat ; sleep 5 ; done $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdc2[4] sda2[0] sdd2[3] sdb2[1] 467370816 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U] [>....................] recovery = 0.1% (201996/155790272) finish=51.3min speed=50499K/sec
さて本格的に壊れなくてよかったなと思いますが、起動する度に sda2 や sdb2 が見えなかった事もあったので物理的には弱いと思いますが、論理的な破壊では意外にRAID5は頑丈なのかもしれません。RAID10も復旧に関しては同じか、RAID5よりもお手軽に解決するでしょうけれども。 まぁバックアップはpdumpfsを使ってUSB接続の外部ディスクに/usr/local, /homeに限定して定期的に取っているので何かあっても大丈夫でしょう。
0 件のコメント:
コメントを投稿