Intruduction
Dans ce post, nous allons voir comment optimiser au mieux les vitesses d’écriture de notre Proxmox.
Ancienne Infrastructure
L’ancien Proxmox était constitué d’un RAIDZ5. Les utilisateurs se connectaient à une VM (Rocky 9) et exécutaient de nombreuses simulations, nécessitant une forte utilisation de RAM, CPU et des performances élevées en écriture disque.
Nouveau serveur
Voici ci-dessous un petit schéma de mon serveur. Il s’agit d’un serveur utilisé dans le cadre de mon travail pour remplacer l’ancien Proxmox, où les utilisateurs se plaignaient des faibles performances en écriture.
- Rouge : RAID1 réservé pour l’OS, c’est ici que nous installerons Proxmox.
- Jaune : Un disque dédié pour le cache SLOG, nous en parlerons plus bas.
- Vert : Un RAID10 ZFS, pour les vitesses d’écriture et une meilleure protection. C’est sur celui-ci que je vais m’arrêter.
BIOS
Pour de meilleures performances, il est également nécessaire de configurer certains paramètres dans le BIOS. Je vous recommande de réaliser ces ajustements avant de procéder à l’installation de l’OS.
Une fois dans le BIOS, activez les fonctionnalités suivantes :
- Profil de performance : Activez le mode performance.
- Turbo Boost : Activez cette option.
- Hyper-Threading : Activez cette option.
- Technologie de virtualisation : Activez cette fonctionnalité.
- Gestion d’énergie : Supprimez toutes les limites de puissance (power capping).
Type de RAID
Voici un schéma un peu plus détaillé des disques et du RAID que je souhaite mettre en place :
Pour l’OS
Pour l’OS, j’ai décidé d’utiliser les emplacements BOSS des serveurs Dell. Ce sont deux disques NVMe généralement situés à l’arrière du serveur et prévus pour l’installation de l’OS. Ils seront configurés en RAID1, géré par le logiciel (Proxmox) et non par le matériel (carte RAID de Dell).
Pour les données
Dans mon cas, le meilleur RAID à mettre en place dans une infrastructure d’entreprise, pour une meilleure tolérance aux pannes et des vitesses d’écriture optimales, est le RAID10 ZFS pris en charge par Proxmox.
Attention : Le RAID5 est à proscrire pour les écritures, car il limite fortement les performances.
Choix des disques
Il existe plusieur categorie d’endurance des disque :
- Read-intensive : 0,3–1 DWPD (usage lecture majoritaire)
- Mixed-use : ~3 DWPD (équilibre lecture/écriture)
- Write-intensive : ≥ 10 DWPD (base de données, journaux très actifs)
Je recommande un bon disque de type Mixed-use avec un bon equilibre pour eviter les problemes
Previligier aussi un disque de type Entreprise car la latence sera plus faible (< 100 µs), meilleure gestion du Write Amplification Factor et quality of service (QOS)
Le PLP est indispensable car nous allons dédié un disque au SLOG pour ne pas perdre les écritures synchrones en cas de coupure, nous en parlerons plus tardd en bas.
Vous trouverez ci-dessous les caracteristique pour le meilleurs choix de disque pour de l’ecriture su un RAID10 Zfs Proxmox :
Type | Description |
---|---|
Interface | NVMe PCIe 4.0 / 5.0 |
Endurance (DWPD) | ≥ 3 DWPD (Mixed Use) |
IOPS aléatoire 4 KiB Read | ≥ 500 000 IOPS |
IOPS aléatoire 4 KiB Write | ≥ 200 000 IOPS |
Débit séquentiel | ≥ 3 000 MB/s (128 KiB) |
PLP (Power Loss Protection) | True |
Cache DRAM | Present |
Form factor (Option) | E3.S / U.2 |
TBW | Calculé via DWPD × Capacité × Durée (jours) |
Pour resumer dans mon cas je vais prendre :
- Pour l’OS : 2 disque NVME a l’arrière du serveur DELL, pas de grande importance dans le choix des performances
- Pour le Cache : SLOG : Micron 5200 MAX 480 GB (PLP + 5 DWPD + IOPS aléatoires en écriture supérieures 75 000 IOPS)
- Pour les DATA : Les meilleurs dispo chez DELL en NVME
Partions
Swap
Dans un premier temps, vérifions à partir de quel pourcentage Proxmox commence à utiliser la swap :
|
|
Cela signifie qu’à partir de 60 % d’utilisation de la RAM, Proxmox commence à utiliser la swap.
Pour optimiser les performances (car nous continuerons à écrire en RAM plutôt que sur le disque), nous pouvons réduire cette valeur à 0. Cela signifie que la swap ne sera utilisée qu’une fois la RAM totalement saturée.
|
|
Ensuite, désactivez et réactivez la swap pour appliquer les changements :
|
|
SLOG ou LOGS
Il faut dedier un disk dur pour le cache SLOG. Vous pouvez par exemple ajouter GPARTED
sur votre serveur et suivre les partions suiavnts :
Cree 2 partions :
- Premiere partition :
- Taille : XXG par To
- Type : Primary Partition
- Partion Name : log
- File Systeme : unformated
- Label : log
- Deuxieme partion :
- Taille : Le reste du disque
- Type : Primary Partition
- Partion Name : cache
- File Systeme : unformated
- Label : cache
On va demander au zpool d’utiliser ces partion pour le cache.
|
|
Vous pouvez verifiez avec :
|
|
ARC (Cache RAM)
Voir actuellement combiende Ram et utyiliser par ARC (en Go)
|
|
Proxmox limite par défaut l’ARC à 16 Go. Sur 2 To de RAM, comme ici, je vais augmenté nettement zfs_arc_max
(via /etc/modprobe.d/zfs.conf
) pour allouer plusieurs dizaines de Go au cache ZFS
ZFS (Datastore)
Pour le Datastore (là où seront stockées les données des VM et des conteneurs LXC), nous allons utiliser, comme mentionné plus haut, un RAID10 ZFS (proposé par défaut par Proxmox). Selon moi, c’est le meilleur choix si l’on recherche un bon compromis entre tolérance aux pannes et vitesse d’écriture.
Nous allons également modifier les paramètres par défaut de ZFS pour appliquer les réglages suivants :
- Création du pool ZFS : Utilisez l’option
ashift=12
. - Attributs du pool : Activez
xattr=sa
. - Compression : Activez la compression LZ4 avec
compression=lz4
. - Désactivation d’atime : Désactivez la mise à jour des timestamps d’accès avec
atime=off
.
Sur l’hote
N’oubliez pas de passer le CPu en mode performance avec la commande suivante :
|
|
Configuration des machines virtuelles
Pour les machines virtuelles, assurez-vous qu’à leur création, les paramètres suivants soient correctement configurés :
- CPU :
host
- Disque :
virtio
- Cache :
writeback
test d’ecriture et de l’ecture
Vous pouvez voir en temps reel l’utilisation des cache et logs avec la comamnde :
|
|