% 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: ```bash 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]](https://itsfoss.com/check-uefi-or-bios/) ::: Dans le cas contraire: il faut utiliser une table de partition MBR. ## Partitionnement du premier disque ```bash 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: ```bash sfdisk --dump /dev/sda > sda.dump ``` ```bash # 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 : ```bash sfdisk /dev/sdb < sda.dump ``` # Chiffrement Voir [Chiffrement sur cette page](gnu-linux/serveurs/installation/ecaz-serveur-proxmox.md) ## Chiffrement des swap ```bash 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 ```bash # 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: ```bash mkfs.ext4 /dev/md1 ``` ## Partitions de données On utilise RAID1 pour le serveur de redondance ```bash 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 : ```bash cryptsetup -q -s 512 -c aes-xts-plain64 luksFormat /dev/md0 ``` ```bash # 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** : ```bash 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é : ```bash cryptsetup luksOpen /dev/md0 raid_crypt ``` Saisir la passphrase: ``` Enter passphrase for /dev/md0: ``` # Configuration de LVM ## Installation de LVM ```bash 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 ```bash vgcreate debian-zeta-vg /dev/sda3 ``` Extension du VG ```bash 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 ```bash 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 : ```bash 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](https://packages.debian.org/bookworm/debootstrap) 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: ```bash wget http://ftp.fr.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.128+nmu2+deb12u2_all.deb ``` On l'installe: ```bash 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` ```bash 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