% 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/cryptswapa
swapon /dev/mapper/cryptswapb
```

# 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 chiffrée:

```
pvcreate /dev/mapper/raid_crypt
```


## Ajout des PV à un nouveau Volume Group

Création du VG

```bash
vgcreate debian-zeta-vg /dev/mapper/raid_crypt
```

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

