ZFS на LUKS не распознается при загрузке
У меня есть 6 физических дисков в RAID-Z2, которые я собираюсь поочередно преобразовать в устройства dm-crypt.
Мой процесс был примерно:
dd if=/dev/zero of=/dev/sdf
- Создать ключевой файл
/etc/crypttab.d/crypt-1.key
cryptsetup luksFormat /dev/sdf
- присоединять
crypt-1 <raw-disk-uuid> /etc/crypttab.d/crypt-1.key luks
в/etc/crypttab
cryptsetup luksOpen /dev/sdf crypt-1
zfs replace my_pool <raw-disk-uuid> /dev/mapper/crypt-1
После завершения восстановления (которое работало нормально) я перезагрузил компьютер, чтобы проверить настройку, прежде чем переходить к другим дискам. Однако я обнаружил, что ZFS помечена crypt-1
как недоступен.
ls /dev/mapper
проверил, что dm-crypt правильно активировал контейнер LUKS. Бег zpool online my_pool crypt-1
заставляет ZFS начать восстановление, но затем завершает и возобновляет работоспособность в течение секунд.
Я предполагаю, что устройство dm-crypt просто не загружается, когда ZFS впервые пытается получить доступ my_pool
? Это вопрос порядка загрузки или мне нужно использовать другой идентификатор для устройства LUKS в /etc/crypttab
? Как мне убедиться, что ZFS видит эти устройства LUKS при перезагрузке?
Это systemd
коробка (арка), если это имеет значение.
Спасибо!
РЕДАКТИРОВАТЬ 1:
При создании cryptsetup я использовал идентификаторы SCSI (например, /dev/sdf
) для инициализации устройства с помощью LUKS. Однако в /etc/crypttab
Я указываю устройства через UUID базового физического диска. Это cryptsetup
Утилита чувствительна к тому, как вы определяете цели? Другими словами, нужно ли мне заново cryptsetup
и передать ему UUID диска вместо имени SCSI?
РЕДАКТИРОВАТЬ 2:
Я вижу следующее ls -alsvh /dev/disk/by-id
:
0 lrwxrwxrwx 1 root root 10 Jul 8 08:18 dm-uuid-CRYPT-LUKS1-6bed03ceaafe4539a375536d11309ff0-locker-1 -> ../../dm-0
Из того, что я знаю, если это в /dev/disk/by-id
это - по определению? - не подлежит изменению (даже при перезагрузке). Я заменю определение имени dm-crypt locker-1
в моем зпуле с id-именем /dev/disk/by-id/dm-uuid-CRYPT-LUKS1-6bed03ceaafe4539a375536d11309ff0-locker-1
и доложить. Тот же диск, тот же контейнер LUKS, просто другой способ адресации.
РЕДАКТИРОВАТЬ 3:
Мое предложение из редакции № 2 выше не сработало. Я должен был стереть диск и повторно cryptsetup
устройство, потому что ZFS не позволит мне заменить устройство на себя. После завершения восстановления я перезагрузился и zpool status
является DEGRADED
и устройство dm-uuid-CRYPT-LUKS1-71e12fa7dc034d919e800ba89aec3b17-locker-1
является UNAVAIL
,
Стоит отметить, что locker-1
появляется в ls /dev/disk/by-id
так же как lsblk
, поэтому он загружается правильно. Я могу проверить это, запустив:
zpool online inground dm-uuid-CRYPT-LUKS1-71e12fa7dc034d919e800ba89aec3b17-locker-1
Которая выходит чисто, и возвращает устройство обратно в бассейн.
Возможно, это связано с порядком загрузки разных модулей при загрузке? Может быть, активация устройств dm-crypt выполняется так, что ZFS начинает импортировать пулы до того, как контейнер LUKS будет правильно открыт?
1 ответ
Вы можете попытаться экспортировать свой пул, затем создать символическую ссылку на узлы устройств, входящих в состав вызова, например, в /dev/vdevs, и запустить
zpool import -d /dev/vdevs poolname
Если vdev найден таким образом, вы можете сделать так, чтобы символическая ссылка происходила перед импортом zpool в загрузочный процесс (возможно, через udev или скрипт) в качестве обходного пути.