Architecture cible

Le multipath iSCSI utilise deux chemins réseau indépendants entre les hôtes Proxmox et le NAS. En cas de défaillance d’un switch ou d’une carte réseau, le trafic bascule automatiquement sans interruption des VMs.

  • Réseau iSCSI-A : 192.168.10.0/24 — Interface ens18 (TrueNAS) / vmbr10 (Proxmox)
  • Réseau iSCSI-B : 192.168.20.0/24 — Interface ens19 (TrueNAS) / vmbr20 (Proxmox)
  • Politique : round-robin avec failback immédiat
Prerequis
TrueNAS SCALE 23.10+, Proxmox VE 8.x, deux interfaces réseau dédiées stockage par noeud (10 GbE recommandé), réseau de stockage isolé du réseau de gestion.

1. Préparation du pool ZFS

Création du pool

Créez un pool ZFS dédié iSCSI. Utilisez RAID-Z2 minimum en production (tolérance 2 disques).

TrueNAS — Shell bash

# Lister les disques disponibles
lsblk -d -o NAME,SIZE,TYPE,MODEL
zpool status

# Créer le pool RAIDZ2 (adapter les identifiants disques)
zpool create -o ashift=12 \
  iscsi-pool raidz2 \
  /dev/disk/by-id/ata-DISK_001 \
  /dev/disk/by-id/ata-DISK_002 \
  /dev/disk/by-id/ata-DISK_003 \
  /dev/disk/by-id/ata-DISK_004

# Vérifier la création du pool
zpool status iscsi-pool
zpool list iscsi-pool

Création du zvol iSCSI

TrueNAS — Shell bash

# Créer un zvol de 500 Go pour Proxmox
zfs create -V 500G \
  -o volblocksize=16K \
  -o compression=lz4 \
  -o dedup=off \
  -o sync=always \
  iscsi-pool/proxmox-vm-store

# Vérifier
zfs list iscsi-pool/proxmox-vm-store
ls -la /dev/zvol/iscsi-pool/
Attention
sync=always garantit l’intégrité des données mais réduit les performances en écriture. Sur du matériel avec cache BBU ou NVRAM, vous pouvez utiliser sync=standard.

2. Configuration iSCSI sur TrueNAS

Via l’interface web TrueNAS : Services > iSCSI. Configurez les quatre composants dans l’ordre :

1
**Portals
Interfaces d’écoute**
2
**Initiators
Autorisation des hôtes**
3
**Extents
Association du zvol**
4
**Associated Targets
Liaison complète**

3. Multipath sur Proxmox

/etc/multipath.conf conf

defaults {
    user_friendly_names    yes
    path_grouping_policy   multibus
    failback               immediate
    no_path_retry          12
    polling_interval       5
    checker_timeout        60
}

blacklist {
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^hd[a-z]"
    devnode "^sd[a-z]$"
}

multipaths {
    multipath {
        wwid                  VOTRE_WWID
        alias                 iscsi-proxmox-store
        path_grouping_policy  multibus
        path_checker          tur
        path_selector         "round-robin 0"
        rr_min_io             100
        failback              immediate
    }
}
Proxmox — Shell (chaque noeud) bash

# Installer les paquets nécessaires
apt install -y multipath-tools open-iscsi

# Découverte iSCSI sur les deux chemins
iscsiadm -m discovery -t sendtargets -p 192.168.10.10:3260
iscsiadm -m discovery -t sendtargets -p 192.168.20.10:3260

# Connexion aux targets
iscsiadm -m node --login

# Activer et démarrer multipathd
systemctl enable --now multipathd

# Récupérer le WWID du device multipath
multipath -ll

4. Intégration dans Proxmox

Proxmox — Shell bash

# Créer le VG LVM sur le device multipath
pvcreate /dev/mapper/iscsi-proxmox-store
vgcreate iscsi-vg /dev/mapper/iscsi-proxmox-store

# Créer le thin pool
lvcreate -L 450G -T iscsi-vg/data

# Ajouter dans Proxmox
pvesm add lvmthin iscsi-storage \
  --vgname iscsi-vg \
  --thinpool data \
  --content images,rootdir \
  --nodes pve1,pve2,pve3

5. Test du failover

Proxmox — Test failover bash

# Surveiller l'état multipath en temps réel
watch -n 1 multipath -ll

# Simuler une panne de chemin
ip link set ens18 down

# Observer le basculement automatique
# Restaurer le chemin
ip link set ens18 up

# Vérifier les logs multipathd
journalctl -u multipathd -f
Resultat attendu
Avec un chemin désactivé, les VMs continuent de fonctionner sans interruption. Le multipath bascule en moins de 10 secondes selon votre configuration polling_interval.