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.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