Software RAID DegradedArray event

サーバが固まってしまった ❗

PostgreSQL でテーブルを join している最中だったので、
ちょっとムチャし過ぎ?なんて思ったのですが、復帰する事がなく 😥

久しぶりに電源スイッチ長押ししました 😎

無事再起動後ログインしてみると mdadm monitoring さんからメールがきました。
(サーバ名は変更してあります)

Subject: DegradedArray event on /dev/md1:server.example.com
From: mdadm monitoring <root@server.example.com>
To: root@server.example.com
Date: Thu, 19 May 2011 14:00:43 +0900 (JST)
 
This is an automatically generated mail message from mdadm
running on server.example.com
 
A DegradedArray event had been detected on md device /dev/md1.
 
Faithfully yours, etc.

またですか 😐

さっそく状態を確認してみました。

$ cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda2[1]
      2096384 blocks [2/1] [_U]
 
md2 : active raid1 hdc3[0] hda3[1]
      75762432 blocks [2/2] [UU]
 
md0 : active raid1 hdc1[0] hda1[1]
      264960 blocks [2/2] [UU]
 
unused devices: <none>

ちなみに md1 は swap で利用しているパーティションです。

NI-Lab.さんのDebian GNU/Linux etch で RAID 1 ミラーリングの障害復旧してみるを参考にして同じ事を行ってみました。

mdadm –detail すると /dev/hdc2 が remove されています。

# mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90.01
  Creation Time : Mon Feb 26 20:28:14 2007
     Raid Level : raid1
     Array Size : 2096384 (2047.59 MiB 2146.70 MB)
    Device Size : 2096384 (2047.59 MiB 2146.70 MB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 1
    Persistence : Superblock is persistent
 
    Update Time : Thu May 19 13:57:13 2011
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0
 
           UUID : e0e42dda:9a0f1b0d:4eb33107:12dbb51d
         Events : 0.205033
 
    Number   Major   Minor   RaidDevice State
       0       0        0        -      removed
       1       3        2        1      active sync   /dev/hda2

badblock を非破壊リードライトモードで調査します。

結構時間がかかります。。。

# badblocks -nsv -o /tmp/hdc2.bad /dev/hdc2
Checking for bad blocks in non-destructive read-write mode
From block 0 to 2096482
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: done
Pass completed, 0 bad blocks found.

”Pass completed, 0 bad blocks found.” でした 🙂

➡ それでは md1 に /dev/hdc2 を戻します。

# mdadm --manage /dev/md1 --add /dev/hdc2

resync しているか確認します。

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdc2[2] hda2[1]
      2096384 blocks [2/1] [_U]
      [==>..................]  recovery = 11.6% (243904/2096384) finish=1.1min s
peed=27100K/sec
md2 : active raid1 hdc3[0] hda3[1]
      75762432 blocks [2/2] [UU]
 
md0 : active raid1 hdc1[0] hda1[1]
      264960 blocks [2/2] [UU]
 
unused devices: <none>

➡ なんだか良さそうです 🙂

少し時間をおいてもう一度確認。

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdc2[0] hda2[1]
      2096384 blocks [2/2] [UU]
 
md2 : active raid1 hdc3[0] hda3[1]
      75762432 blocks [2/2] [UU]
 
md0 : active raid1 hdc1[0] hda1[1]
      264960 blocks [2/2] [UU]
 
unused devices: <none>

➡ 復活しました :mrgreen:

NI-Lab.さんありがとうございます。