Aller au contenu

Multipath (multipath-tools) sur iSCSI et FC

Day 1 · DéployerNiveau 3 · MaîtriserProcédureRédigé · à valider en lab

Agrégez les différents chemins vers un LUN (deux contrôleurs, deux fabrics ou deux réseaux iSCSI) en un seul périphérique /dev/mapper/<alias>, puis posez dessus un VG LVM partagé. Sans multipath, la perte d'un câble ou d'un contrôleur coupe l'accès aux disques des VM.

La configuration multipath n'est pas répliquée par le cluster : chaque étape se fait sur pve01, pve02 et pve03, sauf la création du VG et du stockage (une seule fois).

Avant de toucher la prod

  • Le LUN est présenté (mapping, masquage, zoning FC) aux trois nœuds, et à aucun autre hyperviseur.
  • iSCSI : deux interfaces dédiées par nœud sur deux sous-réseaux distincts (par exemple 10.20.0.0/24 et 10.21.0.0/24), MTU identique de bout en bout.
  • La documentation du constructeur de la baie est disponible (section device recommandée pour Linux / multipath-tools, ALUA, no_path_retry).
  • Une fenêtre de maintenance est prévue si des VM utilisent déjà le LUN : en contrat N2/N3, cette opération est réalisée par le MSP.

Étapes

1. Connecter les chemins (iSCSI seulement)

En FC, les chemins apparaissent dès que le zoning est fait : vérifiez avec ls -l /dev/disk/by-path/ | grep fc.

apt update && apt install open-iscsi multipath-tools
cat /etc/iscsi/initiatorname.iscsi        # IQN à déclarer sur la baie
iscsiadm -m discovery -t sendtargets -p 10.20.0.10
iscsiadm -m discovery -t sendtargets -p 10.21.0.10
iscsiadm -m node --login
iscsiadm -m node --op update -n node.startup -v automatic   # reconnexion au démarrage
iscsiadm -m session -P3 | grep -E "Target|Attached scsi disk"

Réduisez le délai de bascule iSCSI, comme le recommande le wiki Proxmox : dans /etc/iscsi/iscsid.conf, node.session.timeo.replacement_timeout = 15 (défaut : 120 secondes). Cette valeur ne s'applique qu'aux cibles découvertes ensuite. Pour les cibles déjà connues : iscsiadm -m node --op update -n node.session.timeo.replacement_timeout -v 15, puis vérification avec iscsiadm -m node -o show | grep replacement_timeout.

2. Déclarer le LUN dans multipath

lsblk -o NAME,SIZE,VENDOR,MODEL,WWN         # le LUN apparaît 2 ou 4 fois (sdb, sdc...)
/lib/udev/scsi_id -g -u -d /dev/sdb         # WWID, ex. 36001405abcdef0123456789
multipath -a 36001405abcdef0123456789       # ajout dans /etc/multipath/wwids

Avec la valeur par défaut find_multipaths strict, multipath n'agrège que les WWID listés dans /etc/multipath/wwids. Fichier /etc/multipath.conf minimal avec un alias lisible :

defaults {
    user_friendly_names yes
}

multipaths {
    multipath {
        wwid  36001405abcdef0123456789
        alias mpath-san01
    }
}

# devices { device { ... } }  -> section fournie par le constructeur de la baie
multipath -r          # recharge la configuration
multipath -ll

Si vous avez installé multipath-tools-boot (recommandé par le wiki pour LVM sur LUN FC/SAS), régénérez l'initramfs après chaque modification : update-initramfs -u -k all.

3. Créer le VG et le stockage (une seule fois, depuis pve01)

  1. Créez d'abord le PV et le VG en CLI (onglet voisin), sur /dev/mapper/mpath-san01 : c'est la méthode documentée par le wiki Multipath.
  2. Datacenter → Storage → Add → LVM.
  3. ID : san-lvm ; Base storage : Existing volume groups ; Volume group : vg_san.
  4. Cochez Shared. Content : Disk image. Laissez Nodes sur All.
  5. Options : Wipe Removed Volumes recommandé ; Allow Snapshots as Volume-Chain seulement après validation (aperçu technologique).
pvcreate /dev/mapper/mpath-san01
vgcreate vg_san /dev/mapper/mpath-san01
pvesm add lvm san-lvm --vgname vg_san --shared 1 --content images --saferemove 1
# sur pve02 et pve03 :
pvscan --cache && vgs vg_san

Vérifications

Sur chaque nœud :

# multipath -ll
mpath-san01 (36001405abcdef0123456789) dm-5 VENDOR,MODEL
size=2.0T features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 3:0:0:1 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  `- 4:0:0:1 sdc 8:32 active ready running
Tous les chemins sont active ready running. pvs montre /dev/mapper/mpath-san01 (et non /dev/sdb). pvesm status affiche san-lvm actif sur les trois nœuds. Test de bascule en lab : débranchez un chemin, le statut passe à failed faulty, la VM de test continue d'écrire ; rebranchez, le chemin revient seul.

Rollback

Avant création du VG : multipath -w <WWID> retire le WWID, puis multipath -r. Après création, si aucune VM n'utilise le stockage : pvesm remove san-lvm, vgremove vg_san, pvremove /dev/mapper/mpath-san01. Avec des VM en place, aucun retour arrière sans le MSP.

Pièges vus en support

  • pvs affiche /dev/sdb au lieu de /dev/mapper/... : LVM utilise un seul chemin. Le multipath a été configuré après le VG, ou le WWID manque sur ce nœud.
  • Configuration faite sur un seul nœud : la VM fonctionne sur pve01 et échoue après migration sur pve02.
  • queue_if_no_path / no_path_retry queue sans limite : en cas de perte totale, les I/O restent en attente indéfiniment et les VM se figent au lieu de remonter une erreur. Choisissez la valeur avec le constructeur et le MSP.
  • Deux chemins iSCSI dans le même sous-réseau : le noyau peut faire sortir les deux sessions par la même carte.
  • Alias ou WWID différent selon les nœuds : stockage inactif sur une partie du cluster.

Quand ouvrir un ticket iTop

Un chemin failed persistant après vérification physique : P3. Tous les chemins failed sur un nœud : P2. Sur tous les nœuds : P1, voir Perte d'accès à la baie. Joindre multipath -ll, iscsiadm -m session -P1, pvs, journalctl -u multipathd -u iscsid --since "-1h".

Ouvrir un ticket iTop

Pour aller plus loin