Actualiser AGENT-migration-containers.md

This commit is contained in:
2026-07-19 13:40:25 +00:00
parent da6b794a4d
commit b2652c78a6
@@ -1,326 +1,326 @@
# 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)** :
```bash
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 :
```bash
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 :
```bash
lsblk
```
### 3. Stockage ZFS existant sur **prox**
- Le pool ZFS `rpool` doit exister avec un dataset `rpool/data`.
- Vérifier avec :
```bash
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) :
```bash
# 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)** :
```bash
# 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).
```bash
# 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) :
```bash
# 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)** :
```bash
# 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** :
```bash
# 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** :
```bash
# 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)* :
```bash
# 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 :
```bash
pct stop 103
pct migrate 103 prox
```
### Sur **prox (192.168.0.94)** - Déplacement vers ZFS :
```bash
pct stop 103
pct move-volume 103 rootfs pve-zfs
pct start 103
```
### Vérification :
```bash
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 :
```bash
# 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 :
```bash
zfs create rpool/data
```
5. **Nettoyage** : Après migration, les anciens volumes sur **prox2** (marqués `unusedX`) peuvent être supprimés avec :
```bash
pct set <CTID> --delete unused0
```
---
## 📚 Références
- [Documentation Proxmox VE - LXC](https://pve.proxmox.com/wiki/Linear_Virtual_Environment_(LXC))
- [Documentation Proxmox VE - Storage](https://pve.proxmox.com/wiki/Storage)
- [Documentation Proxmox VE - Migration](https://pve.proxmox.com/wiki/Migration_of_virtual_guests)
# 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)** :
```bash
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 :
```bash
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 :
```bash
lsblk
```
### 3. Stockage ZFS existant sur **prox**
- Le pool ZFS `rpool` doit exister avec un dataset `rpool/data`.
- Vérifier avec :
```bash
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) :
```bash
# 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)** :
```bash
# 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).
```bash
# 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) :
```bash
# 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)** :
```bash
# 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** :
```bash
# 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** :
```bash
# 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)* :
```bash
# 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 :
```bash
pct stop 103
pct migrate 103 prox
```
### Sur **prox (192.168.0.94)** - Déplacement vers ZFS :
```bash
pct stop 103
pct move-volume 103 rootfs pve-zfs
pct start 103
```
### Vérification :
```bash
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 :
```bash
# 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 :
```bash
zfs create rpool/data
```
5. **Nettoyage** : Après migration, les anciens volumes sur **prox2** (marqués `unusedX`) peuvent être supprimés avec :
```bash
pct set <CTID> --delete unused0
```
---
## 📚 Références
- [Documentation Proxmox VE - LXC](https://pve.proxmox.com/wiki/Linear_Virtual_Environment_(LXC))
- [Documentation Proxmox VE - Storage](https://pve.proxmox.com/wiki/Storage)
- [Documentation Proxmox VE - Migration](https://pve.proxmox.com/wiki/Migration_of_virtual_guests)