ビーーーーーーーーーーーーーーーーーーーーーーーーーー!!
日曜の朝に鳴り響くBeep音なんだなんだと、鳴っている方向に近づいていくと、ん?
パソコン(このWEBサーバ)近く?
UPSになにかあったかな?違う。
電源?違う。
筐体の中から鳴っている・・・・
あれ?RAIDカードだ!
自分が使っているのは、HighPointのRocketRAID 2720SGL
このカード単体でも、RAID 0,1,5,10,50 の機能があるものの、柔軟性を重視して
あえてsingle-diskとして認識させて、SW RAID(mdadm)にてRAID5を構築している。
嫁からも近所迷惑だから早く止めろと催促。
焦って/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
全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は絶対止めたほうが良いと思ったこと。
今後色々対応していきたいと考えています。