Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

RAID5 が壊れた...というか HDD 1台はずれてた

単なる日記的な内容です.

家庭内サーバーで debian を使って HDD を RAID 構成でつかってます.詳しく知りたい方は過去 blog を適当に検索してください.3TB な HDD 6台で RAID5 構成にして使ってます.

で,ふと気がついたら1台認識されていない.

root# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid5 sdh1[6] sdf1[3] sdc1[0] sdd1[4] sdg1[5]
      14650670080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/5] [U_UUUU]
      bitmap: 22/22 pages [88KB], 65536KB chunk

unused devices: 

まずいなぁ.詳細はどうなんだろうてことで,

root# mdadm --detail /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec  6 18:21:41 2017
     Raid Level : raid5
     Array Size : 14650670080 (13971.97 GiB 15002.29 GB)
  Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
   Raid Devices : 6
  Total Devices : 5
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Thu May 24 01:40:37 2018
          State : clean, degraded 
 Active Devices : 5
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : hoge:0  (local to host hoge)
           UUID : 3f9eed39:aaf0a4e0:4023b3ba:46fe5b73
         Events : 27229

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       -       0        0        1      removed
       3       8       81        2      active sync   /dev/sdf1
       4       8       49        3      active sync   /dev/sdd1
       6       8      113        4      active sync   /dev/sdh1
       5       8       97        5      active sync   /dev/sdg1

な感じ.sde1 がなくなってるのかな.dmesg はこんなかんじ.

[    5.400614] sd 5:0:0:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    5.401018] sd 1:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/112 GiB)
[    5.401171] sd 1:0:0:0: [sda] Write Protect is off
[    5.401173] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    5.401191] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    5.402292]  sda: sda1 sda2 < sda5 sda6 >
[    5.405739] sd 1:0:0:0: [sda] Attached SCSI disk
[    5.462456]  sdd: sdd1
[    5.463220] sd 4:0:0:0: [sdd] Attached SCSI disk
[    5.463228]  sde: sde1
[    5.463289]  sdc: sdc1
[    5.463605] sd 5:0:0:0: [sde] Attached SCSI disk
[    5.463642] sd 3:0:0:0: [sdc] Attached SCSI disk
[    5.463733]  sdg: sdg1
[    5.464016] sd 7:0:0:0: [sdg] Attached SCSI disk
[    5.470013]  sdf: sdf1
[    5.470777] sd 6:0:0:0: [sdf] Attached SCSI disk
[    5.613265] random: fast init done
[    5.620416] md: bind
[    5.635099] md: bind
[    5.636156] ata6.00: exception Emask 0x0 SAct 0x40000000 SErr 0x400000 action 0x0
[    5.636205] ata6.00: irq_stat 0x40000001
[    5.636245] ata6: SError: { Handshk }
[    5.636284] ata6.00: failed command: READ FPDMA QUEUED
[    5.636325] ata6.00: cmd 60/08:f0:70:a3:50/00:00:5d:01:00/40 tag 30 ncq dma 4096 in
                        res 41/04:00:70:a3:50/00:00:5d:01:00/40 Emask 0x401 (device error) 
[    5.636375] ata6.00: status: { DRDY ERR }
[    5.636411] ata6.00: error: { ABRT }
[    5.637885] ata6.00: configured for UDMA/133
[    5.637905] ata6: EH complete
[    5.647969]  sdb: sdb1
[    5.648792] sd 2:0:0:0: [sdb] Attached SCSI disk
[    5.790965] md: bind
[    5.804534] md: bind
[    5.848059] random: crng init done
[    5.870229] md: bind
[    5.885609]  sdh: sdh1
[    5.886861] sd 8:0:0:0: [sdh] Attached SCSI disk
[    5.945524] md: bind
[    5.949512] md: kicking non-fresh sde1 from array!
[    5.949518] md: unbind
[    5.988104] md: export_rdev(sde1)

うーむ.sde1 を一回 bind しようとしたけど,unbind されてるなぁ.sde1 に関しては何のメッセージも出てないみたいなので HDD が壊れているのではなさそう.そういえば一回,RAID を構成した後にメンテナンスのために筐体を開けて HDD を付けたり外したりしたことがあったなぁと.そのときに RAID からはずれちゃって,他の RAID ディスクと辻褄合わなくなってしまったのかなぁ.それともケーブルとかが緩んでて抜けちゃってるのか.

けど,それ以外にも ata6 で変なメッセージが出てるみたい.これね.

[    5.636156] ata6.00: exception Emask 0x0 SAct 0x40000000 SErr 0x400000 action 0x0
[    5.636205] ata6.00: irq_stat 0x40000001
[    5.636245] ata6: SError: { Handshk }
[    5.636284] ata6.00: failed command: READ FPDMA QUEUED
[    5.636325] ata6.00: cmd 60/08:f0:70:a3:50/00:00:5d:01:00/40 tag 30 ncq dma 4096 in
                        res 41/04:00:70:a3:50/00:00:5d:01:00/40 Emask 0x401 (device error) 
[    5.636375] ata6.00: status: { DRDY ERR }
[    5.636411] ata6.00: error: { ABRT }
[    5.637885] ata6.00: configured for UDMA/133
[    5.637905] ata6: EH complete

ata6 は sdf1 かな.

root# ls -al /dev/disk/by-path/pci-0000\:05\:00.1-ata-6*
lrwxrwxrwx 1 root root  9  5月 23 15:27 /dev/disk/by-path/pci-0000:05:00.1-ata-6 -> ../../sdf
lrwxrwxrwx 1 root root 10  5月 23 15:27 /dev/disk/by-path/pci-0000:05:00.1-ata-6-part1 -> ../../sdf1

もしかしたら sdf1 は壊れる前兆かもしれないなぁ.あとで smartctl で詳細確認しておくか.

1台 sde1 が外れれてる上に,sdf1 が飛んでしまうと RAID5 なのでデータが全部飛んでしまうな.ということで,バックアップ中に HDD が壊れないことを願いながら,フルバックアップ.

その後,何度か再起動を繰り返してみたり,数日運用してたんだけど ata6 のエラーメッセージは表示されなくなったなぁ.なんかメッセージが出てたのはたまたまだったのかな?

それにしても,今後,どうするかちょっと悩み中.常に電源を入れて使っているマシンではないし,RAID を修復するにしても結構時間かかるので,まだ,上述の状態のまま放置状態.フルバックアップを取ったので RAID をバラして運用形態を変更するか,それとも外れた HDD を含める形で再構築して継続して使うか.

まったく同じハードディスク8台を普通の PC-AT 互換機の筐体の中に入れて,そのうち 6台で RAID 構成して使ってるんだけど,メンテナンスしようとしても見た目が全く同じハードディスクなので OS からどれがどの形で認識されているディスク (sda 〜 sdh) かよく分からないんだよね.なので,現状の形だと何かあったときとかのメンテが非常にやりにくい感じ.このあたり QNAP のような専用機の方がやっぱり便利だよなぁって感じてます.

mdadm コマンドもハードディスク指定時には sd ほげほげって形式で指定して RAID 構築するけど,この形だとデバイス名が入れ替わると色々面倒なので UUID で指定して固定できたりしないかなぁとも思ったんだけど,調べてみたところはそういったオプションはないみたいだし.

まぁ,色々と思うところはあるので,詳細にハードディスクの状態を調べてからどうするかは追々考えるかな.