CentOS7.3 mdadmミラーリングの復旧

シェアする

先日、インフラまわりの話をしていた時に、RAIDディスクの話があって、「そう言えば、自宅サーバーのCPUクーラー交換時に、手が入りにくいところがあって、HDDのケーブルを抜いたな~。」とおぼろげながら思ってました。

そんなことを思ったのも一瞬で忘れてしまい、「HDD増設したいな~。」と、現在のディスク構成を見たときに、ものの見事に、ミラーリングが外れていました。。。

ディスクの構成

自宅にあるサーバーは、mdadmによるソフトミラーにしていて、下記のような構成です。

mdadm_mirror

現状の確認

「/dev/sdb」側がmdadmから外されていました。
ディスク自体もハードウェア的な障害ではないので、単純にミラーリング復旧です。

# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sda1[0]
      525248 blocks super 1.0 [2/1] [U_]      <= 本来は、[2/2] [UU] になってる
      bitmap: 1/1 pages [4KB], 65536KB chunk
 
md127 : active raid1 sda2[0]
      976104448 blocks super 1.2 [2/1] [U_]   <= 本来は、[2/2] [UU] になってる
      bitmap: 5/8 pages [20KB], 65536KB chunk
 
unused devices: <none>
# fdisk -l /dev/sda    <= ディスクの状態確認
 
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0006bab0
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1052671      525312   fd  Linux raid autodetect
/dev/sda2         1052672  1953523711   976235520   fd  Linux raid autodetect
# fdisk -l /dev/sdb    <= ディスクの状態確認(ハード的に壊れているわけではなさそう)
 
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000852a4
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     1052671      525312   fd  Linux raid autodetect
/dev/sdb2         1052672  1953523711   976235520   fd  Linux raid autodetect

ミラーリング復旧

ミラーリングの復旧をします。
なお、復旧をする前には、必ず、現状のバックアップ取得を検討してください。

# mdadm --manage /dev/md126 --add /dev/sdb1   <= ミラーリング構成に追加
mdadm: re-added /dev/sdb1
# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdb1[1] sda1[0]
      525248 blocks super 1.0 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk
 
md127 : active raid1 sda2[0]
      976104448 blocks super 1.2 [2/1] [U_]
      bitmap: 5/8 pages [20KB], 65536KB chunk
 
unused devices: <none>
# mdadm --manage /dev/md127 --add /dev/sdb2   <= ミラーリング構成に追加(容量が大きいので時間がかかる)
mdadm: re-added /dev/sdb2
# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdb1[1] sda1[0]
      525248 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
 
md127 : active raid1 sdb2[1] sda2[0]
      976104448 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.0% (262144/976104448) finish=992.4min speed=16384K/sec
      bitmap: 5/8 pages [20KB], 65536KB chunk
 
unused devices: <none>

ミラーリングの確認

しばらく(3時間ぐらいかかったかも?)すると、ミラーリングの再構成が完了しますので、確認します。

# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdb1[1] sda1[0]
      525248 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
 
md127 : active raid1 sdb2[1] sda2[0]
      976104448 blocks super 1.2 [2/2] [UU]
      bitmap: 4/8 pages [16KB], 65536KB chunk
# mdadm --detail /dev/md126
/dev/md126:
        Version : 1.0
  Creation Time : Sun May 10 09:22:15 2015
     Raid Level : raid1
     Array Size : 525248 (512.94 MiB 537.85 MB)
  Used Dev Size : 525248 (512.94 MiB 537.85 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
 
  Intent Bitmap : Internal
 
    Update Time : Sat Jun 24 13:48:45 2017
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
 
           Name : localhost:boot
           UUID : 35dcd6b8:0e1d8b1a:86e7e012:2b2c8b2d
         Events : 358
 
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
# mdadm --detail /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Sun May 10 09:22:21 2015
     Raid Level : raid1
     Array Size : 976104448 (930.89 GiB 999.53 GB)
  Used Dev Size : 976104448 (930.89 GiB 999.53 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
 
  Intent Bitmap : Internal
 
    Update Time : Sat Jun 24 15:31:29 2017
          State : active
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
 
           Name : localhost:pv00
           UUID : 6172a5b9:b7c109e1:c49db239:dd9c9efd
         Events : 2666671
 
    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       8       18        1      active sync   /dev/sdb2

MBRの確認

MBRの確認を行ないます。
CentOS7では、インストール時にmdadmミラーで構築すると、両方のディスクにMBRが書かれているようです。
ここでは、念のための確認です。

# fdisk -l /dev/sda /dev/sdb
 
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0006bab0
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1052671      525312   fd  Linux raid autodetect
/dev/sda2         1052672  1953523711   976235520   fd  Linux raid autodetect
 
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000852a4
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     1052671      525312   fd  Linux raid autodetect
/dev/sdb2         1052672  1953523711   976235520   fd  Linux raid autodetect
# xxd -l 512 /dev/sda1 > /tmp/sda1_dump512.txt
# xxd -l 512 /dev/sdb1 > /tmp/sdb1_dump512.txt
# diff /tmp/sda1.txt /tmp/sdb1.txt <= 差分がないこと