Linux サーバの RAID (MD) 運用で、複数のディスクが切り離されてしまった場合の mdadm を使った復旧例

Disque dur (détail) 6


先月の話ですが、自宅にある比較的古いファイルサーバの電源を入れたところ、バックアップ用に RAID6 で組んでいる MD デバイスが見えなくなってしまいました。

古いサーバで、おそらく電源がダメになってきているのではないかと思っていますが、深夜に寝ぼけ眼でアレコレやった結果、どうやら復旧したみたいなので、また発生したときのためにログを貼り付けておきます。

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdl1[4] sdk1[2] sdj1[1] sdi1[0]
      5860535808 blocks super 1.1 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
      bitmap: 1/15 pages [4KB], 65536KB chunk

md1 : inactive sdh1[9] sdf1[8] sdg1[6] sda1[0]
      3907039232 blocks super 1.1

サーバを起動させたところ、とあるMDデバイスが見えていない状態。

mount: /dev/md1: スーパーブロックを読めません

当然、マウントもできない。

# mdadm --detail --scan
ARRAY /dev/md1 metadata=1.1 name=servername:1 UUID=xxe911f2:xx189d83:xx06af62:xx130972
ARRAY /dev/md0 metadata=1.1 name=servername:0 UUID=xx21780d:xxc66158:xxb17bd2:xx418558

一応、確認。エントリはある。

#  mdadm --detail /dev/md1
/dev/md1:
        Version : 1.1
  Creation Time : Fri Aug 10 10:21:49 2012
     Raid Level : raid6
  Used Dev Size : 976759296 (931.51 GiB 1000.20 GB)
   Raid Devices : 8
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Aug 12 03:14:49 2019
          State : active, FAILED, Not Started
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : servername:1
           UUID : xxe911f2:xx189d83:xx06af62:xx130972
         Events : 8585

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       2       0        0        2      removed
       4       0        0        4      removed
       6       0        0        6      removed
       8       0        0        8      removed
       9       8      113        5      active sync   /dev/sdh1
       6       8       97        6      active sync   /dev/sdg1
       8       8       81        7      active sync   /dev/sdf1

一気に4本ほど切り離されている状態・・・。

このパターンは電源まわりが不安定なパターンと思われる。古いサーバだしなぁ。ともあれ、 RAID を組み直すべく復旧に努めることにする。

# mdadm --manage /dev/md1 --add /dev/sd{b,c,d,e}1
mdadm: /dev/md1 has failed so using --add cannot work and might destroy
mdadm: data on /dev/sdb1.  You should stop the array and re-assemble it.

で、あれば外れた4デバイスを追加してみようとした図。

# mdadm --manage /dev/md1 --re-add /dev/sd{b,c,d,e}1
mdadm: --re-add for /dev/sdb1 to /dev/md1 is not possible

add がだめなら re-add でも、ともがいている様子。

# mdadm --assemble --scan /dev/md1
mdadm: Found some drive for an array that is already active: /dev/md1
mdadm: giving up.
# mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 1.1
    Feature Map : 0x1
     Array UUID : xxe911f2:xx189d83:xx06af62:xx130972
           Name : servername:1
  Creation Time : Fri Aug 10 10:21:49 2012
     Raid Level : raid6
   Raid Devices : 8

 Avail Dev Size : 1953519616 (931.51 GiB 1000.20 GB)
     Array Size : 5860555776 (5589.06 GiB 6001.21 GB)
  Used Dev Size : 1953518592 (931.51 GiB 1000.20 GB)
    Data Offset : 2048 sectors
   Super Offset : 0 sectors
   Unused Space : before=1976 sectors, after=1024 sectors
          State : clean
    Device UUID : xx517c27:xx5e32b0:xx2e50d7:xxe49c18

Internal Bitmap : 8 sectors from superblock
    Update Time : Mon Aug 12 03:01:06 2019
       Checksum : f09da1ad - correct
         Events : 8576

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AAAAAAAA ('A' == active, '.' == missing, 'R' == replacing)

切り離されているデバイスの1本を確認。特に問題なさそう。

# mdadm -S /dev/md1
mdadm: stopped /dev/md1

MDデバイスを停止してみる。

# mdadm --detail /dev/md1
mdadm: cannot open /dev/md1: No such file or directory

停止したので・・・そりゃそうか。

# mdadm --assemble /dev/md1 --uuid=xxe911f2:xx189d83:xx06af62:xx130972
mdadm: /dev/md1 assembled from 4 drives - not enough to start the array.

とのことなので、、、

# mdadm --assemble /dev/md1 --force --uuid=xxe911f2:xx189d83:xx06af62:xx130972
mdadm: forcing event count in /dev/sdb1(1) from 8576 upto 8585
mdadm: forcing event count in /dev/sdd1(2) from 8576 upto 8585
mdadm: forcing event count in /dev/sde1(3) from 8576 upto 8585
mdadm: forcing event count in /dev/sdc1(4) from 8576 upto 8585
mdadm: clearing FAULTY flag for device 2 in /dev/md1 for /dev/sdb1
mdadm: clearing FAULTY flag for device 1 in /dev/md1 for /dev/sdd1
mdadm: clearing FAULTY flag for device 0 in /dev/md1 for /dev/sde1
mdadm: clearing FAULTY flag for device 5 in /dev/md1 for /dev/sdc1
mdadm: Marking array /dev/md1 as 'clean'
mdadm: /dev/md1 has been started with 8 drives.

強制的に再構成してみる。お、 start したっぽいな。

# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.1
  Creation Time : Fri Aug 10 10:21:49 2012
     Raid Level : raid6
     Array Size : 5860555776 (5589.06 GiB 6001.21 GB)
  Used Dev Size : 976759296 (931.51 GiB 1000.20 GB)
   Raid Devices : 8
  Total Devices : 8
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Mon Aug 12 03:14:49 2019
          State : clean
 Active Devices : 8
Working Devices : 8
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : servername:1
           UUID : xxe911f2:xx189d83:xx06af62:xx130972
         Events : 8585

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1
       4       8       33        4      active sync   /dev/sdc1
       9       8      113        5      active sync   /dev/sdh1
       6       8       97        6      active sync   /dev/sdg1
       8       8       81        7      active sync   /dev/sdf1

MDデバイスが、正常に戻りました。

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid6 sda1[0] sdf1[8] sdg1[6] sdh1[9] sdc1[4] sde1[3] sdd1[2] sdb1[1]
      5860555776 blocks super 1.1 level 6, 512k chunk, algorithm 2 [8/8] [UUUUUUUU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

md0 : active raid5 sdl1[4] sdk1[2] sdj1[1] sdi1[0]
      5860535808 blocks super 1.1 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
      bitmap: 1/15 pages [4KB], 65536KB chunk

unused devices: <none>

mdstat でもちゃんと表示されています。良かった。

それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


[改訂新版]プロのためのLinuxシステム構築・運用技術

[改訂新版]プロのためのLinuxシステム構築・運用技術