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

mdadm останавливает восстановление массива RAID5 на 99,9%

Недавно я установил три новых диска в свое сетевое хранилище QNAP TS-412.

Эти три новых диска нужно объединить с уже существующим диском в 4-дисковый массив RAID5, поэтому я начал процесс миграции.

После нескольких попыток (каждая из которых длилась около 24 часов) казалось, что миграция работает, но в результате NAS перестает отвечать.

В этот момент я перезагрузил NAS. Оттуда все пошло под откос:

Я успешно восстановил все внутренние массивы RAID1 QNAP, используя mdadm (будучи /dev/md4, /dev/md13 и /dev/md9), оставив только массив RAID5; /dev/md0:

Я пробовал это несколько раз, используя следующие команды:

mdadm -w /dev/md0

(Требуется, так как массив был смонтирован NAS только для чтения после удаления /dev/sda3 от него. Невозможно изменить массив в режиме RO).

mdadm /dev/md0 --re-add /dev/sda3

После чего массив начинает перестраиваться. Однако он останавливается на уровне 99,9%, в то время как система очень медленная и / или не отвечает. (Войти через SSH в большинстве случаев не удается).

Текущее положение вещей:

[admin@nas01 ~]# cat /proc/mdstat                            
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md4 : active raid1 sdd2[2](S) sdc2[1] sdb2[0]
      530048 blocks [2/2] [UU]

md0 : active raid5 sda3[4] sdd3[3] sdc3[2] sdb3[1]
      8786092608 blocks super 1.0 level 5, 64k chunk, algorithm 2 [4/3] [_UUU]
      [===================>.]  recovery = 99.9% (2928697160/2928697536) finish=0.0min speed=110K/sec

md13 : active raid1 sda4[0] sdb4[1] sdd4[3] sdc4[2]
      458880 blocks [4/4] [UUUU]
      bitmap: 0/57 pages [0KB], 4KB chunk

md9 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
      530048 blocks [4/4] [UUUU]
      bitmap: 2/65 pages [8KB], 4KB chunk

unused devices: <none>

(Он застрял в 2928697160/2928697536 часами сейчас)

[admin@nas01 ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 01.00.03
  Creation Time : Thu Jan 10 23:35:00 2013
     Raid Level : raid5
     Array Size : 8786092608 (8379.07 GiB 8996.96 GB)
  Used Dev Size : 2928697536 (2793.02 GiB 2998.99 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Jan 14 09:54:51 2013
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 99% complete

           Name : 3
           UUID : 0c43bf7b:282339e8:6c730d6b:98bc3b95
         Events : 34111

    Number   Major   Minor   RaidDevice State
       4       8        3        0      spare rebuilding   /dev/sda3
       1       8       19        1      active sync   /dev/sdb3
       2       8       35        2      active sync   /dev/sdc3
       3       8       51        3      active sync   /dev/sdd3

После осмотра /mnt/HDA_ROOT/.logs/kmsg оказывается, что настоящая проблема связана с /dev/sdb3 вместо:

<6>[71052.730000] sd 3:0:0:0: [sdb] Unhandled sense code
<6>[71052.730000] sd 3:0:0:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
<6>[71052.730000] sd 3:0:0:0: [sdb] Sense Key : 0x3 [current] [descriptor]
<4>[71052.730000] Descriptor sense data with sense descriptors (in hex):
<6>[71052.730000]         72 03 00 00 00 00 00 0c 00 0a 80 00 00 00 00 01 
<6>[71052.730000]         5d 3e d9 c8 
<6>[71052.730000] sd 3:0:0:0: [sdb] ASC=0x0 ASCQ=0x0
<6>[71052.730000] sd 3:0:0:0: [sdb] CDB: cdb[0]=0x88: 88 00 00 00 00 01 5d 3e d9 c8 00 00 00 c0 00 00
<3>[71052.730000] end_request: I/O error, dev sdb, sector 5859367368
<4>[71052.730000] raid5_end_read_request: 27 callbacks suppressed
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246784 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246792 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246800 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246808 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246816 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246824 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246832 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246840 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246848 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5:md0: read error not correctable (sector 5857246856 on sdb3).
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.
<4>[71052.730000] raid5: some error occurred in a active device:1 of md0.

Вышеупомянутая последовательность повторяется с постоянной скоростью для различных (случайных?) Секторов в 585724XXXX ассортимент.

Мои вопросы:

Очевидным подходом было бы заменить неисправный диск, воссоздать массивы и воспроизвести резервную копию, которую вы сделали до операции расширения массива.

Но поскольку у вас, похоже, нет этой опции, это будет следующим лучшим решением:

  • получите систему Linux с достаточным пространством, чтобы вместить необработанное пространство всех ваших дисков (12 ТБ, если я правильно понял цифры)
  • скопируйте данные с ваших дисков в эту систему, адресатами могут быть файлы или блочные устройства, это не имеет большого значения для mdraid. В случае вашего брака sdb3 устройство, которое вам может понадобиться ddrescue вместо простого dd для копирования данных.
  • попробуйте заново собрать и перестроить массив оттуда

Также взгляните на эта страница блога для некоторых советов о том, что можно сделать для оценки ситуации отказа нескольких устройств для массива RAID 5.

Скорее всего, он остановится перед завершением, потому что для этого требуется, чтобы неисправный диск возвратил какой-то статус, но он его не получает.

В любом случае, все ваши данные остаются (или должны быть) целыми только на 3 из 4 дисков.

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

Вы можете его установить?

Вы можете принудительно запустить массив, выполнив следующие действия:

  • распечатайте детали массива: mdadm -D /dev/md0
  • остановить массив: mdadm --stop /dev/md0
  • воссоздайте массив и заставьте md принять его: `mdadm -C -n md0 --assume-clean / dev / sd [abcd] 3`

Этот последний шаг полностью безопасен, если:

  • вы не пишете в массив, и
  • вы использовали те же параметры создания, что и раньше.

Этот последний флаг предотвратит перестройку и пропустит любые проверки целостности.
После этого вы сможете смонтировать его и восстановить свои данные.