Назад | Перейти на главную страницу

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 как UNAVAIL.

ls /dev/mapper проверил, что dm-crypt правильно активировал контейнер LUKS. Бег zpool online my_pool crypt-1 заставляет ZFS начать перенастройку, но затем завершает и возобновляет нормальную работу в течение нескольких секунд.

Я предполагаю, что устройство dm-crypt просто не загружается, когда ZFS впервые пытается получить доступ my_pool? Это вопрос порядка загрузки или мне нужно использовать другой идентификатор для устройства LUKS в /etc/crypttab? Как убедиться, что ZFS видит эти устройства LUKS при перезагрузке?

Это systemd box (Arch), если это важно.

Спасибо!


РЕДАКТИРОВАТЬ 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-name locker-1 в моем zpool с 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 будет правильно открыт?

Вы можете попытаться экспортировать свой пул, а затем связать узлы устройств, составляющих вызовы, например, в / dev / vdevs и запустите

zpool import -d /dev/vdevs poolname

Если vdev найден таким образом, то в качестве временного решения вы можете создать символическую ссылку перед импортом zpool в процессе загрузки (возможно, через udev или скрипт).