From d5c2357487a0b12fb681f8c6f9ce667c86247fba Mon Sep 17 00:00:00 2001 From: Tellsanguis Date: Fri, 14 Nov 2025 18:43:49 +0100 Subject: [PATCH] =?UTF-8?q?Version=201.1:=20Gestion=20automatique=20Sanoid?= =?UTF-8?q?=20selon=20n=C5=93ud=20actif?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zfs-nfs-replica.sh | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/zfs-nfs-replica.sh b/zfs-nfs-replica.sh index 2d37284..e1e5862 100644 --- a/zfs-nfs-replica.sh +++ b/zfs-nfs-replica.sh @@ -8,9 +8,10 @@ # - Détermine le nœud distant automatiquement # - Réplique le dataset ZFS vers le nœud passif # - Utilise un verrou pour éviter les réplications concurrentes +# - Gère l'activation/désactivation de Sanoid selon le nœud actif # # Auteur : BENE Maël -# Version : 1.0 +# Version : 1.1 # set -euo pipefail @@ -92,6 +93,34 @@ verify_lxc_is_active() { fi } +# Gestion de Sanoid selon le nœud actif +manage_sanoid() { + local action="$1" # "enable" ou "disable" + + if [[ "$action" == "enable" ]]; then + # Activer Sanoid sur le nœud actif + if systemctl is-enabled sanoid.timer &>/dev/null; then + if ! systemctl is-active sanoid.timer &>/dev/null; then + log "info" "Activation de Sanoid sur le nœud actif" + systemctl start sanoid.timer + fi + else + log "info" "Activation et démarrage de Sanoid sur le nœud actif" + systemctl enable --now sanoid.timer + fi + elif [[ "$action" == "disable" ]]; then + # Désactiver Sanoid sur le nœud passif + if systemctl is-active sanoid.timer &>/dev/null; then + log "info" "Désactivation de Sanoid sur le nœud passif" + systemctl stop sanoid.timer + fi + if systemctl is-enabled sanoid.timer &>/dev/null; then + log "info" "Désactivation permanente de Sanoid sur le nœud passif" + systemctl disable sanoid.timer + fi + fi +} + # Détermination du nœud local et distant LOCAL_NODE=$(hostname) log "info" "Démarrage du script sur le nœud: ${LOCAL_NODE}" @@ -117,9 +146,14 @@ log "info" "Nœud distant configuré: ${REMOTE_NODE_NAME} (${REMOTE_NODE_IP})" # Triple vérification de sécurité if ! verify_lxc_is_active; then log "info" "Le LXC ${CTID} n'est pas actif sur ce nœud. Pas de réplication nécessaire." + # Désactiver Sanoid sur le nœud passif + manage_sanoid "disable" exit 0 fi +# Le LXC est actif ici : activer Sanoid sur ce nœud +manage_sanoid "enable" + # Vérification de l'existence du pool if ! zpool list "$ZPOOL" &>/dev/null; then log "error" "Le pool ${ZPOOL} n'existe pas sur ce nœud"