Files
homelab-config/migration/AGENT-migration-containers.md
T

9.0 KiB
Executable File

Procédure de Migration des Containers LXC : prox2 → prox (LVM → ZFS)

Objectif : Migrer les containers LXC de prox2 (192.168.0.95) vers prox (192.168.0.94) sur stockage LVM, puis déplacer leur stockage vers ZFS (rpool/data).

Basé sur : Migration réussie du container 103 (AdGuard).


⚠️ NOTE IMPORTANTE : Stockages déjà configurés sur prox

Les stockages suivants existent déjà sur prox (192.168.0.94) :

  • local-lvm (119G, lvmthin) sur /dev/sdb - VG pve, thin pool data
  • pve-zfs (447G, dir) pointant vers /rpool/data (dataset ZFS)

→ Pour les prochaines migrations, SAUTEZ les étapes de création de ces stockages (Étape 1 et Étape 3).


🔍 Vérification rapide des stockages existants

Avant de commencer, vérifiez sur prox (192.168.0.94) :

pvesm status | grep -E 'local-lvm|pve-zfs'
zfs list | grep rpool/data

Si les stockages existent → Passez directement à l'Étape 2 (Migration).


📋 Prérequis

1. Cluster Proxmox fonctionnel

  • Les deux nœuds (prox2 et prox) doivent être en cluster et en quorum.
  • Vérifier avec :
    pvecm status
    
    → Doit afficher : Quorate avec les 2 nœuds + Qdevice (Pi3).

2. Stockage local-lvm disponible sur prox

  • Un disque supplémentaire (/dev/sdb dans notre cas) doit être disponible sur prox.
  • Vérifier avec :
    lsblk
    

3. Stockage ZFS existant sur prox

  • Le pool ZFS rpool doit exister avec un dataset rpool/data.
  • Vérifier avec :
    zfs list
    

🚀 Étape 1 : Préparer le stockage LVM sur prox (À SAUTER si déjà configuré)

Objectif : Créer un stockage local-lvm sur prox pour permettre la migration des containers depuis prox2.

⚠️ À SAUTER : Ce stockage existe déjà sur prox (119G sur /dev/sdb).

Commandes à exécuter sur prox (192.168.0.94) *(uniquement si local-lvm n'existe pas) :

# 1. Nettoyer le disque (si partitionné)
wipefs -a /dev/sdb

# 2. Créer un volume physique LVM
pvcreate /dev/sdb

# 3. Créer un volume group (nommé 'pve' pour cohérence avec prox2)
vgcreate pve /dev/sdb

# 4. Créer un thin pool pour les containers
lvcreate -L <TAILLE>G -n data pve --thinpool data
# Exemple pour 119G :
lvcreate -L 119G -n data pve --thinpool data

# 5. Ajouter le stockage dans Proxmox
pvesm add lvmthin local-lvm --vgname pve --thinpool data

# 6. Vérifier le stockage
pvesm status

Résultat attendu :

Name            Type       Status     Total    Used    Available
local-lvm      lvmthin    active     119G     0B      119G

🔄 Étape 2 : Migrer un container de prox2 vers prox (sur LVM)

Objectif : Déplacer un container (ex: 103) de prox2 vers prox en conservant le stockage local-lvm.

Commandes à exécuter sur prox2 (192.168.0.95) :

# 1. Arrêter le container (obligatoire pour la migration)
pct stop <CTID>
# Exemple :
pct stop 103

# 2. Lancer la migration vers prox
pct migrate <CTID> prox
# Exemple :
pct migrate 103 prox

# 3. Vérifier la migration sur prox
ssh root@192.168.0.94 "pct list"

Résultat attendu :

  • Le container apparaît sur prox avec le stockage local-lvm.
  • Statut : stopped (à redémarrer manuellement).
# 4. Redémarrer le container sur prox
pct start <CTID>
# Exemple :
pct start 103

# 5. Vérifier le statut
pct status <CTID>

⚠️ Problèmes courants :

  • Erreur : storage 'local-lvm' does not exist → Vérifier que local-lvm existe bien sur prox (Étape 1).
  • Erreur : migration aborted → Vérifier la connectivité réseau entre les nœuds.

💾 Étape 3 : Préparer le stockage ZFS pour les containers sur prox (À SAUTER si déjà configuré)

Objectif : Créer un stockage Proxmox pointant vers le dataset ZFS rpool/data.

⚠️ À SAUTER : Le stockage pve-zfs (pointant vers /rpool/data) existe déjà sur prox.

Commandes à exécuter sur prox (192.168.0.94) *(uniquement si pve-zfs n'existe pas) :

# 1. Vérifier que rpool/data existe et est monté
zfs list
# Doit afficher : rpool/data  96K  443G  96K  /rpool/data

# 2. Créer un stockage Proxmox de type 'dir' pointant vers /rpool/data
# (ZFS est monté automatiquement, pas besoin de 'zfs mount')
pvesm add dir pve-zfs --path /rpool/data --content rootdir

# 3. Vérifier le stockage
pvesm status

Résultat attendu :

Name            Type    Status     Total     Used    Available
pve-zfs        dir     active     447G      0B      447G

🔀 Étape 4 : Déplacer le container de LVM vers ZFS sur prox

Objectif : Déplacer le stockage du container de local-lvm vers pve-zfs (ZFS).

Commandes à exécuter sur prox (192.168.0.94) :

# 1. Arrêter le container
pct stop <CTID>
# Exemple :
pct stop 103

# 2. Déplacer le volume racine (rootfs) vers pve-zfs
pct move-volume <CTID> rootfs pve-zfs
# Exemple :
pct move-volume 103 rootfs pve-zfs

# 3. Redémarrer le container
pct start <CTID>
# Exemple :
pct start 103

# 4. Vérifier la configuration
pct config <CTID>

Résultat attendu :

rootfs: pve-zfs:103/vm-103-disk-0.raw,size=2G

⚠️ Problèmes courants :

  • Erreur : cannot move volumes of a running container → Arrêter le container avant.
  • Erreur : storage 'rpool/data' contains illegal characters → Utiliser le stockage pve-zfs (créé à l'Étape 3).

Étape 5 : Vérifications finales

Sur prox :

# 1. Vérifier que le container est en running
pct status <CTID>

# 2. Vérifier le stockage utilisé
pct config <CTID> | grep rootfs

# 3. Vérifier l'IP du container
pct exec <CTID> -- hostname -I

Sur prox2 :

# 1. Vérifier que le container a disparu
pct list

# 2. Nettoyer les anciens volumes (si nécessaire)
# Les anciens volumes sur local-lvm sont marqués comme 'unused' et peuvent être supprimés
pct config <CTID>  # Vérifier les entrées 'unusedX'

📊 Exemple complet : Migration du container 103 (AdGuard)

⚠️ Note : Pour le container 103, les stockages n'existaient pas sur prox. Pour les prochains containers (101, 102, 104, 105, 106), les stockages existent déjà → Sautez la partie "Préparation".

Sur prox (192.168.0.94) - Préparation (uniquement pour le premier container) :

# Créer le stockage LVM
wipefs -a /dev/sdb
pvcreate /dev/sdb
vgcreate pve /dev/sdb
lvcreate -L 119G -n data pve --thinpool data
pvesm add lvmthin local-lvm --vgname pve --thinpool data

# Créer le stockage ZFS
pvesm add dir pve-zfs --path /rpool/data --content rootdir

Sur prox2 (192.168.0.95) - Migration :

pct stop 103
pct migrate 103 prox

Sur prox (192.168.0.94) - Déplacement vers ZFS :

pct stop 103
pct move-volume 103 rootfs pve-zfs
pct start 103

Vérification :

pct config 103 | grep rootfs
# → rootfs: pve-zfs:103/vm-103-disk-0.raw,size=2G
pct status 103
# → status: running

Procédure simplifiée pour les PROCHAINS containers (101, 102, 104, 105, 106)

Les stockages local-lvm et pve-zfs existent déjà sur prox → Sautez les Étapes 1 et 3.

Commandes à exécuter :

# Sur prox2 (192.168.0.95) :
pct stop <CTID>
pct migrate <CTID> prox

# Sur prox (192.168.0.94) :
pct stop <CTID>
pct move-volume <CTID> rootfs pve-zfs
pct start <CTID>

🎯 Résumé des commandes clés

Action Commande Nœud
Créer LVM pvcreate /dev/sdb; vgcreate pve /dev/sdb; lvcreate -L 119G -n data pve --thinpool data prox
Ajouter stockage LVM pvesm add lvmthin local-lvm --vgname pve --thinpool data prox
Ajouter stockage ZFS pvesm add dir pve-zfs --path /rpool/data --content rootdir prox
Arrêter container pct stop <CTID> prox2 ou prox
Migrer container pct migrate <CTID> prox prox2
Déplacer vers ZFS pct move-volume <CTID> rootfs pve-zfs prox
Redémarrer container pct start <CTID> prox

⚠️ Notes importantes

  1. Compatibilité : Cette procédure fonctionne pour les containers LXC uniquement. Pour les VMs KVM, utiliser qm migrate.

  2. Espace disque : Vérifier que prox a assez d'espace sur local-lvm et rpool/data avant migration.

  3. Cluster : La migration entre nœuds nécessite un cluster Proxmox fonctionnel.

  4. Stockage ZFS : Le dataset rpool/data doit exister. Si ce n'est pas le cas, le créer avec :

    zfs create rpool/data
    
  5. Nettoyage : Après migration, les anciens volumes sur prox2 (marqués unusedX) peuvent être supprimés avec :

    pct set <CTID> --delete unused0
    

📚 Références