Спасение RAID5 с работающим LVM2

У меня есть RAID5-массив, состоящий из 6 дисков по 1 ТБ. Недавно с аппаратными изменениями мне нужно было воссоздать рейд, чтобы переписать загрузчик на каждом диске.

Теперь проблема начинается. При запуске системы спасения Debian произошло создание mdadm. Пока что плохая ситуация.

Я пытался собрать устройство, но оригинальные настройки больше не доступны. Когда я использую

mdadm --examine --scan

на выходе отображается только массив, созданный 27 апреля 2015 года, а исходный рейд был создан в декабре 2012 года.

Я понял, что во время команды сборки важен порядок дисков. Это поставило меня в ситуацию, чтобы исследовать каждый вид комбинации. Пока что у нас 6! = 720 различных возможностей для подключения всех устройств.

Автоматизировал его с помощью итераций на разделах с:

mdadm --create /dev/md0 --readonly --level=5 --assume-clean --raid-devices=6 /dev/sdd2 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdf2 /dev/sde2

Получил только 44 комбинации, которые адресовали работающие записи LVM за его пределами. Я хоть и понял.

Актуальная проблема начинается сейчас. Когда я бегу:

pvscan

Том отображается и активируется, все три тома перечислены:

nas-root
nas-swap
nas-storage

Проблема в том, что в каждой из 44 комбинаций я не могу смонтировать систему.

Это показывает мне ошибку, что подпись NTFS недействительна. Но на нем должна быть файловая система ext3/4.

Возможно ли, что сборка массива в правильном порядке, но с неправильным размером полосы это может произойти?

Поскольку я создал массив в декабре 2012 года, я предполагаю, что использовал настройки по умолчанию, что означает 512 chunksize, левосимметричный raid5.

Безопасно ли для базовых данных, когда я запускаю несколько

mdadm --create ... --chunk=X /dev/sd* (in different order)

Дополнительное примечание:

vgscan печатает с -d, что он работает на ухудшенном рейде. Может быть это может быть проблемой? Но как это исправить?

Дополнительная помощь:

Для поддержки полных тестов я создал оверлей, доступный только для чтения, на рейде (так как у меня нет места для создания образа всех дисков размером 1 ТБ).

Для других пользователей это может быть полезно:

#!/bin/bash
dev=$1
tmp="/tmp"
if [ "no$dev" == "no" ]; then
    echo "Usage $0 /dev/sdx."
    echo "Overlays are placed in $tmp"
    exit 1
fi

base=`basename $dev`
ovl="$tmp/overlay.$base"
if [ -e $ovl ]
then
   rm $ovl
fi
truncate -s50G $ovl
newdev="$base-ovl"
size=$(blockdev --getsize "$dev")
# you need to have enough loop devices
loop=$(losetup -f --show "$ovl")

printf '%s\n' "0 $size snapshot $dev $loop P 8" | dmsetup create "$newdev"

Вы также можете привязать изображение к петле и соединить его с оверлеем.

Что мне помогло до сих пор:

2 ответа

Решение

При сборке массива порядок диска и размер куска имеют первостепенное значение. Учтите, что, хотя программный RAID-массив Linux недавно переключился на блоки размером 512 КБ, несколько лет назад он использовал блоки размером 64 КБ.

Это означает, что ваш предыдущий массив, вероятно, был создан со старым 64K-фрагментом по умолчанию. Попробуйте собрать массив, используя куски 64 КБ, и доложите о результатах.

Я понял, что во время команды сборки порядок дисков важен. Это дало мне возможность исследовать каждый вид комбинации. На данный момент у нас их 6! = 720 различных возможностей подключения всех устройств.

Это секретный человек, я боролся, пока не прочитал это... порядок массива важен, благодаря вам я смог восстановить все свои данные.

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

Большое спасибо.

Другие вопросы по тегам