mdadm RAID5 障害対応

ビーーーーーーーーーーーーーーーーーーーーーーーーーー!!

日曜の朝に鳴り響くBeep音なんだなんだと、鳴っている方向に近づいていくと、ん?
パソコン(このWEBサーバ)近く?
UPSになにかあったかな?違う。
電源?違う。
筐体の中から鳴っている・・・・
あれ?RAIDカードだ!

自分が使っているのは、HighPointのRocketRAID 2720SGL
このカード単体でも、RAID 0,1,5,10,50 の機能があるものの、柔軟性を重視して
あえてsingle-diskとして認識させて、SW RAID(mdadm)にてRAID5を構築している。
20140706-133031-48631964.jpg
嫁からも近所迷惑だから早く止めろと催促。
焦って/var/log/messege を確認するとこんな感じのエラーが大量に・・・

Jun 29 05:17:50 user01server kernel: end_request: I/O error, dev sdf, sector 1246355968
Jun 29 05:17:50 user01server kernel: sd 0:0:5:0: [sdf] Unhandled error code
Jun 29 05:17:50 user01server kernel: sd 0:0:5:0: [sdf] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Jun 29 05:17:50 user01server kernel: sd 0:0:5:0: [sdf] CDB: Read(10): 28 00 4b 57 7b 00 00 00 80 00
Jun 29 05:17:50 user01server kernel: end_request: I/O error, dev sdf, sector 1264024320
Jun 29 05:17:50 user01server kernel: sd 0:0:5:0: [sdf] Unhandled error code
Jun 29 05:17:50 user01server kernel: sd 0:0:5:0: [sdf] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Jun 29 05:17:50 user01server kernel: sd 0:0:5:0: [sdf] CDB: Read(10): 28 00 4a 49 e3 00 00 00 80 00

これは死んだのか?
続いてRAIDの状況を確認。

[user01@user01server ~]$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid5 sda[0] sdd[4] sdf[6](F) sdb[1] sdc[2] sdg[7] sde[5]
      17580810240 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [7/6] [UUUU_UU]
unused devices:

おぉ!Uが一つ無い!! < これはちょっと感激。
さらに念のため詳細に確認。

[user01@user01server ~]$ sudo mdadm --detail /dev/md127
[sudo] password for user01:
/dev/md127:
        Version : 1.2
  Creation Time : Mon Dec  9 00:54:27 2013
     Raid Level : raid5
     Array Size : 17580810240 (16766.37 GiB 18002.75 GB)
  Used Dev Size : 2930135040 (2794.39 GiB 3000.46 GB)
   Raid Devices : 7
  Total Devices : 7
    Persistence : Superblock is persistent

    Update Time : Sun Jun 29 08:48:31 2014
          State : clean, degraded
 Active Devices : 6
Working Devices : 6
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 1024K

           Name : user01server.user01.dyndns.org:0  (local to host user01server.user01.dyndns.org)
           UUID : ace14840:4340b170:8a51d18e:4aba9a0d
         Events : 39638

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       8       16        1      active sync   /dev/sdb
       2       8       32        2      active sync   /dev/sdc
       4       8       48        3      active sync   /dev/sdd
       4       0        0        4      removed
       5       8       64        5      active sync   /dev/sde
       7       8       96        6      active sync   /dev/sdg

       6       8       80        -      faulty
[user01@user01server ~]$

faulty

なんかカッコいいっすね。faulty

ちなみに、まだアラームが鳴り響く中での作業である。
引き続きアラームを止めるべく、該当のDiskを外すことに。
コマンドを打ってもsdfは既に存在しないことから、システムからは既に居ないと判断。

それでは、外すかと筐体内を見るが、どれがsdf? RAID5なので、間違えたDISKを抜けば即死である。
多分これ! では作業は出来ない。

幸いにもHDD筐体の側面には、シリアル番号の記載があり、じゃこれを頼りに外すかと考えシリアル番号を確認。
障害HDDは既に無いため、その他のDiskを確認。

[root@user01server dev]# hdparm -i /dev/sda | grep SerialNo
 Model=ST3000DM001-1CH166, FwRev=CC24, SerialNo=Z1F2YF60

20140706-133949-49189553.jpg
全HDDを確認し存在しない1台を特定。
オンラインのまま接続を抜いた。

Beep音止まらず・・・

まさか、復旧まで止まらない、つもりなのか?

んー、しんどい。

近所には同じDiskがなさそうだったので、仕方なく秋葉原まで行って購入。
早速Diskをオンラインで指して見ると。Beepが止まり、あっさりsdkとして認識。ここまでで障害から約12時間経過

Jun 29 20:03:17 user01server kernel: scsi 0:0:5:0: Direct-Access     ATA      ST3000DM001-1ER1 CC43 PQ: 0 ANSI: 5
Jun 29 20:03:17 user01server kernel: sd 0:0:5:0: Attached scsi generic sg5 type 0
Jun 29 20:03:17 user01server kernel: sd 0:0:5:0: [sdk] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
Jun 29 20:03:17 user01server kernel: sd 0:0:5:0: [sdk] Write Protect is off
Jun 29 20:03:17 user01server kernel: sd 0:0:5:0: [sdk] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Jun 29 20:03:17 user01server kernel: sdk: unknown partition table
Jun 29 20:03:17 user01server kernel: sd 0:0:5:0: [sdk] Attached SCSI disk

このまま、RAIDに追加

[root@user01server ~]# mdadm --manage /dev/md127 --add /dev/sdk

[root@user01server ~]# mdadm --detail /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Mon Dec  9 00:54:27 2013
     Raid Level : raid5
     Array Size : 17580810240 (16766.37 GiB 18002.75 GB)
  Used Dev Size : 2930135040 (2794.39 GiB 3000.46 GB)
   Raid Devices : 7
  Total Devices : 8
    Persistence : Superblock is persistent

    Update Time : Sun Jun 29 20:23:41 2014
          State : active, degraded, recovering
 Active Devices : 6
Working Devices : 7
 Failed Devices : 1
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 1024K

 Rebuild Status : 0% complete

           Name : user01server.user01.dyndns.org:0  (local to host user01server.user01.dyndns.org)
           UUID : ace14840:4340b170:8a51d18e:4aba9a0d
         Events : 67077

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       8       16        1      active sync   /dev/sdb
       2       8       32        2      active sync   /dev/sdc
       4       8       48        3      active sync   /dev/sdd
       8       8      160        4      spare rebuilding   /dev/sdk
       5       8       64        5      active sync   /dev/sde
       7       8       96        6      active sync   /dev/sdg

       6       8       80        -      faulty
[root@user01server ~]#

[root@user01server ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid5 sdk[8] sda[0] sdd[4] sdf[6](F) sdb[1] sdc[2] sdg[7] sde[5]
      17580810240 blocks super 1.2 level 5, 1024k chunk, algorithm 2 [7/6] [UUUU_UU]
      [>....................]  recovery =  1.1% (34513536/2930135040) finish=911.5min speed=52944K/sec
unused devices:

勝手にRebuilding始まった模様。915min約15時間か・・・

Jun 29 20:23:13 user01server kernel: md: recovery of RAID array md127
Jun 30 08:40:31 user01server kernel: md: md127: recovery done.

結局終わったのは約12時間20分後でした。
今回/dev/sdkをRAIDに追加しちゃったけど、再起動してずれてRAID構成崩れないかが気になるところ。

今回はかなり予定外でしたが、色々と勉強になりました。

  • 日曜の朝に判明したのは、週一回のmdadmによる全セクタチェックが入ること。
  • RAIDカードを使ってRAIDを組んでいなくても、RAIDカードが書き込みエラーを検知してDiskごと切り離していた模様。
  • DISKの切り離しと、復旧は電源つけたままで行えたこと。
  • よって、DISKは取り外しし易い場所に設置するべきだと思ったこと。
  • 冗長性計算も踏まえてRAID5を組んだはずだが、RAID5は障害中、結構ドキドキすること。
  • よって、今後はSpareDiskを用意するか、やはりRAID6の方が精神的にも良いと思ったこと。
  • そして、きちんと監視出来る仕組みを整えたほうが良いと思ったこと。
  • 監視できていれば、Beepは絶対止めたほうが良いと思ったこと。

今後色々対応していきたいと考えています。

コメントを残す

メールアドレスが公開されることはありません。