Version 1.5: Réplication des datasets enfants au lieu du pool racine
Problème identifié: - Le script tentait de répliquer le pool racine "zpool1" (96K de métadonnées) - Syncoid ne pouvait pas gérer le dataset racine lors de la première sync - Message: "Removing zpool1 because no matching snapshots were found" Solution: - Liste et réplique les datasets de premier niveau uniquement: * zpool1/data-nfs-share * zpool1/pbs-backups - Chaque dataset est répliqué récursivement (inclut tous les enfants) - Le pool racine n'est plus répliqué explicitement Avantages: - Permet la création automatique des datasets sur le nœud distant - Réplication correcte de tous les datasets et snapshots - Gestion individuelle de chaque dataset de premier niveau
This commit is contained in:
parent
c220b52bb8
commit
7336f86a64
1 changed files with 30 additions and 3 deletions
|
|
@ -11,7 +11,7 @@
|
|||
# - Gère l'activation/désactivation de Sanoid selon le nœud actif
|
||||
#
|
||||
# Auteur : BENE Maël
|
||||
# Version : 1.4
|
||||
# Version : 1.5
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
|
|
@ -439,8 +439,35 @@ else
|
|||
SYNCOID_OPTS="--recursive --force-delete"
|
||||
fi
|
||||
|
||||
# Lancer la réplication avec les options appropriées
|
||||
if syncoid $SYNCOID_OPTS "$ZPOOL" "root@${REMOTE_NODE_IP}:$ZPOOL"; then
|
||||
# Lister les datasets de premier niveau sous le pool
|
||||
# (on ne réplique pas le pool racine lui-même, seulement ses enfants directs)
|
||||
FIRST_LEVEL_DATASETS=$(zfs list -H -o name -r "$ZPOOL" -t filesystem,volume -d 1 | grep -v "^${ZPOOL}$")
|
||||
|
||||
if [[ -z "$FIRST_LEVEL_DATASETS" ]]; then
|
||||
log "error" "Aucun dataset trouvé sous ${ZPOOL}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "info" "Datasets à répliquer:"
|
||||
echo "$FIRST_LEVEL_DATASETS" | while read -r dataset; do
|
||||
log "info" " - ${dataset}"
|
||||
done
|
||||
|
||||
# Lancer la réplication pour chaque dataset de premier niveau
|
||||
# Chaque réplication est récursive, donc elle inclut tous les datasets enfants
|
||||
REPLICATION_SUCCESS=true
|
||||
echo "$FIRST_LEVEL_DATASETS" | while read -r dataset; do
|
||||
log "info" "=== Réplication de ${dataset} (récursif) ==="
|
||||
|
||||
if syncoid $SYNCOID_OPTS "$dataset" "root@${REMOTE_NODE_IP}:${dataset}"; then
|
||||
log "info" "✓ ${dataset} répliqué avec succès"
|
||||
else
|
||||
log "error" "✗ Échec de la réplication de ${dataset}"
|
||||
REPLICATION_SUCCESS=false
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$REPLICATION_SUCCESS" == "true" ]]; then
|
||||
log "info" "✓ Réplication récursive réussie vers ${REMOTE_NODE_NAME} (${REMOTE_NODE_IP})"
|
||||
log "info" " Tous les datasets de ${ZPOOL} ont été synchronisés"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue