# Mise en place d'un RAID5 avec LUKS et LVM sous Linux ## Le plan - installer un raid5 - installer les partitions - une partition pour grub de 1Mo - une partition pour le déchiffrement de 511Mo - une seule partition pour Proxmox en ext4 (même si ZFS est recommandé, il a plus d'overhead, voir Annexes) - chiffrer avec luks - il semble que le meilleur algo de chiffrement soit aes-cbc (moins bon en écriture que aes-xts mais meilleur en lecture) - - Installer Debian ## Contexte : RAID5 avec 3 disques de 2 To Vous souhaitez configurer un RAID5 sur un serveur Linux, avec un chiffrement LUKS, une gestion par LVM et un système de fichiers ext4. Voici les détails et la procédure complète pour atteindre cet objectif. --- ## 1. RAID : Partitionner ou non les disques ? ### Faut-il partitionner les disques avant de configurer le RAID ? **Non, il n'est pas nécessaire de partitionner les disques**. Voici pourquoi : - **RAID 5** fonctionne mieux avec des disques utilisés dans leur totalité, sans partitionnement, ce qui simplifie la gestion et optimise les performances. - **LUKS** et **LVM** offrent toute la flexibilité nécessaire sans qu’il soit nécessaire de partitionner. - Ajouter des partitions pourrait compliquer la configuration et n’apporterait aucun avantage significatif en termes de sécurité ou de performances. ### Pourquoi cette approche est optimale ? - Simplicité d’administration. - Performances maximales. - Réduction des risques d’erreurs. --- ## Benchmark Voir: https://forum.proxmox.com/threads/adding-full-disk-encryption-to-proxmox.137051/ ``` # cryptsetup benchmark # Tests are approximate using memory only (no storage IO). PBKDF2-sha1 1232169 iterations per second for 256-bit key PBKDF2-sha256 1661768 iterations per second for 256-bit key PBKDF2-sha512 1209430 iterations per second for 256-bit key PBKDF2-ripemd160 742617 iterations per second for 256-bit key PBKDF2-whirlpool 469792 iterations per second for 256-bit key argon2i 7 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) argon2id 6 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) # Algorithm | Key | Encryption | Decryption aes-cbc 128b 629.9 MiB/s 2288.7 MiB/s serpent-cbc 128b 90.4 MiB/s 319.0 MiB/s twofish-cbc 128b 199.1 MiB/s 377.3 MiB/s aes-cbc 256b 474.5 MiB/s 1721.4 MiB/s serpent-cbc 256b 91.0 MiB/s 319.8 MiB/s twofish-cbc 256b 200.6 MiB/s 377.0 MiB/s aes-xts 256b 1959.3 MiB/s 1952.9 MiB/s serpent-xts 256b 312.3 MiB/s 301.9 MiB/s twofish-xts 256b 347.3 MiB/s 353.8 MiB/s aes-xts 512b 1538.7 MiB/s 1523.3 MiB/s serpent-xts 512b 317.4 MiB/s 302.0 MiB/s twofish-xts 512b 352.9 MiB/s 354.8 MiB/s ``` ### Capacité CPU Voir : https://www.cyberciti.biz/faq/linux-xen-vmware-kvm-intel-vt-amd-v-support/ ``` less /etc/cpuinfo ``` Vérifier si aes est présent (chiffrement) Vérifier si lm (64 bits) Vérifier si vmx (Intel) ou svm (AMD) sont activés Ou ``` # lscpu | grep VT Virtualization: VT-x ``` ## 2. Configuration complète : RAID → LUKS → LVM → ext4 ### Étape 0: système de boot 1. Réservez une petite partition (généralement 1 Go) sur chaque disque pour /boot. • Exemple : partitionnez /dev/sd[b-d] en deux : • Une partition de 1 Go pour /boot (ex. /dev/sdb1, /dev/sdc1, /dev/sdd1). • Le reste du disque pour le RAID5. 2. Configurez /boot avec RAID1 pour la redondance : sudo mdadm --create --verbose /dev/md1 --level=1 --raid-devices=3 /dev/sd[b-d]1 • RAID1 garantit que même si un disque tombe en panne, le système peut toujours démarrer. 3. Formatez la partition RAID1 en ext4 : sudo mkfs.ext4 /dev/md1 4. Montez cette partition comme /boot : 5. Installer le système de démarrage (voir kimsufi.md) ### Étape 1 : Créer le RAID 5 ```bash sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d] ``` - Laissez le RAID se synchroniser après la création. ### Étape 2 : Ajouter le chiffrement LUKS 1. Initialiser le chiffrement LUKS sur le RAID : ```bash sudo cryptsetup luksFormat /dev/md0 ``` 2. Ouvrir le conteneur chiffré : ```bash sudo cryptsetup open /dev/md0 raid_crypt ``` ### Étape 3 : Configurer LVM 1. Initialiser LVM sur le conteneur LUKS : ```bash sudo pvcreate /dev/mapper/raid_crypt sudo vgcreate vg_raid /dev/mapper/raid_crypt ``` 2. Créer des volumes logiques : ```bash sudo lvcreate -L 1.5T -n lv_root vg_raid sudo lvcreate -L 500G -n lv_home vg_raid ``` ### Étape 4 : Formater et monter les volumes 1. Formater en ext4 : ```bash sudo mkfs.ext4 /dev/vg_raid/lv_root sudo mkfs.ext4 /dev/vg_raid/lv_home ``` 2. Monter les volumes : ```bash sudo mount /dev/vg_raid/lv_root /mnt sudo mkdir /mnt/home sudo mount /dev/vg_raid/lv_home /mnt/home ``` 3. Ajouter les entrées dans `/etc/fstab` pour un montage automatique au démarrage. --- ## 3. Vérification de la prise en charge AES-NI Les extensions AES-NI permettent d’accélérer le chiffrement et le déchiffrement des données avec LUKS. ### Méthode 1 : Vérification via `/proc/cpuinfo` ```bash cat /proc/cpuinfo | grep -i aes ``` - Si `aes` apparaît dans les `flags`, AES-NI est pris en charge. ### Méthode 2 : Utiliser `lscpu` ```bash lscpu | grep -i aes ``` - Une ligne avec `AES : Supported` confirme la prise en charge. ### Méthode 3 : Outil `cpuid` 1. Installer l’outil : ```bash sudo apt install cpuid # Pour Debian/Ubuntu sudo dnf install cpuid # Pour Fedora/CentOS ``` 2. Vérifier la prise en charge AES : ```bash cpuid | grep -i aes ``` ### Méthode 4 : Vérification avec `dmesg` ```bash dmesg | grep -i aes ``` - Si AES-NI est actif, le noyau Linux le mentionnera. ### Importance d’AES-NI AES-NI améliore considérablement les performances pour le chiffrement de données, notamment pour **LUKS**, **SSL/TLS**, et les systèmes chiffrés. Si AES-NI n’est pas disponible, le chiffrement sera réalisé en mode logiciel, ce qui est moins performant. ## Annexes * [Best practices question (Ext4/zfs/raw/qcow2) | Proxmox Support Forum](https://forum.proxmox.com/threads/best-practices-question-ext4-zfs-raw-qcow2.142094/) * [ZFS and EXT4 mixed? | Proxmox Support Forum](https://forum.proxmox.com/threads/zfs-and-ext4-mixed.66730/) * [ZFS or something else? | Proxmox Support Forum](https://forum.proxmox.com/threads/zfs-or-something-else.73917/) ### Ressources RAID * [Quel RAID pour protéger efficacement mes données ? Du RAID0 au RAID5](https://www.chronodisk-recuperation-de-donnees.ca/blog/quel-raid-pour-proteger-efficacement-mes-donnees/) * [RAID 5 – is it pointless (for large drives)? : r/storage](https://www.reddit.com/r/storage/comments/fascry/raid_5_is_it_pointless_for_large_drives/) * [linux - How to increase speed of RAID 5 with mdadm + luks + lvm - Server Fault](https://serverfault.com/questions/1081766/how-to-increase-speed-of-raid-5-with-mdadm-luks-lvm) * [linux - Best order of RAID, LVM and LUKS - Super User](https://superuser.com/questions/1193290/best-order-of-raid-lvm-and-luks) * [How to install Ubuntu with LUKS Encryption on LVM](https://gist.github.com/superjamie/d56d8bc3c9261ad603194726e3fef50f) * [linux - How to add RAID5 to existing crypto-LVM? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/74427/how-to-add-raid5-to-existing-crypto-lvm) * [How to Create a RAID 5 System With LVM Tool and Recover Data After Failures / Habr](https://habr.com/en/companies/hetmansoftware/articles/547086/) * [Créer un Espace de Stockage Fiable avec RAID 5 et LVM sous Linux | Kevin Deldycke](https://kevin.deldycke.com/2005/creer-un-espace-de-stockage-fiable-avec-raid-5-et-lvm-sous-linux) * [Raid 5 configuration Question : r/sysadmin](https://www.reddit.com/r/sysadmin/comments/13sltai/raid_5_configuration_question/) * [partitioning - Is it better to partition hard drives for a RAID? - Super User](https://superuser.com/questions/382748/is-it-better-to-partition-hard-drives-for-a-raid) * [hard drive - Are different RAID levels on the same physical disks possible? Does it make sense to include RAID 1 and RAID 5 on the same disks? - Super User](https://superuser.com/questions/1579024/are-different-raid-levels-on-the-same-physical-disks-possible-does-it-make-sens) * [RAID (informatique) — Wikipédia](https://fr.wikipedia.org/wiki/RAID_(informatique)) * [Mdadm — Wikipédia](https://fr.wikipedia.org/wiki/Mdadm) * [Using mdadm to send e-mail alerts for RAID failures | Support | SUSE](https://www.suse.com/support/kb/doc/?id=000016716)