ZFS на LUKS не распознается при загрузке

У меня есть 6 физических дисков в RAID-Z2, которые я собираюсь поочередно преобразовать в устройства dm-crypt.

Мой процесс был примерно:

  1. dd if=/dev/zero of=/dev/sdf
  2. Создать ключевой файл /etc/crypttab.d/crypt-1.key
  3. cryptsetup luksFormat /dev/sdf
  4. присоединять crypt-1 <raw-disk-uuid> /etc/crypttab.d/crypt-1.key luks в /etc/crypttab
  5. cryptsetup luksOpen /dev/sdf crypt-1
  6. 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 или скрипт) в качестве обходного пути.

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