RAID 5 с 4 дисками не удается работать с одним неисправным диском?

Это кажется близко к тому, что Вы хотите:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
6
13.04.2017, 15:37
2 ответа

Это - фундаментальная проблема с RAID5 — сбойные блоки на восстанавливают, уничтожитель.

Oct  2 15:08:51 it kernel: [1686185.573233] md/raid:md0: device xvdc operational as raid disk 0
Oct  2 15:08:51 it kernel: [1686185.580020] md/raid:md0: device xvde operational as raid disk 2
Oct  2 15:08:51 it kernel: [1686185.588307] md/raid:md0: device xvdd operational as raid disk 1
Oct  2 15:08:51 it kernel: [1686185.595745] md/raid:md0: allocated 4312kB
Oct  2 15:08:51 it kernel: [1686185.600729] md/raid:md0: raid level 5 active with 3 out of 4 devices, algorithm 2
Oct  2 15:08:51 it kernel: [1686185.608928] md0: detected capacity change from 0 to 2705221484544
⋮

Массив был собран, ухудшен. Это было собрано с xvdc, xvde, и xvdd. По-видимому, существует горячее резервирование:

Oct  2 15:08:51 it kernel: [1686185.615772] md: recovery of RAID array md0
Oct  2 15:08:51 it kernel: [1686185.621150] md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
Oct  2 15:08:51 it kernel: [1686185.627626] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
Oct  2 15:08:51 it kernel: [1686185.634024]  md0: unknown partition table
Oct  2 15:08:51 it kernel: [1686185.645882] md: using 128k window, over a total of 880605952k.

Сообщение 'таблицы разделов' не связано. Другие сообщения говорят Вам, что md пытается сделать восстановление, вероятно, на горячем резервировании (который мог бы быть устройством, которое перестало работать прежде, если Вы делали попытку к remove/re-add его).

⋮
Oct  2 15:24:19 it kernel: [1687112.817845] end_request: I/O error, dev xvde, sector 881423360
Oct  2 15:24:19 it kernel: [1687112.820517] raid5_end_read_request: 1 callbacks suppressed
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423360 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: Disk failure on xvde, disabling device.
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: Operation continuing on 2 devices.

И это здесь - md, пытающийся считать сектор из xvde (одно из оставления тремя устройствами). Это приводит к сбою [поврежденный сектор, вероятно], и md (так как массив ухудшается), не может восстановиться. Это таким образом вышибает диск из массива, и с двойным отказом диска, Ваш RAID5 мертв.

Я не уверен, почему то, что это было маркированным как запчасть — это странно (хотя, я предполагаю, что обычно смотрю на /proc/mdstat, таким образом, возможно, это, как mdadm маркирует его). Кроме того, я думал, что более новые ядра намного больше не решились выгонять для сбойных блоков — но возможно Вы выполняете что-то более старое?

Что можно сделать об этом?

Хорошие резервные копии. Это всегда - важная часть любой стратегии поддержать данные.

Удостоверьтесь, что массив обычно вычищается для сбойных блоков. Ваша ОС может уже включать задание крона для этого. Вы делаете это путем повторения также repair или check кому: /sys/block/md0/md/sync_action. "Восстановление" также восстановит любые обнаруженные ошибки четности (например, бит четности не соответствует данным по дискам).

# echo repair > /sys/block/md0/md/sync_action
#

С прогрессом можно наблюдать cat /proc/mdstat, или различные файлы в этом sysfs каталог. (Можно найти несколько актуальную документацию при Набеге Linux Wiki mdstat статья.

Примечание: На более старых ядрах — не уверенный точная версия — проверка не может зафиксировать сбойные блоки.

Одна заключительная опция состоит в том, чтобы переключиться на RAID6. Это потребует другого диска (можно выполнить четыре - или даже RAID6 с тремя дисками, Вы, вероятно, не хотите к). С достаточно новыми ядрами сбойные блоки фиксируются на лету, если это возможно. RAID6 может пережить два отказа диска, поэтому когда один диск перестал работать, он может все еще пережить сбойный блок — и таким образом он будет и планировать сбойный блок и продолжать восстанавливание.

4
27.01.2020, 20:28
  • 1
    Спасибо за превосходное объяснение! Можно ли уточнить последний абзац немного? Я не понимаю, что сделать, когда Вы предлагаете делать эхо repair или verify. Также, если возможная банка Вы через дамп /proc/mdstat? Я видел его, но это могло бы помочь другим, которые сталкиваются с этим Вопросы и ответы. –  slm♦ 08.10.2013, 21:49
  • 2
    @slm я переделал заключительный абзац. –  derobert 09.10.2013, 00:38
  • 3
    Чтения намного лучше теперь! –  slm♦ 09.10.2013, 00:41

Я предполагаю, что Вы создаете свой массив RAID5 как это:

$ mdadm --create /dev/md0 --level=5 --raid-devices=4 \
       /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Который не является точно, что Вы хотите. Скорее необходимо добавить диски как это:

$ mdadm --create /dev/md0 --level=5 --raid-devices=4 \
       /dev/sda1 /dev/sdb1 /dev/sdc1
$ mdadm --add /dev/md0 /dev/sdd1

Или можно использовать mdadmопция добавить запчасти как это:

$ mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 \
       /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Последний диск в списке будет запчастью.

выборка из mdadm страницы справочника

-n, --raid-devices=
      Specify the number of active devices in the array.  This, plus the 
      number of spare devices (see below) must  equal the  number  of  
      component-devices (including "missing" devices) that are listed on 
      the command line for --create. Setting a value of 1 is probably a 
      mistake and so requires that --force be specified first.  A  value 
      of  1  will then be allowed for linear, multipath, RAID0 and RAID1.  
      It is never allowed for RAID4, RAID5 or RAID6. This  number  can only 
      be changed using --grow for RAID1, RAID4, RAID5 and RAID6 arrays, and
      only on kernels which provide the necessary support.

-x, --spare-devices=
      Specify the number of spare (eXtra) devices in the initial array.  
      Spares can also be  added  and  removed  later. The  number  of component
      devices listed on the command line must equal the number of RAID devices 
      plus the number of spare devices.
2
27.01.2020, 20:28
  • 1
    Это поучительно, но не ответ: было четыре активных устройства - каждый перестал работать, и у нас внезапно есть две запчасти и вниз RAID... почему? –  Mei 08.10.2013, 00:56
  • 2
    @David - Можно ли показать, как Вы создали свой массив? Вы добавляли дополнительные диски как запчасти или как участники? –  slm♦ 08.10.2013, 00:59
  • 3
    Это очень похоже на то, что Вы сказали: mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf --chunk=128K –  Mei 08.10.2013, 01:02
  • 4
    Не было никаких запчастей, перечисленных в том списке - поэтому, как я волновал с два, когда диск перестал работать? –  Mei 08.10.2013, 01:11
  • 5
    @David - хорошо я вижу то, что Вы спрашиваете теперь с обновлениями Вашего Q. Можно ли обеспечить вывод blkid с этого сервера? –  slm♦ 08.10.2013, 01:32

Теги

Похожие вопросы