serveur-deux-disques.md 8.7 KB

% Configuration de deux disques avec LVM

:::information

Sur ce schéma de partitionnement, on ne privilégie pas la fiabilité ou la redondance mais l'espace disque.

Ici, ce serveur (de secours) est configuré pour être en backup d'un autre serveur (principal): si le serveur principal plante, le serveur de secours prend le relais.

La sauvegarde des données n'est donc pas ici assurée: elle doit l'être par un autre moyen, en mettant une politique de sauvegarde réfléchie.

:::

Schéma de partitionnement

:::warning

Tuto à refaire: on va partir en RAID0 car plus simple pour un déchiffrement en une fois du système.

:::

Partition de boot

On crée une partition de boot sur les deux disques: 512 Mo

Swap

On crée deux partitions (une sur chaque disque) de 11,6 Go.

Données

Le reste des disques sera affecté aux données.

Partitionnement

Vérification de la présence d'UEFI

:::warning

Bien vérifier si vous avez un système UEFI:

ls /sys/firmware/efi

Si ce fichier n'existe pas, il faut utiliser une table MBR

Source: Check if Computer Uses UEFI or Legacy BIOS [Linux & Windows]

:::

Dans le cas contraire: il faut utiliser une table de partition MBR.

Partitionnement du premier disque

fdisk /dev/sda

Création de la partition de boot

Utilisation de la commande n

Command (m for help): n

Ensuite, on crée la partition numéro 1

Partition number (1-128, default 1): 1

On laisse la valeur par défaut pour le premier secteur en appuyant sur Entrée

First sector (2048-3907029134, default 2048): 

Puis on indique la taille +512M:

Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029134, default 3907028991): +512M

Le message suivant indique que la première partition est bien créée:

Created a new partition 1 of type 'Linux filesystem' and of size 512 MiB.

Création de la partition de Swap

À nouveau, on utilise la commande n, mais cette fois on choisit une taille en secteurs (qui correspond ici à 11,5Go):

Command (m for help): n [ENTREE]
Partition number (2-128, default 2): [ENTREE]
First sector (1050624-3907029134, default 1050624): [ENTREE]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-3907029134, default 3907028991): +24117248 [ENTREE]

Le message de confirmation permet de vérifier la taille:

Created a new partition 2 of type 'Linux filesystem' and of size 11.5 GiB.

On modifie ensuite le type de partition pour la 2 avec la commande t:

Command (m for help): t
Partition number (1,2, default 2): 2
Partition type or alias (type L to list all): 19

Création de la partition principale

Ici, on appuie sur Entrée pour laisser les valeurs par défaut:

Command (m for help): n
Partition number (3-128, default 3): 
First sector (25167873-3907029134, default 25169920): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (25169920-3907029134, default 3907028991): 

Created a new partition 3 of type 'Linux filesystem' and of size 1.8 TiB.

Et on modifie le type de la partition pour la passer en Linux LVM:

Command (m for help): t
Partition number (1-3, default 3): 
Partition type or alias (type L to list all): 43

Changed type of partition 'Linux LVM' to 'Linux LVM'.

On termine par la commande w pour sauvegarder les changements de la nouvelle table des partitions:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Partitionnement du second disque

On fait un dump du disque précédent:

sfdisk --dump /dev/sda  > sda.dump
# cat sda.dump
label: gpt
label-id: F4C65904-AE36-9840-8A8E-896F80BB3E44
device: /dev/sda
unit: sectors
first-lba: 2048
last-lba: 3907029134
sector-size: 512

/dev/sda1 : start=        2048, size=     1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=28EE3FC6-31D0-9940-AE6D-747516CA9E60
/dev/sda2 : start=     1050624, size=    24117249, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=4112F137-A11E-434B-A6FF-A8BB94479F62
/dev/sda3 : start=    25169920, size=  3881859072, type=E6D6D379-F507-44C2-A23C-238F2A3DF928, uuid=1E816DE5-C4FE-594A-9577-E5617373F36A

On duplique vers le second disque :

sfdisk /dev/sdb < sda.dump

Chiffrement

Voir Chiffrement sur cette page

Chiffrement des swap

swapoff -a
cryptsetup open --type plain --cipher aes-xts-plain64 --key-file /dev/urandom /dev/sda2 cryptswapa
cryptsetup open --type plain --cipher aes-xts-plain64 --key-file /dev/urandom /dev/sdb2 cryptswapb
mkswap /dev/mapper/cryptswapa 
mkswap /dev/mapper/cryptswapb
swapon /dev/mapper/cryptswapb
swapon /dev/mapper/cryptswapa

Configuration du RAID

Partitions de démarrage

On se met en RAID1

# mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sd[a-b]1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 523264K

Il faut confirmer avec y:

Continue creating array? y

Confirmation:

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

Ensuite on formate cette partition:

mkfs.ext4 /dev/md1

Partitions de données

On utilise RAID1 pour le serveur de redondance

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sd[a-b]3

Chiffrement LUKS de la partition principale

Initialiser le chiffrement LUKS sur le RAID :

cryptsetup -q -s 512 -c aes-xts-plain64 luksFormat /dev/md0
# cryptsetup -q -s 512 -c aes-xts-plain64 luksFormat /dev/md0
Enter passphrase for /dev/md0: 

On récupère l'UUID et on le note précieusement :

cryptsetup luksDump /dev/md0 | grep UUID | awk '{print $2}'

:::information

Cette information (UUID) sera nécessaire au moment de configurer le déchiffrement au démarrage

:::

Ouvrir le conteneur chiffré :

cryptsetup luksOpen /dev/md0 raid_crypt

Saisir la passphrase:

Enter passphrase for /dev/md0: 

Configuration de LVM

Installation de LVM

apt update && apt install -y cryptsetup lvm2 debian-keyring

Création des deux Physical Volumes

Création sur la partition 3 du premier disque:

pvcreate /dev/sda3

Création sur la partition 2 du second disque:

pvcreate /dev/sdb2

Ajout des PV à un nouveau Volume Group

Création du VG

vgcreate debian-zeta-vg /dev/sda3

Extension du VG

vgextend debian-zeta-vg /dev/sdb2

Vérification (ici le VG doit faire 3,6To):

# vgdisplay debian-zeta-vg 
  --- Volume group ---
  VG Name               debian-zeta-vg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <3.62 TiB
  PE Size               4.00 MiB
  Total PE              947846
  Alloc PE / Size       0 / 0   
  Free  PE / Size       947846 / <3.62 TiB
  VG UUID               i58CcT-sZgA-mjZc-8Kb1-qhLW-LOZP-rlI0if

Création des volumes logiques

Pour ce serveur Proxmox, on aura deux partitions LVM:

  • une partition de démarrage
  • une partition de données
lvcreate -L 100G -n lv_root debian-zeta-vg
lvcreate -l 100%FREE -n lv_data debian-zeta-vg

Formater et monter les volumes

Formater en ext4 :

mkfs.ext4 /dev/vg_raid/lv_root
mkfs.ext4 /dev/vg_raid/lv_data
mkfs.ext4 /dev/sda1

Installation du système Debian

Debootstrap

Aller sur la page Debian -- Details of package debootstrap in bookworm

Récupérer l'adresse dans la section Télécharger et en cliquant sur all

Copier un des liens et l'utiliser pour télécharger sur le serveur:

wget http://ftp.fr.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.128+nmu2+deb12u2_all.deb

On l'installe:

dpkg -i debootstrap*.deb && rm -f debootstrap*.deb

Montage des volumes pour l'installation

Rappel:

  • /dev/sda1 > /boot
  • mount /dev/debian-zeta-vg/lv_root > /
  • mount /dev/debian-zeta-vg/lv_data > /data

Le tout étant dans un premier temps monté sur le point de montage /mnt

mount /dev/debian-zeta-vg/lv_root
mkdir /mnt/data
mount /dev/debian-zeta-vg/lv_data /mnt/data/
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Chiffrement des volumes