no servidor temos 2 hdd de 2 TB ligados a portas sata e 1 ssd samsung 970 evo nvme M.2 (2280) de 250 GB ligado ao barramento pcie.

a ideia é utilizar os dois hdds num raid nível 1 por software com o mdadm, com os discos encriptados e deteção de erros ao nível do bloco (integridade assegurada por dm-integrity) e o ssd como cache destes.

parte do ssd será utilizado para criar a esp (Extensible Firmware Interface System Partition), boot e swap e através da utilização do bcache servirá como cache para os hdds no modo writethrough (as operações de escrita são passadas diretamente para o backing device - o desempenho é inferior ao do modo writeback mas é mais seguro).

começaremos por criar uma partição no ssd para a esp que deve ter pelo menos 260 MiB (https://www.ctrl.blog/entry/esp-size-guide.html) mas que o autor do gdisk sugere que seja de 550 MiB (http://www.rodsbooks.com/linux-uefi/).

criamos também uma partição com 1gib onde montaremos o /boot do sistema.

uma partição de de 12gib para a swap.

no espaço restante criaremos outra partição que utilizaremos como o caching device para o bcache.

relativamente aos hdds começamos por encriptá-los com com verificação de integridade, seguindo-se a criação dum array raid nível 1 (mdadm) seguido-se a criação dum backinkg device para o bcache e, por cima deste, volumes lvm para a instalação do sistema.

1 - nos discos hdd (para o sistema):
cryptsetup
mdadm
bcache (backing device)
vg00
lvs:
root (50gib) - vg00 - montar raiz
var (500gib) - vg00 - montar var

2 - no ssd:
esp - 550 mib

swap - 12gib

e instalar.

layout do disco

depois de arrancarmos o debian live a partir duma usb flash drive alteramos o time zone para Lisbon e os locales para LANG=pt_PT.UTF-8:
dpkg-reconfigure tzdata
dpkg-reconfigure locales

listamos os dispositivos de bloco com o comando:
lsblk

cujo resultado é:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 2G 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
sda 8:0 0 1,8T 0 disk
sdb 8:16 0 1,8T 0 disk
sdc 8:32 1 7,5G 0 disk
├─sdc1 8:33 1 2,2G 0 part /usr/lib/live/mount/medium
└─sdc2 8:34 1 2,9M 0 part
nvme0n1 259:0 0 232,9G 0 disk

neste caso sda e sdb são os hdd's, sdc a pen, e nvme0n1 o disco ssd.

removemos quaisquer assinaturas remanescentes de sistemas de ficheiros, raid e de tabelas de partições:
wipefs -af /dev/sda
wipefs -af /dev/sdb
wipefs -af /dev/nvme0n1

criamos em /dev/nvme0n1 a nova tabela de partição GPT e as partições que iremos utilizar:
parted /dev/nvme0n1 mklabel gpt
parted /dev/nvme0n1 mkpart primary fat32 1MiB 551MiB
parted /dev/nvme0n1 set 1 esp on
parted /dev/nvme0n1 mkpart primary ext4 551MiB 1575MiB
parted /dev/nvme0n1 mkpart primary 1575MiB 13863MiB
parted /dev/nvme0n1 mkpart primary 13863MiB 90%

verificamos o resultado com:
parted /dev/nvme0n1 print

que é:

Model: Samsung SSD 970 EVO 250GB (nvme)
Disk /dev/nvme0n1: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 578MB 577MB primary boot, esp
2 578MB 1652MB 1074MB primary
3 1652MB 14,5GB 12,9GB primary
4 14,5GB 225GB 211GB primary

e lsblk:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 2G 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
sda 8:0 0 1,8T 0 disk
sdb 8:16 0 1,8T 0 disk
sdc 8:32 1 7,5G 0 disk
├─sdc1 8:33 1 2,2G 0 part /usr/lib/live/mount/medium
└─sdc2 8:34 1 2,9M 0 part
nvme0n1 259:0 0 232,9G 0 disk
├─nvme0n1p1 259:1 0 550M 0 part
├─nvme0n1p2 259:4 0 1G 0 part
├─nvme0n1p3 259:5 0 12G 0 part
└─nvme0n1p4 259:6 0 196,1G 0 part

encriptamos os hdds (depois de executar cada um dos comandos seguintes temos que definir uma palavra passe que convém que seja forte e idêntica para os dois):

cryptsetup -y luksFormat -q --type luks2 --integrity hmac-sha256 /dev/sda
cryptsetup -y luksFormat -q --type luks2 --integrity hmac-sha256 /dev/sdb

o que demora uma eternidade...

podemos ver detalhes da encriptação com:
cryptsetup luksDump /dev/sda

para evitar problemas com o reposicionamento dos discos, a nível de hardware, vamos utilizar os seus uuids:
ls -l /dev/disk/by-uuid

total 0
lrwxrwxrwx 1 root root 10 set 12 18:48 2019-09-07-11-18-31-00 -> ../../sdc1
lrwxrwxrwx 1 root root 9 set 13 13:18 37440af9-87f3-4328-800b-da9758adea23 -> ../../sda
lrwxrwxrwx 1 root root 9 set 13 14:04 5d1327be-82d5-494d-879c-1c14e5ff4b03 -> ../../sdb
lrwxrwxrwx 1 root root 10 set 12 18:48 DEB0-0001 -> ../../sdc2

abrimos os discos encriptados:
cryptsetup luksOpen /dev/disk/by-uuid/37440af9-87f3-4328-800b-da9758adea23 disk1luks
cryptsetup luksOpen /dev/disk/by-uuid/5d1327be-82d5-494d-879c-1c14e5ff4b03 disk2luks

instalamos o mdadm:
apt update && apt install mdadm

e adicionamos os discos encriptados ao array:

mdadm --create --verbose --level 1 --metadata=1.2 --raid-devices=2 /dev/md/enc_disks /dev/mapper/disk1luks /dev/mapper/disk2luks

resultado:

mdadm: size set to 1838392384K
mdadm: automatically enabling write-intent bitmap on large array
mdadm: array /dev/md/mdtest started.

listando os dispositivos de blocos:
lsblk

resultado:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 2G 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
sda 8:0 0 1,8T 0 disk
└─disk1luks_dif 254:0 0 1,7T 0 crypt
└─disk1luks 254:1 0 1,7T 0 crypt
└─md127 9:127 0 1,7T 0 raid1
sdb 8:16 0 1,8T 0 disk
└─disk2luks_dif 254:2 0 1,7T 0 crypt
└─disk2luks 254:3 0 1,7T 0 crypt
└─md127 9:127 0 1,7T 0 raid1
sdc 8:32 1 7,5G 0 disk
├─sdc1 8:33 1 2,2G 0 part /usr/lib/live/mount/medium
└─sdc2 8:34 1 2,9M 0 part
nvme0n1 259:0 0 232,9G 0 disk
├─nvme0n1p1 259:1 0 550M 0 part
├─nvme0n1p2 259:4 0 1G 0 part
├─nvme0n1p3 259:5 0 12G 0 part
└─nvme0n1p4 259:6 0 196,1G 0 part

criamos agora os o volume físico para o lvm mas não sem antes instalar o pacote lvm2:
apt install lvm2
pvcreate /dev/md/enc_disks

e o resultado:

Physical volume "/dev/md/enc_disks" successfully created.

os blocos antes:

lsblk -o name,mountpoint,size,type,ro,label,uuid
NAME MOUNTPOINT SIZE TYPE RO LABEL UUID
loop0 /usr/lib/live/mount/rootfs/filesystem.squashfs 2G loop 1
sda 1,8T disk 0 37440af9-87f3-4328-800b-da9758adea23
└─disk1luks_dif 1,7T crypt 0
└─disk1luks 1,7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1,7T raid1 0
sdb 1,8T disk 0 5d1327be-82d5-494d-879c-1c14e5ff4b03
└─disk2luks_dif 1,7T crypt 0
└─disk2luks 1,7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1,7T raid1 0
sdc 7,5G disk 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
├─sdc1 /usr/lib/live/mount/medium 2,2G part 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
└─sdc2 2,9M part 0 d-live 10.1.0 xf amd64 DEB0-0001
nvme0n1 232,9G disk 0
├─nvme0n1p1 550M part 0
├─nvme0n1p2 1G part 0
├─nvme0n1p3 12G part 0
└─nvme0n1p4 196,1G part 0

e depois do comando anterior:

lsblk -o name,mountpoint,size,type,ro,label,uuid
NAME MOUNTPOINT SIZE TYPE RO LABEL UUID
loop0 /usr/lib/live/mount/rootfs/filesystem.squashfs 2G loop 1
sda 1,8T disk 0 37440af9-87f3-4328-800b-da9758adea23
└─disk1luks_dif 1,7T crypt 0
└─disk1luks 1,7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1,7T raid1 0 2q22Wj-U2HF-1D8x-msuI-TXDR-Vlb9-a6TiX6
sdb 1,8T disk 0 5d1327be-82d5-494d-879c-1c14e5ff4b03
└─disk2luks_dif 1,7T crypt 0
└─disk2luks 1,7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1,7T raid1 0 2q22Wj-U2HF-1D8x-msuI-TXDR-Vlb9-a6TiX6
sdc 7,5G disk 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
├─sdc1 /usr/lib/live/mount/medium 2,2G part 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
└─sdc2 2,9M part 0 d-live 10.1.0 xf amd64 DEB0-0001
nvme0n1 232,9G disk 0
├─nvme0n1p1 550M part 0
├─nvme0n1p2 1G part 0
├─nvme0n1p3 12G part 0
└─nvme0n1p4 196,1G part 0

listar os volumes físicos com:
pvs

e o resultado:

PV VG Fmt Attr PSize PFree
/dev/md127 vg00 lvm2 a-- 1,71t 1,71t

o volumegroup:
vgcreate vg00 /dev/md/enc_disks

e o resultado:

Volume group "vg00" successfully created

listar os vgs:
vgdisplay

e o resultado:

PV VG Fmt Attr PSize PFree
/dev/md127 vg00 lvm2 a-- 1,71t 1,71t
root@debian:/home/user# vgdisplay
--- Volume group ---
VG Name vg00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 1,71 TiB
PE Size 4,00 MiB
Total PE 448826
Alloc PE / Size 0 / 0
Free PE / Size 448826 / 1,71 TiB
VG UUID GjsqW3-0Gw0-c9DL-7IY1-sDtR-gSN3-cjVMbq

os volume lógicos:
lvcreate -L 50G vg00 -n root

e o resultado:

Logical volume "root" created.

lvcreate -l 100%FREE vg00 -n var

e o resultado:

Logical volume "var" created.

como pretendo deixar 1 TiB livre para snapshots vamos reduzir o volume lógico:
lvreduce -L -1T /dev/vg00/var

antes de utilizar o bcache vamos preparar o dispositivo que servirá como cache encriptando o volume (/dev/nvme0n1p4 - a chave escolhida para encriptar o disco deve ser a mesma que utilizámos anteriormente para facilitar a montagem futura de todos os volumes):
cryptsetup -y luksFormat -q --type luks2 --integrity hmac-sha256 /dev/nvme0n1p4

abrimos o disco encriptado:
cryptsetup luksOpen /dev/disk/by-uuid/2d33460c-88f2-45b8-9cac-74d6a4f43370 disk_ssd_cache_luks

criamos o volume físico para o lvm:
pvcreate /dev/mapper/disk_ssd_cache_luks

o volumegroup:
vgcreate vg01 /dev/mapper/disk_ssd_cache_luks

o volume lógico:
lvcreate -l 100%FREE vg01 -n cache

antes da criação dos dispositivos bcache temos que instalar o pacote bcache-tools:
apt install bcache-tools

é chegado o momento da criação do bcache.

make-bcache -B /dev/mapper/vg00-root -B /dev/mapper/vg00-var -C /dev/mapper/vg01-cache

segue-se o resultado a listagem dos blocos, antes e depois da execução do comando anterior (lsblk -o name,mountpoint,size,type,ro,label,uuid):

antes:

NAME MOUNTPOINT SIZE TYPE RO LABEL UUID
loop0 /usr/lib/live/mount/rootfs/filesystem.squashfs 2G loop 1
sda 1.8T disk 0 37440af9-87f3-4328-800b-da9758adea23
└─disk1luks_dif 1.7T crypt 0
└─disk1luks 1.7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1.7T raid1 0 2q22Wj-U2HF-1D8x-msuI-TXDR-Vlb9-a6TiX6
├─vg00-root 50G lvm 0
└─vg00-var 679.2G lvm 0
sdb 1.8T disk 0 5d1327be-82d5-494d-879c-1c14e5ff4b03
└─disk2luks_dif 1.7T crypt 0
└─disk2luks 1.7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1.7T raid1 0 2q22Wj-U2HF-1D8x-msuI-TXDR-Vlb9-a6TiX6
├─vg00-root 50G lvm 0
└─vg00-var 679.2G lvm 0
sdc 7.5G disk 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
├─sdc1 /usr/lib/live/mount/medium 2.2G part 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
└─sdc2 2.9M part 0 d-live 10.1.0 xf amd64 DEB0-0001
nvme0n1 232.9G disk 0
├─nvme0n1p1 550M part 0
├─nvme0n1p2 1G part 0
├─nvme0n1p3 12G part 0
└─nvme0n1p4 196.1G part 0 2d33460c-88f2-45b8-9cac-74d6a4f43370
└─disk_ssd_cache_luks_dif 184.5G crypt 0
└─disk_ssd_cache_luks 184.5G crypt 0 M3HkN0-ktR2-3LUq-YeKK-K0QI-auVe-aUBgwN
└─vg01-cache

e depois:

NAME MOUNTPOINT SIZE TYPE RO LABEL UUID
loop0 /usr/lib/live/mount/rootfs/filesystem.squashfs 2G loop 1
sda 1.8T disk 0 37440af9-87f3-4328-800b-da9758adea23
└─disk1luks_dif 1.7T crypt 0
└─disk1luks 1.7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1.7T raid1 0 2q22Wj-U2HF-1D8x-msuI-TXDR-Vlb9-a6TiX6
├─vg00-root 50G lvm 0 d721b4b0-b1b4-486d-8b13-df00846a7019
│ └─bcache0 50G disk 0
└─vg00-var 679.2G lvm 0 78f757f3-d6ce-4d7f-9719-4d114483667f
└─bcache1 679.2G disk 0
sdb 1.8T disk 0 5d1327be-82d5-494d-879c-1c14e5ff4b03
└─disk2luks_dif 1.7T crypt 0
└─disk2luks 1.7T crypt 0 debian:enc_disks 50aca185-3edd-8558-7739-ac1282bc3027
└─md127 1.7T raid1 0 2q22Wj-U2HF-1D8x-msuI-TXDR-Vlb9-a6TiX6
├─vg00-root 50G lvm 0 d721b4b0-b1b4-486d-8b13-df00846a7019
│ └─bcache0 50G disk 0
└─vg00-var 679.2G lvm 0 78f757f3-d6ce-4d7f-9719-4d114483667f
└─bcache1 679.2G disk 0
sdc 7.5G disk 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
├─sdc1 /usr/lib/live/mount/medium 2.2G part 0 d-live 10.1.0 xf amd64 2019-09-07-11-18-31-00
└─sdc2 2.9M part 0 d-live 10.1.0 xf amd64 DEB0-0001
nvme0n1 232.9G disk 0
├─nvme0n1p1 550M part 0
├─nvme0n1p2 1G part 0
├─nvme0n1p3 12G part 0
└─nvme0n1p4 196.1G part 0 2d33460c-88f2-45b8-9cac-74d6a4f43370
└─disk_ssd_cache_luks_dif 184.5G crypt 0
└─disk_ssd_cache_luks 184.5G crypt 0 M3HkN0-ktR2-3LUq-YeKK-K0QI-auVe-aUBgwN
└─vg01-cache 184.5G lvm 0 bb723087-e500-48d3-91f6-bcf8e6d09acc
├─bcache0 50G disk 0
└─bcache1 679.2G disk 0

criamos os sistemas de ficheiros nos dois volumes bcache:
mkfs.ext4 /dev/bcache0
mkfs.ext4 /dev/bcache1

terminada a estruturação dos volumes vamos para o último passo da instalação, o debootstrap do servidor.

para preparar o debootstrap começamos por criar um ponto de montagem:
mkdir -p /media/target
mount /dev/bcache0 /media/target

instalar o debootstrap:
apt install debootstrap

realizar o debootstrap do sistema:
debootstrap --arch amd64 buster /media/target http://ftp.debian.org/debian

criar sistema de ficheiros em /dev/nvme0n1p1 e em /dev/nvme0n1p2 (/boot/efi e /boot):
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2

entrar na pasta que utilzaremos como raiz para o chroot (cd /media/target):
cd /media/target

montar os sistemas de ficheiros temporários da API:
mount -t proc /proc proc/
mount -o bind /sys sys/
mount -o bind /dev dev/
mkdir run/udev/
mount -o bind /run/udev run/udev/

finalmente mudamos de root:
chroot .

montamos as partições necessárias para a instalação (de acordo com o planeado):
mount /dev/nvme0n1p2 /boot
mkdir /boot/efi
mount /dev/nvme0n1p1 /boot/efi

uma vez que /var foi criada aquando do debootstrap e nela pretendemos montar o dispositivo de backing do bcache /dev/bcache1 teremos que mover o seu conteúdo para o novo destino. temporariamente montamos /dev/bcache1 em /mnt/var e copiamos para lá o conteúdo de /var sendo que depois disso remontamos /dev/bcache1 em / var:
apt update
apt install rsync
mkdir /mnt/var
mount /dev/bcache1 /mnt/var
rsync -aqxP /var/* /mnt/var
umount /mnt/var
mount /dev/bcache1 /var

para montar a swap e para garantir a integridade e segurança necessárias à solução e uma vez que já nos encontramos no ambiente chrooted vamos aproveitar para instalar alguns dos pacotes necessários e posteriormente encriptar o volume que servirá para criar a swap :
apt install lvm2 bcache-tools mdadm cryptsetup locales
cryptsetup -y luksFormat -q --type luks2 --integrity hmac-sha256 /dev/nvme0n1p3

abrimos o disco encriptado:
cryptsetup luksOpen /dev/nvme0n1p3 swap

e criamos a swap:
mkswap /dev/mapper/swap

e o resultado:

Setting up swapspace version 1, size = 11.2 GiB (12047101952 bytes)
no label, UUID=0f357945-c917-45dc-b5fb-5150d68bd05c

verifiquemos o resultado:
lsblk

e o resultado:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 2G 1 loop
sda 8:0 0 1.8T 0 disk
`-disk1luks_dif 253:0 0 1.7T 0 crypt
`-disk1luks 253:1 0 1.7T 0 crypt
`-md127 9:127 0 1.7T 0 raid1
|-vg00-root 253:4 0 50G 0 lvm
| `-bcache0 252:0 0 50G 0 disk /
`-vg00-var 253:5 0 679.2G 0 lvm
`-bcache1 252:128 0 679.2G 0 disk /var
sdb 8:16 0 1.8T 0 disk
`-disk2luks_dif 253:2 0 1.7T 0 crypt
`-disk2luks 253:3 0 1.7T 0 crypt
`-md127 9:127 0 1.7T 0 raid1
|-vg00-root 253:4 0 50G 0 lvm
| `-bcache0 252:0 0 50G 0 disk /
`-vg00-var 253:5 0 679.2G 0 lvm
`-bcache1 252:128 0 679.2G 0 disk /var
sdc 8:32 1 7.5G 0 disk
|-sdc1 8:33 1 2.2G 0 part
`-sdc2 8:34 1 2.9M 0 part
nvme0n1 259:0 0 232.9G 0 disk
|-nvme0n1p1 259:1 0 550M 0 part /boot/efi
|-nvme0n1p2 259:2 0 1G 0 part /boot
|-nvme0n1p3 259:3 0 12G 0 part
| `-swap_dif 253:9 0 11.2G 0 crypt
| `-swap 253:10 0 11.2G 0 crypt
`-nvme0n1p4 259:4 0 196.1G 0 part
`-disk_ssd_cache_luks_dif 253:6 0 184.5G 0 crypt
`-disk_ssd_cache_luks 253:7 0 184.5G 0 crypt
`-vg01-cache 253:8 0 184.5G 0 lvm
|-bcache0 252:0 0 50G 0 disk /
`-bcache1 252:128 0 679.2G 0 disk /var

instalamos o kernel:
apt update
apt install linux-image-amd64 linux-headers-4.19.0-6-amd64 grub-efi

preparamos o ficheiro fstab:
cat /proc/mounts >> /etc/fstab

e alteramos removendo as entradas não necessárias e alterando os dispositivos pelos seus uuid com a ajuda do comando blkid até obtermos um ficheiro idêntico ao que se segue:

# UNCONFIGURED FSTAB FOR BASE SYSTEM
#/dev/bcache0 / ext4 rw,relatime 0 0
UUID=a6c1f0a2-de49-49a9-9473-6f8856d68da7 / ext4 rw,relatime 0 0
#/proc /proc proc rw,relatime 0 0
#sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
#udev /dev devtmpfs rw,nosuid,relatime,size=8158256k,nr_inodes=2039564,mode=755 0 0
#/dev/nvme0n1p2 /boot ext4 rw,relatime 0 0
UUID=0c0a5293-0a8a-41c5-8d46-42d658c12ef7 /boot ext4 rw,relatime 0 0
#/dev/nvme0n1p1 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0
UUID=6BE9-41B4 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0
#/dev/bcache1 /var ext4 rw,relatime 0 0
UUID=c134ede5-d8f6-46d3-bb58-14ba6bfe6422 /var ext4 rw,relatime 0 0
#/dev/mapper/swap none swap sw 0 0
UUID=49fa4e03-3b8b-4236-baeb-079259e763d0 none swap sw 0 0

editar o ficheiro /etc/cryptsetup-initramfs/conf-hook e adicionar o que se segue no final deste (necessário para que a initramfs seja gerada com as ferramentas necessárias para a dessencriptação dos diferentes volumes e não tenhamos que fazê-lo manualmente):
CRYPTSETUP=y

preparamos o ficheiro /etc/crypttab com o conteúdo que se segue:

#
disk1luks UUID=37440af9-87f3-4328-800b-da9758adea23 none luks
disk2luks UUID=5d1327be-82d5-494d-879c-1c14e5ff4b03 none luks
disk2luks UUID=5d1327be-82d5-494d-879c-1c14e5ff4b03 none luks
disk_ssd_cache_luks UUID=2d33460c-88f2-45b8-9cac-74d6a4f43370 none luks
swap UUID=5646440e-cc3f-4c30-818c-67a35e510fc8 none luks

instalamos o grub:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug

sair do chroot e reiniciar:
exit
reboot

quando cheguei à escola parecia que estava tudo ok. depois de introduzir a palavra-passe para desencriptar o primeiro disco eis que aparece o seguinte erro:

kernel doesn't support dm-integrity mapping

talvez se resolva com isto http://kenta.blogspot.com/2019/07/ttvdpsoo-installing-ubuntu-with-luks2…
efetivamente, voltar a refazer o chroot e adicionar ao final do ficheiro /etc/initramfs-tools/modules o texto que se segue:
dm_integrity

novo reboot e novo problema! não se encontra disponível o bloco com uuid "a6c1f0a2-de49-49a9-9473-6f8856d68da7", o root do nosso sistema. isto pode dever-se à não ativação dos dispositivos lvm. experimentemos então adicionar a ativação adicionando no final do scipt /usr/share/initramfs-tools/scripts/local-top/lvm2 o comando seguinte:
lvm vgchange -ay

e recriar o initramfs com:
update-initramfs -k all -c
https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1573982

para escrever apenas uma palavra-passe para desencriptar os discos:
dd if=/dev/urandom of=/chave_enc bs=1024 count=1
chmod u=rw,g=,o= /chave_enc
cryptsetup luksAddKey /dev/sdb /chave_enc
cryptsetup luksAddKey /dev/nvme0n1p4 /chave_enc

e alterar o ficheiro /etc/crypttab de acordo com o que se segue:

#
disk1luks UUID=37440af9-87f3-4328-800b-da9758adea23 none luks,discard
disk2luks UUID=5d1327be-82d5-494d-879c-1c14e5ff4b03 /chave_enc luks,discard
disk_ssd_cache_luks UUID=2d33460c-88f2-45b8-9cac-74d6a4f43370 /chave_enc luks,discard
swap UUID=5646440e-cc3f-4c30-818c-67a35e510fc8 none luks,swap,discard

e recriar o initramfs:
update-initramfs -k all -c

COISAS
parar dispositivos:
vgchange -an vg00
mdadm --stop /dev/md127
cryptsetup close disk1luks

erro na montagem do bcache depois de falha de energia e antes de realizar a instalação com debootstrap:
make-bcache --wipe-bcache -B /dev/mapper/vg00-root -B /dev/mapper/vg00-var -C /dev/mapper/vg01-cache

e o resultado:

Can't open dev /dev/mapper/vg01-cache: Device or resource busy

e para corrigir:
echo 1 > /sys/fs/bcache/cda1c67e-f643-44ab-99ef-70d6052fb0ab/stop
wipefs -af /dev/mapper/vg01-cache
make-bcache --wipe-bcache -B /dev/mapper/vg00-root -B /dev/mapper/vg00-var -C /dev/mapper/vg01-cache

novamente:
make-bcache --wipe-bcache -B /dev/mapper/vg00-root -B /dev/mapper/vg00-var -C /dev/mapper/vg01-cache

e o resultado:

UUID: 1cc3f346-2e69-45b9-b147-abc8e985f609
Set UUID: 4b71fc65-6b43-4003-8a77-62fcc6414316
version: 0
nbuckets: 377752
block_size: 1
bucket_size: 1024
nr_in_set: 1
nr_this_dev: 0
first_bucket: 1
UUID: 59289cba-a087-40c0-ad47-7a41dafe9dbe
Set UUID: 4b71fc65-6b43-4003-8a77-62fcc6414316
version: 1
block_size: 1
data_offset: 16
UUID: d5988a7b-08f5-4525-8bfb-dad155eba9c4
Set UUID: 4b71fc65-6b43-4003-8a77-62fcc6414316
version: 1
block_size: 1
data_offset: 16

parar/libertar o bcache para a sua remoção ou recriação:
echo 1 > /sys/block/bcache0/bcache/stop
echo 1 > /sys/block/bcache1/bcache/stop
echo 1 > /sys/fs/bcache/07156caf-e495-4554-898d-72be64ab54f7/stop

para recriar o bcache é mais simple:
partprobe

fazer chroot rapido:
sudo su
cryptsetup luksOpen /dev/disk/by-uuid/37440af9-87f3-4328-800b-da9758adea23 disk1luks
cryptsetup luksOpen /dev/disk/by-uuid/5d1327be-82d5-494d-879c-1c14e5ff4b03 disk2luks
cryptsetup luksOpen /dev/disk/by-uuid/2d33460c-88f2-45b8-9cac-74d6a4f43370 disk_ssd_cache_luks
cryptsetup luksOpen /dev/disk/by-uuid/5646440e-cc3f-4c30-818c-67a35e510fc8 swap
apt update && apt install mdadm
partprobe
apt install lvm2
partprobe
apt install bcache-tools
mkdir -p /media/target
mount -U a6c1f0a2-de49-49a9-9473-6f8856d68da7 /media/target
cd /media/target
mount -t proc /proc proc/
mount -o bind /sys sys/
mount -o bind /dev dev/
mount -o bind /run/udev run/udev/
chroot .
mount /dev/nvme0n1p2 /boot
mount /dev/nvme0n1p1 /boot/efi
mount -U c134ede5-d8f6-46d3-bb58-14ba6bfe6422 /var

https://www.tech-g.com/2017/08/10/bcache-how-to-setup/

https://wiki.ubuntu.com/ServerTeam/InstallOnBcache

https://www.rath.org/ssd-caching-under-linux.html

https://gist.github.com/MawKKe/caa2bbf7edcc072129d73b61ae7815fb

https://superuser.com/questions/1193290/best-order-of-raid-lvm-and-luks

https://wiki.archlinux.org/index.php/Bcache

https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_syst…

https://askubuntu.com/questions/57908/how-can-i-quickly-copy-a-gpt-part…

https://wiki.debian.org/LVM

https://wiki.archlinux.org/index.php/LVM

https://blog.tinned-software.net/automount-a-luks-encrypted-volume-on-s…

https://askubuntu.com/questions/831216/how-can-i-reinstall-grub-to-the-…

https://wiki.debian.org/GrubEFIReinstall

https://superuser.com/questions/376470/how-to-reinstall-grub2-efi

desencriptar dois discos distintos com a mesma palavra passe - https://unix.stackexchange.com/questions/392284/using-a-single-passphra…

https://www.pavelkogan.com/2015/01/25/linux-mint-encryption/

https://www.redhat.com/en/blog/improving-read-performance-dm-cache

https://unix.stackexchange.com/questions/197416/change-linux-bcache-dev…

https://wiki.archlinux.org/index.php/chroot

https://linuxconfig.org/how-to-move-var-directory-to-another-partition

https://maple52046.github.io/2017/11/03/Install-Ubuntu-in-UEFI-mode-wit…

recuperar um backing device - https://www.kernel.org/doc/html/latest/admin-guide/bcache.html

cryptsetup na initramfs - https://unix.stackexchange.com/questions/267182/initramfs-in-debootstra…

Full_Disk_Encryption_Howto_2019 - https://help.ubuntu.com/community/Full_Disk_Encryption_Howto_2019

https://wiki.ubuntu.com/DebuggingKernelBoot