Спасение 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 разных решений, и я смог ее решить.
Большое спасибо.