Назад | Перейти на главную страницу

mdadm: замененный диск отображается как запасной и не синхронизируется

Прелюдия

У меня были следующие устройства в моем /dev/md0 RAID 6: /dev/sd[abcdef]

Также присутствовали следующие диски, не относящиеся к RAID: /dev/sd[gh]

Следующие приводы были частью кард-ридера, который был подключен, опять же, не связанным: /dev/sd[ijkl]

Анализ

sdfкабель SATA вышел из строя (можно сказать, что он был отключен во время использования), и sdf был впоследствии отклонен из /dev/md0 массив. Я заменил кабель, и привод вернулся, теперь на /dev/sdm. Пожалуйста, не оспаривайте мой диагноз, с приводом проблем нет.

mdadm --detail /dev/md0 показал sdf(F), т.е. что sdf был неисправен. Так что я использовал mdadm --manage /dev/md0 --remove faulty удалить неисправные диски.

Сейчас mdadm --detail /dev/md0 показано "удалено" в месте, где sdf раньше был.

root@galaxy:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Wed Jul 30 13:17:25 2014
     Raid Level : raid6
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB)
   Raid Devices : 6
  Total Devices : 5
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Mar 17 21:16:14 2015
          State : active, degraded
 Active Devices : 5
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : eclipse:0
           UUID : cc7dac66:f6ac1117:ca755769:0e59d5c5
         Events : 67205

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

По какой-то причине RaidDevice «удаленного» устройства теперь совпадает с активным. В любом случае, давайте попробуем добавить предыдущее устройство (теперь известное как /dev/sdm), потому что это было первоначальным намерением:

root@galaxy:~# mdadm --add /dev/md0 /dev/sdm
mdadm: added /dev/sdm
root@galaxy:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Wed Jul 30 13:17:25 2014
     Raid Level : raid6
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB)
   Raid Devices : 6
  Total Devices : 6
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Mar 17 21:19:30 2015
          State : active, degraded
 Active Devices : 5
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : eclipse:0
           UUID : cc7dac66:f6ac1117:ca755769:0e59d5c5
         Events : 67623

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

       6       8      192        -      spare   /dev/sdm

Как видите, устройство отображается как запасное и отказывается синхронизироваться с остальной частью массива:

root@galaxy:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdm[6](S) sdb[5] sda[0] sde[4] sdd[3] sdc[1]
      15627548672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/5] [UU_UUU]
      bitmap: 17/30 pages [68KB], 65536KB chunk

unused devices: 

Я также пробовал использовать mdadm --zero-superblock /dev/sdm перед добавлением, с тем же результатом.

Причина, по которой я использую RAID 6, - обеспечить высокую доступность. Я не приму остановки /dev/md0 и заново собрать его с --assume-clean или аналогичные способы решения этой проблемы. Это нужно решать онлайн, иначе я не вижу смысла использовать mdadm.

После нескольких часов поиска в Google и некоторой чрезвычайно мудрой помощи от JyZyXEL в канале # linux-raid Freenode у нас есть решение! Во время этого процесса не было ни единого прерывания работы RAID-массива - именно то, что мне нужно и чего я ожидал от mdadm.

По какой-то (пока неизвестной) причине состояние RAID было заморожено. Команда-победитель, чтобы выяснить это, - cat /sys/block/md0/md/sync_action:

root@galaxy:~# cat /sys/block/md0/md/sync_action
frozen

Проще говоря, поэтому не использовались имеющиеся запчасти. Все мои волосы исчезли за счет простой кошачьей команды!

Итак, просто разморозим массив:

root@galaxy:~# echo idle > /sys/block/md0/md/sync_action

И ты далеко!

root@galaxy:~# cat /sys/block/md0/md/sync_action
recover
root@galaxy:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdm[6] sdb[5] sda[0] sde[4] sdd[3] sdc[1]
      15627548672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/5] [UU_UUU]
      [>....................]  recovery =  0.0% (129664/3906887168) finish=4016.8min speed=16208K/sec
      bitmap: 17/30 pages [68KB], 65536KB chunk

unused devices: 
root@galaxy:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Wed Jul 30 13:17:25 2014
     Raid Level : raid6
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB)
   Raid Devices : 6
  Total Devices : 6
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Mar 17 22:05:30 2015
          State : active, degraded, recovering
 Active Devices : 5
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 0% complete

           Name : eclipse:0
           UUID : cc7dac66:f6ac1117:ca755769:0e59d5c5
         Events : 73562

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

Блаженство :-)