GLG-TECH · Tutoriel · Haute disponibilité Proxmox · Parties 1 à 4

Cluster Proxmox en haute disponibilité

Deux nœuds, un QDevice, la réplication ZFS, et un Dell T320 converti en mode IT

Journal complet d'une mise en place réelle, du 5 au 10 novembre 2026 : préparation et conversion du second serveur, réinstallation sur ZFS, tri des disques, sauvegardes, création du cluster, arbitre externe, migration à chaud des VM et réplication. Chaque étape donne les commandes exactes, le résultat attendu et, quand elle existe, la photo prise pendant l'intervention.

Étapes
105
Nœuds
2 + QDevice
VM
6, sur proxmox02
État
Réplication en place

Partie 1 sur 4 · terminée

Préparer le second nœud

Clé USB, première installation, réseau et conversion du contrôleur PERC en mode IT.

Phase A

Préparer la clé USB avec diskpart

La clé n'affichait que 282 Ko dans la fenêtre de formatage Windows : restes d'une ancienne clé bootable. On la nettoie entièrement avec diskpart, en identifiant le disque avant toute écriture.

1

Repérer le symptôme

Capacité affichée de 282 Ko : la table de partitions vient d'une ancienne image ISO. Un formatage Windows classique ne récupérerait pas les 8 Go.

Fenêtre de formatage Windows : 282 Ko seulement
Fenêtre de formatage Windows : 282 Ko seulement
2

Lister les disques (lecture seule)

Invite de commandes en administrateur :

diskpart
list disk

La clé se reconnaît à sa taille : Disque 4, 7633 Mo.

list disk : la clé est le Disque 4
list disk : la clé est le Disque 4
3

Confirmer le bon disque

select disk 4
detail disk

Vérifier « Type : USB » et l'absence de C:, D:, E:.

detail disk : Generic Flash Disk USB Device
detail disk : Generic Flash Disk USB Device
4

Piège évité : le disque 0

Disque 0 sélectionné par erreur : on s'arrête
Disque 0 sélectionné par erreur : on s'arrête
Nouvel inventaire avec la deuxième clé
Nouvel inventaire avec la deuxième clé
5

Vérifier puis effacer la clé

Disque 4 = clé d'installation Windows (Rufus)
Disque 4 = clé d'installation Windows (Rufus)
select disk 4
detail disk
clean
list disk
clean réussi
clean réussi
6

Recréer une partition

convert mbr
create partition primary
format fs=exfat quick label=CLE_USB
assign
exit

Ce formatage est de toute façon écrasé ensuite par la gravure de l'ISO : aucun impact.

Partition créée et formatée
Partition créée et formatée
Phase B

Créer la clé d'installation Proxmox VE 9.2

ISO officielle Proxmox VE 9.2-1, intégrité vérifiée par SHA-256, gravure en mode DD (obligatoire pour l'image hybride Proxmox).

7

Télécharger et vérifier l'ISO

Source : proxmox.com/downloads.

Get-FileHash "$env:USERPROFILE\Downloads\proxmox-ve_9.2-1.iso" -Algorithm SHA256
8

Graver avec Rufus en mode DD

Périphérique : CLE_USB. Type de démarrage : l'ISO. Rufus 4.15 détecte une image ISOHybrid et impose le mode DD.

Rufus impose l'écriture en mode DD
Rufus impose l'écriture en mode DD
Phase C

Installer Proxmox sur le Dell PowerEdge T320

Démarrage sur la clé via le Boot Manager (F11), puis installation par défaut ext4 sur LVM.

9

Démarrer sur la clé

F11 au démarrage → BIOS Boot Menu → la clé USB.

Boot Manager du T320
Boot Manager du T320
10

Lancer l'installeur

Installeur Proxmox VE 9.2
Installeur Proxmox VE 9.2
11

Patienter sur « create LVs »

La barre reste bloquée à 3 % pendant que l'installeur met le disque à zéro. Comportement connu sur les PowerEdge et les réinstallations : on laisse tourner tant que les voyants disques clignotent.

Étape « create LVs », installation en cours
Étape « create LVs », installation en cours
Phase D

Corriger le réseau après l'installation

L'installeur a rattaché le pont vmbr0 à une carte « nic2 » inexistante (l'interface USB de l'iDRAC). L'interface web était donc injoignable.

12

Diagnostiquer

ip a
cat /etc/network/interfaces
nic0 et nic1 DOWN, vmbr0 sans port
nic0 et nic1 DOWN, vmbr0 sans port
bridge-ports nic2 : carte inexistante
bridge-ports nic2 : carte inexistante
13

Trouver le port câblé

ip link set nic0 up
ip link set nic1 up
sleep 5
ip -br link
nic1 UP / LOWER_UP : le câble est sur nic1
nic1 UP / LOWER_UP : le câble est sur nic1
14

Sauvegarder et corriger

cp /etc/network/interfaces /root/interfaces.bak
sed -i 's/bridge-ports nic2/bridge-ports nic1/' /etc/network/interfaces
sed -i '/^iface nic2/d' /etc/network/interfaces
grep -n nic /etc/network/interfaces
bridge-ports nic1 confirmé
bridge-ports nic1 confirmé
15

Appliquer et tester

ifreload -a
ping -c 3 192.168.1.254
Ping de la passerelle OK
Ping de la passerelle OK
Tableau de bord Proxmox VE 9.2.2
Tableau de bord Proxmox VE 9.2.2
Phase E

Inventaire matériel et décision

Objectif retenu : un cluster de haute disponibilité avec proxmox01, réplication ZFS et un QDevice. ZFS doit voir les disques directement, ce que le RAID matériel empêche.

16

Relever le matériel

lscpu | grep -E 'Model name|^CPU\(s\)|Socket|Core|Thread'
free -h
lsblk -d -o NAME,SIZE,MODEL,ROTA,TRAN
lspci | grep -iE 'raid|sas|sata'
lspci -vnn -s 08:00.0 | head -n 5
ComposantValeur relevéeConséquence
Processeur1 × Xeon E5-2420 v2, 6 cœurs / 12 threads, 2,2 GHzSuffisant pour un labo ou une petite production
Mémoire24 Go DDR3-1600 (3 × 8 Go, 3 emplacements libres)Facteur limitant pour la haute disponibilité
ContrôleurPERC H710P Adapter (LSI SAS2208), révision D1RAID matériel, incompatible avec ZFS en l'état
Disques13 × SAS 1,2 To 10K 2,5″ (châssis 16 baies)≈ 15,6 To bruts
Réseau2 ports Broadcom (nic0, nic1) + interface USB iDRACCâble sur nic1
Service Tag[masqué]Référence support Dell
17

Décision

Passer la PERC H710P en mode IT (HBA) avec la procédure fohdeesha, qui prend en charge ce modèle. Le serveur étant vide, c'est le moment où l'opération coûte le moins. Proxmox sera ensuite réinstallé sur ZFS.

Phase F

Préparer le flash : outils et matériel

Prérequis imposés par le guide fohdeesha : outils vérifiés, batterie RAID débranchée, disques retirés, quatre réglages du BIOS.

18

Télécharger et vérifier les outils

Source : fohdeesha.com/docs/perc.html, ZIP v2.6 (17/11/2025).

Get-FileHash "$env:USERPROFILE\Downloads\perc-crossflash-v2.6.zip" -Algorithm MD5
Expand-Archive "$env:USERPROFILE\Downloads\perc-crossflash-v2.6.zip" -DestinationPath "$env:USERPROFILE\Downloads\perc-crossflash"
19

Éteindre et ouvrir le serveur

shutdown -h now

Débrancher l'alimentation, déverrouiller la serrure du capot (sens inverse des aiguilles d'une montre), lever le loquet. Se décharger sur le châssis métallique.

Vue d'ensemble : carte mère, RAM, emplacements PCIe
Vue d'ensemble : carte mère, RAM, emplacements PCIe
20

Localiser la carte PERC et sa batterie

La PERC H710P Adapter est la carte dressée près du processeur, avec deux radiateurs à ailettes. La batterie est le bloc noir « Li-ion 3.7V 1.6Wh », réf. 70K80, sous les radiateurs.

Carte PERC dans son emplacement PCIe
Carte PERC dans son emplacement PCIe
Batterie 70K80 et câbles CTRL SAS A / B
Batterie 70K80 et câbles CTRL SAS A / B
21

Débrancher la batterie

Tirer le petit connecteur repéré « BATTERY » sur le circuit, sans tirer sur les fils.

Connecteur BATTERY en place
Connecteur BATTERY en place
Connecteur débranché : la prise est vide
Connecteur débranché : la prise est vide
22

Retirer tous les disques

Numéroter chaque tiroir avant de le sortir.

Disques numérotés
Disques numérotés
13 disques SAS 1,2 To retirés
13 disques SAS 1,2 To retirés
Baies vides
Baies vides
23

Messages attendus au démarrage

La PERC signale la batterie absente et les disques manquants : c'est prévu. Appuyer sur Espace, sans toucher à C, Ctrl+R ou D.

Messages PERC normaux après la préparation
Messages PERC normaux après la préparation
24

Régler le BIOS (F2 → System BIOS)

MenuRéglageValeur pour le flash
Processor SettingsVirtualization TechnologyDisabled
Integrated DevicesSR-IOV Global EnableDisabled
Integrated DevicesI/OAT DMA EngineDisabled
Boot SettingsBoot ModeBIOS (déjà le cas)
System Setup
System Setup
Virtualization Technology : Disabled
Virtualization Technology : Disabled
SR-IOV et I/OAT : Disabled
SR-IOV et I/OAT : Disabled
Boot Mode : BIOS
Boot Mode : BIOS
Phase G

Phase FreeDOS : identifier et nettoyer la carte

On démarre sur l'ISO FreeDOS du guide pour lire le modèle exact de la carte, puis effacer le firmware Dell.

25

Démarrer sur la clé

F11 → BIOS Boot Menu → Hard drive C: → Back USB.

Boot Manager
Boot Manager
BIOS Boot Menu
BIOS Boot Menu
La clé est rangée sous « Hard drive C: »
La clé est rangée sous « Hard drive C: »
26

Piège : Rufus a gravé son propre FreeDOS

La commande info est introuvable : Rufus avait utilisé son option intégrée « FreeDOS » au lieu de l'ISO. Il faut sélectionner l'ISO avec le bouton SÉLECTION. Le nom de volume doit devenir LSI_FREEDOS.

« Bad command or filename – info »
« Bad command or filename – info »
dir : FreeDOS de base seulement
dir : FreeDOS de base seulement
Rufus avec deesh-FreeDOS-v2.5.iso
Rufus avec deesh-FreeDOS-v2.5.iso
Contenu encore ancien tant que le serveur n'a pas redémarré
Contenu encore ancien tant que le serveur n'a pas redémarré
27

Identifier la carte

info
info : H710P Adapter, révision D1
info : H710P Adapter, révision D1
28

Effacer le firmware Dell

BGPD1CRS

Confirmer avec Entrée à chaque invite. Ne jamais couper le courant pendant l'opération. Clavier AZERTY sous FreeDOS : le chiffre 1 s'obtient avec Maj + 1.

Confirmation du modèle
Confirmation du modèle
« Press any key to clean adapter flash »
« Press any key to clean adapter flash »
Success à chaque phase, SBR IT écrit
Success à chaque phase, SBR IT écrit
Phase H

Phase Linux : flasher le firmware IT

On démarre sur l'ISO Linux du guide (Debian 11 live), qui contient les scripts de flash.

29

Graver l'ISO Linux

Même piège que précédemment : le type de démarrage affichait « MS-DOS ». Il faut sélectionner deesh-Linux-v2.3.iso. Le nom de volume devient « Debian bullseye 20220617 ».

Mauvais choix : MS-DOS
Mauvais choix : MS-DOS
Bon choix : deesh-Linux-v2.3.iso
Bon choix : deesh-Linux-v2.3.iso
30

Passer root

La session user s'ouvre automatiquement (mot de passe : live). Le clavier est en QWERTY.

sudo su -
Connexion automatique
Connexion automatique
root@debian:~#
root@debian:~#
31

Flasher le firmware IT

D1-H710
32

Redémarrer : plantage attendu

reboot

Le guide l'annonce : le premier démarrage après le flash plante. Le BIOS l'a signalé au démarrage suivant. Appuyer sur F1 pour continuer, puis redémarrer sur la clé.

« System fatal error during previous boot »
« System fatal error during previous boot »
33

Réinscrire l'adresse SAS d'origine

sudo su -
setsas 5c81f660f7f69d00
Retour sur le live Linux
Retour sur le live Linux
« SAS Address Successfully Programmed! »
« SAS Address Successfully Programmed! »
34

Vérifier la carte

info
La carte est une LSI 9207-8i en mode IT
La carte est une LSI 9207-8i en mode IT
35

Installer le module de démarrage BIOS

Nécessaire pour démarrer Proxmox sur des disques branchés à la carte (mode BIOS).

flashboot /root/Bootloaders/mptsas2.rom

Le chemin respecte la casse : Bootloaders avec un B majuscule et un s.

Caractère voulu (QWERTY)Touche sur clavier AZERTY
aQ
m, (virgule)
wZ
/ . - et chiffresPavé numérique
Erreur de chemin (bootloader en minuscules)
Erreur de chemin (bootloader en minuscules)
« Flash BIOS Image Successful »
« Flash BIOS Image Successful »
Phase I

Remettre le serveur en service

On éteint, on remet les disques et on rétablit les réglages du BIOS utiles à Proxmox.

36

Éteindre et remettre les disques

poweroff

Retirer la clé, remettre les 13 disques dans l'ordre de la numérotation et fermer chaque poignée.

13 disques en place (8 + 5), 3 caches vides
13 disques en place (8 + 5), 3 caches vides
37

Rétablir le BIOS

RéglageValeur finale
Virtualization TechnologyEnabled (indispensable aux VM)
I/OAT DMA EngineEnabled
SR-IOV Global EnableEnabled (sans effet tant qu'aucune VM ne l'utilise)
Boot ModeBIOS
Virtualization Technology : Enabled
Virtualization Technology : Enabled
I/OAT et SR-IOV : Enabled
I/OAT et SR-IOV : Enabled

Partie 2 sur 4 · terminée

Réinstaller sur ZFS et aligner les versions

Système en miroir ZFS, tri des disques, pool vmdata, sauvegarde et mise à jour des deux nœuds.

Phase J

Réinstaller Proxmox sur ZFS en miroir

Les disques sont maintenant vus un par un. On réinstalle proxmox02 avec le système sur un miroir ZFS de deux disques, et on garde les autres disques pour le stockage des VM.

38

Graver la clé Proxmox

Même ISO vérifiée qu'en phase B (proxmox-ve_9.2-1.iso), gravée sur la clé EMTEC de 16 Go. Schéma MBR, système de destination BIOS. Rufus impose le mode DD. Graver Proxmox sur cette clé efface les outils de flash : le ZIP reste sur le PC pour un éventuel retour au firmware Dell.

Rufus : proxmox-ve_9.2-1.iso sur la clé de 16 Go
Rufus : proxmox-ve_9.2-1.iso sur la clé de 16 Go
39

Ne pas choisir un disque seul

L'écran « Target Harddisk » propose un seul disque, sans redondance. On n'y choisit rien et on clique sur Options.

Disques de 279 Go AL13SEB300, vus individuellement
Disques de 279 Go AL13SEB300, vus individuellement
40

Choisir zfs (RAID1) sur les deux disques de 300 Go

Filesystem : zfs (RAID1). Cliquer sur Deselect All, puis Harddisk 0 = /dev/sda et Harddisk 1 = /dev/sdb (Toshiba AL13SEB300). Toutes les autres lignes restent sur « -- do not use -- ». L'onglet Advanced Options reste par défaut.

Par défaut, l'installeur sélectionne tous les disques
Par défaut, l'installeur sélectionne tous les disques
Seuls sda et sdb sont gardés pour le système
Seuls sda et sdb sont gardés pour le système
41

Pays, fuseau horaire et clavier

France, Europe/Paris, clavier fr.

42

Nom d'hôte : reprendre le domaine de proxmox01

L'installeur refuse pve.example.invalid. Les deux nœuds d'un cluster doivent partager le même domaine, on le lit donc sur proxmox01 :

hostname -f

Résultat : proxmox01.home.local. Le T320 devient proxmox02.home.local. Interface nic1, IP 192.168.1.20/24, passerelle et DNS 192.168.1.254. On laisse cochée « Pin network interface names », qui évite le problème de nic2 de la première installation.

Configuration réseau et message sur le FQDN
Configuration réseau et message sur le FQDN
hostname -f sur proxmox01
hostname -f sur proxmox01
43

Vérifier le récapitulatif et installer

Décocher « Automatically reboot after successful installation », pour pouvoir retirer la clé avant le redémarrage. Cliquer sur Install, retirer la clé à la fin, puis Reboot.

Récapitulatif : zfs (RAID1), sda + sdb, proxmox02
Récapitulatif : zfs (RAID1), sda + sdb, proxmox02
44

Premier démarrage : écran LSI

La carte en mode IT liste les disques et charge son module de démarrage. La fenêtre « Avis de Résolution » vient de l'écran ViewSonic, pas du serveur.

« MPT2 boot ROM successfully installed », 13 disques présentés
« MPT2 boot ROM successfully installed », 13 disques présentés
45

Vérifier le miroir système

Interface web sur https://192.168.1.20:8006, puis dans le Shell :

zpool status rpool
proxmox02 en Proxmox VE 9.2.2
proxmox02 en Proxmox VE 9.2.2
zpool status rpool : miroir sain
zpool status rpool : miroir sain
Phase K

Configurer les dépôts et mettre à jour proxmox02

Sans abonnement, Proxmox interroge par défaut le dépôt Enterprise et échoue. On le remplace par le dépôt No-Subscription, puis on fait une mise à jour complète.

46

Désactiver les dépôts Enterprise

Nœud → Updates → Repositories. Déplier pve-enterprise.sources et ceph.sources avec le ⊞, sélectionner chaque ligne et cliquer sur Disable. Le message « No Proxmox VE repository is enabled » qui apparaît ensuite est normal.

Les dépôts Enterprise sont repliés
Les dépôts Enterprise sont repliés
Ligne pve-enterprise sélectionnée
Ligne pve-enterprise sélectionnée
Les deux dépôts Enterprise sont désactivés
Les deux dépôts Enterprise sont désactivés
47

Ajouter le dépôt No-Subscription

Add → OK sur le message d'abonnement → Repository : No-Subscription → Add. Proxmox VE 9 écrit le dépôt au format deb822, dans /etc/apt/sources.list.d/proxmox.sources.

« You get updates for Proxmox VE »
« You get updates for Proxmox VE »
48

Rafraîchir la liste des paquets

apt update
apt update sans erreur
apt update sans erreur
49

Utiliser apt full-upgrade, pas apt upgrade

apt full-upgrade
Nouveau noyau 7.0.14-28-pve installé
Nouveau noyau 7.0.14-28-pve installé
50

Redémarrer et vérifier la version

reboot
pveversion
proxmox02 en 9.2.26
proxmox02 en 9.2.26
Phase L

Diagnostiquer les disques et créer le pool vmdata

Sur les 11 disques de 1,2 To, certains se révèlent inutilisables et d'autres portent une protection DIF héritée de l'ancien RAID. On les trie avant de créer le pool.

51

Inventaire des disques

lsblk -d -o NAME,SIZE,MODEL,SERIAL,ROTA

Quatre disques affichent une taille de 0B : sdc, sde, sdg et sdl.

52

Lire le diagnostic du noyau

dmesg | grep -iE 'sd[cegl]\]|protection|sector size'
DisquesModèleMessage
sdcToshiba AL15SEB120NYHardware Error, ASC 0x4C : échec de l'auto-configuration interne
sde, sdg, sdlSeagate ST1200MM0007Not Ready, « cause not reportable »
sdd, sdi, sdj, sdkToshiba / Seagate« Enabling DIF Type 2 protection » : utilisables, mais protégés
53

Lire l'état de santé

apt install -y sg3-utils smartmontools
for d in sdc sde sdg sdl; do echo "=== $d ==="; smartctl -H -i /dev/$d | grep -iE 'product|serial|health|status|ready'; done

sdc : « medium or hardware error (serious) ». sde, sdg, sdl : « device is NOT READY ».

54

Tenter de récupérer un Seagate

sg_start --start /dev/sde
sg_requests -vv /dev/sde
sg_readcap -l /dev/sde
sg_format --format --early /dev/sde

Le disque refuse le démarrage, ne donne pas sa capacité et bloque le formatage dès la lecture de ses paramètres (« MODE SENSE: Device not ready »). Deux Seagate du même modèle fonctionnent dans d'autres baies : le problème vient donc des disques, pas des baies.

55

Écarter les 4 disques hors service

DisqueN° de sérieVerdict
sdc60G0A0LNFQVFEn panne (erreur matérielle)
sdeS3L0BJM8Hors service (not ready)
sdgS3L0AV2THors service (not ready)
sdlS3L0BJHAHors service (not ready)

Il reste 7 disques sains de 1,2 To.

56

Retirer la protection DIF de 4 disques

Des utilisateurs Proxmox ont signalé des « protection errors » avec des disques DIF Type 2. On les reformate en secteurs standard, sans protection :

for d in sdd sdi sdj sdk; do sg_format --format --fmtpinfo=0 --early /dev/$d; done
57

Suivre le formatage

for d in sdd sdi sdj sdk; do echo -n "$d : "; sg_requests --progress /dev/$d; done

Environ 1 h 30 pour les Seagate, un peu moins pour le Toshiba. Quand un disque a fini, il n'affiche plus de pourcentage. Ne pas redémarrer pendant le formatage.

58

Vérifier, redémarrer, revérifier

for d in sdd sdi sdj sdk; do echo "== $d"; sg_readcap -l /dev/$d | grep -iE 'prot_en|Logical block length'; done
reboot
dmesg | grep -i 'DIF'
59

Relever les identifiants permanents

for d in sdd sdf sdh sdi sdj sdk sdm; do echo "$d -> $(ls -l /dev/disk/by-id/ | grep -E "scsi-3.* -> ../../$d\$" | awk '{print $9}')"; done

Les lettres sdX peuvent changer d'un démarrage à l'autre. Le pool est créé à partir des identifiants /dev/disk/by-id, qui ne changent jamais.

60

Effacer les métadonnées de l'ancien RAID Dell

Une première tentative de création échoue : trois disques non reformatés gardent une signature ddf_raid_member. Plutôt que de forcer avec -f, on efface ces signatures. Sinon mdadm pourrait tenter de réassembler l'ancien RAID au démarrage.

wipefs -a /dev/disk/by-id/scsi-3500003989830a355 /dev/disk/by-id/scsi-35000c50075d82f9f /dev/disk/by-id/scsi-35000c50075d6177f
61

Créer le pool : 3 miroirs et 1 disque de secours

Chaque miroir associe des disques de séries ou de fabricants différents, pour éviter qu'une même série tombe en panne des deux côtés d'un miroir.

zpool create -o ashift=12 vmdata \
  mirror /dev/disk/by-id/scsi-35000039ab8631565 /dev/disk/by-id/scsi-35000c500d1b47b53 \
  mirror /dev/disk/by-id/scsi-3500003989830a355 /dev/disk/by-id/scsi-35000c500d1b43447 \
  mirror /dev/disk/by-id/scsi-35000c50075d82f9f /dev/disk/by-id/scsi-35000c500d1b40ddf \
  spare  /dev/disk/by-id/scsi-35000c50075d6177f
zpool status vmdata
62

Activer la compression et déclarer le stockage

zfs set compression=lz4 vmdata
pvesm add zfspool vmdata --pool vmdata --content images,rootdir --sparse 1
pvesm status

--sparse 1 active le thin provisioning : l'espace des disques virtuels n'est réservé qu'au fur et à mesure de leur remplissage.

Phase M

Sauvegarder proxmox01 puis l'aligner sur proxmox02

proxmox01 doit passer à la même version que proxmox02. Avant de le mettre à jour, on sauvegarde ses 6 VM sur le nouveau pool, via un partage NFS limité à proxmox01.

63

Créer le dossier de sauvegarde (proxmox02)

zfs create -o mountpoint=/vmdata/backups vmdata/backups
zfs list -o name,mountpoint,used,avail vmdata/backups
64

Installer le serveur NFS (proxmox02)

apt install -y nfs-kernel-server
65

Partager le dossier avec proxmox01 uniquement

echo '/vmdata/backups 192.168.1.75(rw,sync,no_subtree_check,no_root_squash)' >> /etc/exports
exportfs -ra
exportfs -v

no_root_squash est nécessaire, car vzdump s'exécute en root. En contrepartie, l'accès est limité à la seule adresse de proxmox01.

66

Déclarer le stockage de sauvegarde (proxmox01)

pvesm scan nfs 192.168.1.20
pvesm add nfs backup-proxmox02 --server 192.168.1.20 --export /vmdata/backups --content backup --prune-backups keep-last=3
pvesm status

keep-last=3 conserve les 3 dernières sauvegardes de chaque VM et supprime les plus anciennes.

67

Inventaire des VM

qm list
pct list

6 VM, toutes en marche, aucun conteneur.

68

Sauvegarder les 6 VM en arrière-plan

Lancée comme un service système, la sauvegarde continue même si l'on ferme le navigateur. Le mode snapshot laisse les VM allumées.

systemd-run --unit=sauvegarde-vms vzdump --all --mode snapshot --compress zstd --storage backup-proxmox02
journalctl -u sauvegarde-vms -f
69

Vérifier les archives

pvesm list backup-proxmox02
VMDuréeArchive
100 Master1 min 234,04 Go
101 GLPI6 min 178,71 Go
102 SRV-UBUNTU-PROD5 min 065,96 Go
103 srv-pdf-011 min 555,13 Go
104 tacticalrmm2 min 593,27 Go
105 srv-ingest-011 min 262,47 Go
70

Mettre à jour proxmox01

apt update
apt full-upgrade

L'installation ne coupe pas les VM. Seul le redémarrage les arrête.

71

Activer le démarrage automatique des VM

Seule la VM 105 avait onboot: 1. Sans ce réglage, les 5 autres seraient restées arrêtées après le redémarrage.

grep -H onboot /etc/pve/qemu-server/*.conf
for v in 100 101 102 103 104; do qm set $v --onboot 1; done
72

Redémarrer proxmox01 et vérifier

reboot
pveversion
qm list
NœudVersionNoyau
proxmox019.2.267.0.14-28-pve
proxmox029.2.267.0.14-28-pve

Partie 3 sur 4 · terminée

Créer le cluster et ajouter le QDevice

Cluster glg-cluster à deux nœuds et troisième vote dans une VM Debian.

Phase N

Créer le cluster glg-cluster

Prérequis vérifiés, cluster créé sur proxmox01 qui porte les VM, puis jonction de proxmox02.

73

Faire connaître chaque nœud à l'autre

# sur proxmox01
sed -i '/proxmox01.home.local/a 192.168.1.20 proxmox02.home.local proxmox02' /etc/hosts
# sur proxmox02
sed -i '/proxmox02.home.local/a 192.168.1.75 proxmox01.home.local proxmox01' /etc/hosts
# vérification croisée
ping -c 2 proxmox02   # depuis proxmox01
ping -c 2 proxmox01   # depuis proxmox02
74

Vérifier la synchronisation de l'heure

chronyc tracking | grep -E 'Reference ID|System time|Leap status'
NœudServeur NTPÉcartÉtat
proxmox01ntp.orlinum.fr0,03 msNormal
proxmox02dns.freewebworld.fr0,19 msNormal
75

Créer le cluster (proxmox01)

pvecm create glg-cluster
pvecm status

Transport knet, Secure auth on, Nodes 1, Quorate Yes. Les VM n'ont pas été touchées.

76

Joindre proxmox02

# sur proxmox02
pvecm add 192.168.1.75
# vérification
pvecm status

Mot de passe root de proxmox01, puis yes pour l'empreinte. Résultat : Nodes 2, Total votes 2, Quorate Yes.

77

Corriger la configuration de stockage

cat /etc/pve/storage.cfg
pvesm set local-lvm --nodes proxmox01
pvesm set backup-proxmox02 --nodes proxmox01
pvesm add zfspool local-zfs --pool rpool/data --content images,rootdir --sparse 1 --nodes proxmox02
pvesm add zfspool vmdata --pool vmdata --content images,rootdir --sparse 1 --nodes proxmox02
pvesm status

Sur proxmox02, les stockages de proxmox01 apparaissent en « disabled ». Ce n'est pas une erreur : ils ne sont pas destinés à ce nœud.

Phase O

Ajouter le troisième vote : QDevice

Un arbitre extérieur aux deux nœuds donne la majorité au survivant en cas de panne. Première tentative dans WSL2, abandonnée, puis mise en place dans une VM Debian sous VMware Workstation.

78

Tentative : WSL2 en mode mirrored

wsl --version

WSL 3.0.1 et Windows 11 25H2 sont compatibles avec le mode mirrored, qui partage la carte réseau du PC.

Set-Content -Path "$env:USERPROFILE\.wslconfig" -Encoding ascii -Value "[wsl2]`r`nnetworkingMode=mirrored"
wsl --shutdown

Dans Ubuntu (WSL) : les cartes eth0 à eth4 sont recopiées, mais toutes restent DOWN, sans adresse ni route. La cause la plus fréquente (IPv6 désactivé dans Windows) est écartée.

Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" -Name DisabledComponents -ErrorAction SilentlyContinue
Get-NetAdapterBinding -ComponentID ms_tcpip6 | Format-Table Name, Enabled
79

Abandonner WSL et revenir à l'état initial

Chaque essai coupe le labo MagicMirror et Docker. On change de méthode et on retire le réglage :

Remove-Item "$env:USERPROFILE\.wslconfig"
wsl --shutdown
80

VM Debian sous VMware Workstation

VMware Workstation Pro 25H2 est installé sur le PC. Une petite VM Debian (512 Mo de RAM, 8 Go de disque) en réseau Pont (Bridged) obtient sa propre adresse sur la Freebox.

VMware Workstation Pro 25H2
VMware Workstation Pro 25H2
81

Télécharger et vérifier Debian 13.7.0

cd "$env:USERPROFILE\Downloads"
Invoke-WebRequest -Uri "https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.7.0-amd64-netinst.iso" -OutFile "debian-13.7.0-amd64-netinst.iso"
Invoke-WebRequest -Uri "https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS" -OutFile "SHA512SUMS-debian.txt"
$h = (Get-FileHash ".\debian-13.7.0-amd64-netinst.iso" -Algorithm SHA512).Hash.ToLower()
Select-String -Path ".\SHA512SUMS-debian.txt" -Pattern $h
82

Installer Debian

L'installeur tourne en 800 × 600. Pour l'agrandir : menu Affichage → Étirer l'invité.

Installeur Debian 13, affiché petit avant étirement
Installeur Debian 13, affiché petit avant étirement
83

Vérifier que la VM est sur le réseau local

su -
ip -4 addr show
ip route
84

Réserver l'adresse dans la Freebox

Freebox OS → Paramètres de la Freebox → DHCP → Baux statiques → Ajouter : MAC 00:0C:29:xx:xx:xx, IP 192.168.1.25, commentaire qdevice-proxmox. Le cluster enregistre l'adresse du QDevice : elle ne doit jamais changer.

85

Installer l'arbitre et SSH dans la VM

apt update
apt install -y corosync-qnetd openssh-server
systemctl status corosync-qnetd --no-pager | head -n 5
86

Autoriser temporairement root en SSH

Proxmox se connecte une fois en root par mot de passe pour échanger les certificats. Le réglage est placé dans un fichier séparé, facile à retirer :

echo 'PermitRootLogin yes' > /etc/ssh/sshd_config.d/99-qdevice-temp.conf
systemctl reload ssh
sshd -T | grep -i permitrootlogin
87

Installer le client sur les deux nœuds

apt install -y corosync-qdevice   # sur proxmox01 ET proxmox02
88

Connecter le QDevice au cluster (proxmox01)

pvecm qdevice setup 192.168.1.25
pvecm status
MembreVotesÉtat
proxmox01 (192.168.1.75)1A,V,NMW
proxmox02 (192.168.1.20)1A,V,NMW
QDevice (192.168.1.25)1actif
89

Refermer root par mot de passe

rm /etc/ssh/sshd_config.d/99-qdevice-temp.conf
systemctl reload ssh
sshd -T | grep -i permitrootlogin

Partie 4 sur 4 · en cours

Préparer, migrer et répliquer les VM

Agent QEMU, snapshots, RAM, migration à chaud et réplication ZFS.

Phase P

Préparer les VM pour la migration et la haute disponibilité

Trois préparatifs : l'agent QEMU dans chaque VM, la suppression des snapshots et des ISO qui bloquent la migration, et l'ajustement de la RAM.

90

Installer l'agent QEMU (VM 101 et 102, en SSH)

sudo apt install -y qemu-guest-agent
sudo systemctl start qemu-guest-agent
systemctl is-active qemu-guest-agent

Le message « unit files have no installation config » qui peut apparaître avec enable est normal : le service démarre automatiquement dès que la VM détecte le canal de Proxmox.

qm agent 101 ping && echo "Agent OK"   # depuis proxmox01
91

VM 103 : passer par la console Proxmox

Son adresse IPv4 n'était pas connue de proxmox01, et SSH n'accepte que des clés. La console intégrée de Proxmox (VM → Console) suffit. Le compte s'écrit gerard, avec un seul « r ».

Console de la VM 103 : 192.168.1.65, réseaux Docker
Console de la VM 103 : 192.168.1.65, réseaux Docker
qm agent 103 ping && echo "Agent OK"
92

Localiser les disques des VM

grep -HE '^(scsi|virtio|sata|ide|efidisk|tpmstate)[0-9]+:' /etc/pve/qemu-server/10*.conf

Les lignes répétées révèlent des snapshots : chaque snapshot recopie la configuration de la VM dans le fichier.

93

Lister puis supprimer les snapshots

for v in 100 101 102 103 104 105; do echo "== VM $v"; qm listsnapshot $v; done
qm delsnapshot 101 last_snapshot
qm delsnapshot 101 ubuntu_server_101
qm delsnapshot 101 nextcloud02
qm delsnapshot 101 nextcloud_back
qm delsnapshot 102 last_snapshot102
qm delsnapshot 102 ubuntu_server_01
qm delsnapshot 103 meshcentral
qm delsnapshot 104 snaphot104
qm delsnapshot 104 pre-tactical-install
94

Éjecter les ISO

Les ISO insérées n'existent que sur proxmox01 et feraient échouer la migration.

for v in 100 101 102 103 104; do qm set $v --ide2 none,media=cdrom; done
grep -H '^ide2' /etc/pve/qemu-server/10*.conf
95

Mesurer la RAM réellement utilisée

for v in 100 101 102 103 104 105; do echo -n "VM $v : "; qm status $v --verbose | awk '/^maxmem:/{m=$2} /^mem:/{u=$2} END{printf "utilise %.1f Go / alloue %.1f Go\n", u/1073741824, m/1073741824}'; done
VMUtilisée (Go)Allouée (Go)Nouvelle allocation (Go)
1001,022
1013,544
1022,244
1032,664
1042,084
1051,122
Total12,42620
96

Réduire la RAM des VM 103 et 104

Une réduction de RAM n'est prise en compte qu'après un arrêt complet de la VM. Les VM sont coupées une à deux minutes.

qm set 103 --memory 4096
qm set 104 --memory 4096
qm shutdown 103 && qm start 103
qm shutdown 104 && qm start 104
qm list
Phase Q

Migrer les VM à chaud vers proxmox02

proxmox02 devient le nœud principal, avec plus de RAM et des disques en miroir. La migration à chaud copie les disques locaux pendant que les VM tournent.

97

Migration test : VM 105

qm migrate 105 proxmox02 --online --with-local-disks --targetstorage vmdata
98

Migrer les 5 autres VM en arrière-plan

systemd-run --unit=migration-vms bash -c 'for v in 100 103 104 102 101; do echo "=== Migration VM $v"; qm migrate $v proxmox02 --online --with-local-disks --targetstorage vmdata || exit 1; done; echo "=== TOUTES LES MIGRATIONS TERMINEES"'
journalctl -u migration-vms -f

La boucle s'arrête à la première erreur, pour ne pas toucher aux VM suivantes.

99

Incident sur la VM 101 : diagnostiquer

journalctl -u migration-vms | grep -iE 'error|warn|fail' | grep -v 'Logical volume'
qm status 101 --verbose | grep -E '^(status|qmpstatus|lock):'   # sur proxmox02

Erreur : « resume failed - VM 101 not running ». Les disques étaient complets sur proxmox02 et l'ancienne copie déjà supprimée.

journalctl --since "2026-11-10 15:40" --until "2026-11-10 15:46" | grep -iE 'oom|killed|kvm|101|qmeventd'

Cause : kvm: Restoring registers after init: Failed to set special registers: Invalid argument.

100

Comprendre la cause : le type de processeur

for v in 100 101 102 103 104 105; do echo -n "VM $v : "; qm config $v | grep '^cpu:' || echo "cpu: (défaut)"; done

Seule la VM 101 utilisait le type host, qui expose toutes les instructions du processeur de départ. Le Xeon E5-2420 v2 de proxmox02 (Ivy Bridge, 2013) ne les a pas toutes, et la reprise a échoué. Les autres VM, en x86-64-v2-AES, ont migré sans problème.

101

Redémarrer GLPI et corriger le type de processeur

qm start 101
qm set 101 --cpu x86-64-v2-AES
qm shutdown 101 && qm start 101
qm config 101 | grep '^cpu:'
Phase R

Créer le pool vmdata sur proxmox01 et répliquer

La réplication copie les disques vers un pool ZFS du même nom sur l'autre nœud. On transforme le disque de 500 Go de proxmox01 en pool vmdata, puis on crée les tâches de réplication.

102

Vérifier que les volumes LVM sont vides

lvs
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
103

Libérer le disque de 500 Go

pvesm remove storage_vms
vgremove -f storage_vms
pvremove /dev/sda
wipefs -a /dev/sda
ls -l /dev/disk/by-id/ | grep -E 'ata-.* -> ../../sda$'
104

Créer le pool et l'étendre aux deux nœuds

zpool create -o ashift=12 -O compression=lz4 vmdata /dev/disk/by-id/ata-WDC_WD5000LPLX-16ZNTT1_WD-WX41A38DNF1V
pvesm set vmdata --nodes proxmox01,proxmox02
zpool status vmdata
pvesm status

Le pool repose sur un seul disque, sans redondance. C'est acceptable, puisqu'il ne contient que des copies de secours. Environ 450 Go disponibles.

105

Créer les tâches de réplication (proxmox02)

for v in 100 101 102 103 104 105; do pvesr create-local-job $v-0 proxmox01 --schedule "*/15"; done
pvesr status

Une copie toutes les 15 minutes, de proxmox02 vers proxmox01. La première copie est complète, les suivantes ne transfèrent que les modifications.

Reste à faire

Fin de la partie 4 et points de contrôle

Les étapes ci-dessous n'ont pas encore été réalisées. Elles seront détaillées une fois exécutées.

Prochaines étapes

  • Contrôler la première synchronisation : pvesr status, avec une date LastSync, FailCount 0 et State OK pour les 6 VM.
  • Activer la haute disponibilité sur les VM et définir leur nœud préféré (proxmox02).
  • Tester une bascule réelle : arrêt de proxmox02, redémarrage des VM sur proxmox01, puis retour.
  • Supprimer l'ancien stockage backup_storage.
  • Mettre en place Proxmox Backup Server et remplacer l'arbitre par un Raspberry Pi.
  • Surveiller que l'alerte « Last Level Cache Error » ne revient pas.

Retours arrière

Firmware Dell : démarrer sur l'ISO FreeDOS du guide, puis :

BGPD1RVT

Rebrancher ensuite la batterie RAID.

Réseau de la première installation : cp /root/interfacs.bak /etc/network/interfaces && ifreload -a

VM : restauration depuis backup-proxmox02 (sauvegardes du 10/11/2026).

Valeurs de référence

Clusterglg-cluster, transport knet, 3 votes
proxmox01192.168.1.75, Fujitsu ESPRIMO Q556/2, 16 Go, vmdata 450 Go (1 disque)
proxmox02192.168.1.20, Dell PowerEdge T320, 24 Go, rpool miroir 2 × 300 Go, vmdata 3 × miroir 1,2 To + 1 spare
QDevice192.168.1.25, VM Debian 13.7 sous VMware Workstation, bail statique Freebox
VersionProxmox VE 9.2.26, noyau 7.0.14-28-pve sur les deux nœuds
Carte du T320PERC H710P Adapter D1 → LSI SAS9207-8i IT, FW 20.00.07.00, adresse SAS 5c81f660f7f69d00
SauvegardesNFS backup-proxmox02 sur proxmox02:/vmdata/backups, keep-last=3
Réplicationproxmox02 → proxmox01 toutes les 15 min, 6 tâches
Type de CPU des VMx86-64-v2-AES (obligatoire avec le Xeon Ivy Bridge)

Sources : fohdeesha – PERC crossflash · Proxmox – High Availability · Forum Proxmox – dépôts PVE 9 · Nuvotex – disques SAS à 0B · TrueNAS – protection Type 2 · Microsoft – WSL networking · GitHub WSL #11002 · Forum Proxmox – 2 nodes + QDevice · Forum Proxmox – erreur de migration CPU · Debian – téléchargement