1

У меня есть Ubuntu-18.04, на котором установлена ОС с SSD, которую я НЕ хочу зашифровывать. У меня есть 3 дополнительных диска по 2 ТБ, которые я хотел бы использовать в качестве зашифрованного (через LUKS) дополнительного хранилища RAID-Z1. Я хотел бы использовать разные фразы для каждого диска, получать подсказки для каждой ключевой фразы во время загрузки, а также автоматически создавать и монтировать пул raidz при загрузке.

Я следовал следующему уроку.

https://help.ubuntu.com/community/encryptedZfs#ZFS_on_LUKS_Installation

В приведенном выше руководстве описывается шифрование как загрузочного диска, так и дополнительного накопителя. Поскольку я не пытаюсь зашифровать загрузочный диск, я попытался разобрать все, что с этим связано, и выполнить только операции, необходимые для создания дополнительного хранилища на 3 накопителях по 2 ТБ, которые мне интересны.

У меня был некоторый успех в том, что выполнение следующих шагов, кажется, зашифровывает каждый диск с помощью собственной парольной фразы, и я могу превратить их в пул raidz. Есть две точки отказа, которые мне не удалось устранить:

  1. Моя система не запрашивает пароль для расшифровки во время загрузки.
  2. Пул raidz не создается и не монтируется при запуске. Вероятно, по крайней мере, частично из-за первой проблемы.

После загрузки машины я могу вручную расшифровать, а затем импортировать ранее созданный пул без проблем. Вот мои настройки настройки до сих пор.

$ sudo parted -a optimal /dev/sdb; sudo parted -a optimal /dev/sdc; sudo parted -a optimal /dev/sdd
# the above parted command opens a prompt to enter commands. The following were the commands given
# mklabel gpt
# unit MB
# mkpart vpool 1 -1
$ sudo apt install cryptsetup
$ sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdb1
$ sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdc1
$ sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdd1
$ sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file /home/user_home/luks_header_backup_sdb1; sudo cryptsetup luksHeaderBackup /dev/sdc1 --header-backup-file /home/user_home/luks_header_backup_sdc1; sudo cryptsetup luksHeaderBackup /dev/sdd1 --header-backup-file /home/user_home/luks_header_backup_sdd1
$ sudo cryptsetup luksOpen /dev/sdb1 vault1_crypt
$ sudo cryptsetup luksOpen /dev/sdc1 vault2_crypt
$ sudo cryptsetup luksOpen /dev/sdd1 vault3_crypt
$ sudo fdisk -l
# The above command was to check the sector size. because there is an old drive in there we have to use 512 sector size. This means using ashift=9 instead of ashift=12 when doing zpool create
$ sudo zpool create -O mountpoint=none -o ashift=9 vault raidz1 /dev/mapper/vault1_crypt /dev/mapper/vault2_crypt /dev/mapper/vault3_crypt
$ sudo zfs set mountpoint=/vault vault
$ blkid # Copied value of each sdb1 sdc1 and sdd1 UUIDs
$ sudo vim /etc/initramfs-tools/conf.d/cryptroot
# Wrote as follows
# target=vault,source=UUID=<UUID-from-blkid-for-sdb1>,key=none
# target=vault,source=UUID=<UUID-from-blkid-for-sdc1>,key=none
# target=vault,source=UUID=<UUID-from-blkid-for-sdd1>,key=none
$ sudo update-initramfs -c -k all
$ sudo update-grub; sudo grub-install /dev/sda

0