Создаём raid: mdadm --create --level=0 /dev/md0 --metadata=0.9 --raid-devices=2 /dev/sdb1 /dev/sdb2 Зашифровываем его: cryptsetup luksFormat /dev/md0 Проверяем: # cryptsetup isLuks /dev/md0 && echo Yes Yes Но: # cryptsetup isLuks /dev/sdb1 && echo Yes Yes
Почему --metadata=0.9? Потому что EVMS именно такой создаёт Почему важно, чтобы cryptsetup isLuks /dev/sdb1 отвечал отрицательно? Во время загрузки initrd, идёт такая проверка.. Получается так, что он пытается расшифровать /dev/sdb1, когда должен использовать этот раздел в качесте raid диска
MD RAID при использовании формата 0.9 размещает метаданные в конце диска. Т.е., разницы между диском с размещённым на нём разделом MD RAID-1 0.9 и диском без MD RAID нет - начало файловой системы (или заголовок LUKS) размещается с нулевого блока дискового устройства. (Как следствие, диски RAID-1 с форматом 0.9 можно использовать с загрузчиками, не знающими ничего о MD RAID. Или монтировать файловую систему с них, не поднимая MD RAID - это характерное свойство старого формата MDRAID). cryptsetup определяет, отформатирован ли диск в LUKS, по наличию заголовка LUKS в начале диска. Соответственно, для него входящий в MD RAID-1 диск с форматом 0.9 будет диском LUKS - поведение cryptsetup корректно. Тип устройства, на котором размещён диск (физический диск, раздел MD RAID, что-то ещё) cryptsetup не интересует и интересовать не должен. Соответственно, вопрос или решается с использованием форматов мета-данных 1.1, или изменением логики подключения дисковых устройств в initrd. Так описанная ситуация - это особенность формата MD RAID 0.9, диск sdb1 здесь (как, кстати, и sda1) - это и диск MD RAID, и раздел LUKS - одновременно.
(In reply to comment #2) > > Почему --metadata=0.9? > > Потому что EVMS именно такой создаёт > Соответственно, вопрос или решается с использованием форматов мета-данных 1.1, Да, --metadata из этого века в libevms не помешало бы, но это отдельный вопрос.