From 8da967213a41f6fa2ee9a6658451a0bfdc038a9b Mon Sep 17 00:00:00 2001 From: Tellsanguis Date: Sun, 8 Feb 2026 12:14:23 +0100 Subject: [PATCH] Version 2.4.1: Ajout limitation de bande passante MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Nouvelle variable BANDWIDTH_LIMIT_MBS (défaut: 40 MB/s) - Utilisation de --source-bwlimit (option native syncoid) - Conversion automatique MB/s → bytes/s - Limitation appliquée côté source pour tous les transferts - Configurable via /etc/zfs-nfs-replica/config - Désactivable (mettre à 0 ou vide) --- zfs-nfs-replica.sh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/zfs-nfs-replica.sh b/zfs-nfs-replica.sh index 2edf34c..1fef826 100644 --- a/zfs-nfs-replica.sh +++ b/zfs-nfs-replica.sh @@ -18,13 +18,13 @@ # - Fichiers d'état séparés par pool (tailles, UUIDs disques, erreurs critiques) # # Auteur : BENE Maël -# Version : 2.1.0 +# Version : 2.4.1 # set -euo pipefail # Configuration -SCRIPT_VERSION="2.3.2" +SCRIPT_VERSION="2.4.1" REPO_URL="https://forgejo.tellserv.fr/Tellsanguis/zfs-sync-nfs-ha" SCRIPT_URL="${REPO_URL}/raw/branch/main/zfs-nfs-replica.sh" SCRIPT_PATH="${BASH_SOURCE[0]}" @@ -53,6 +53,11 @@ STATE_DIR="/var/lib/zfs-nfs-replica" SIZE_TOLERANCE=20 # Tolérance de variation en pourcentage (±20%) MIN_REMOTE_RATIO=50 # Le distant doit avoir au moins 50% de la taille du local +# Configuration de limitation de bande passante +# Limite le débit de transfert en MB/s (mégaoctets par seconde) +# Mettre à 0 ou laisser vide pour désactiver la limitation +BANDWIDTH_LIMIT_MBS=40 # Limite par défaut: 40 MB/s + # Configuration des logs (rotation 2 semaines) LOG_DIR="/var/log/zfs-nfs-replica" LOG_RETENTION_DAYS=14 @@ -1182,6 +1187,14 @@ replicate_pool() { syncoid_opts="--recursive --force-delete" fi + # Configuration de la limitation de bande passante (option native syncoid) + if [[ -n "${BANDWIDTH_LIMIT_MBS}" ]] && [[ "${BANDWIDTH_LIMIT_MBS}" -gt 0 ]]; then + # Convertir MB/s en bytes/s pour syncoid (--source-bwlimit attend des bytes) + local bandwidth_bytes=$((BANDWIDTH_LIMIT_MBS * 1024 * 1024)) + syncoid_opts="${syncoid_opts} --source-bwlimit=${bandwidth_bytes}" + log "info" "Limitation de bande passante activée: ${BANDWIDTH_LIMIT_MBS} MB/s" + fi + # Lister les datasets de premier niveau sous le pool local first_level_datasets first_level_datasets=$(zfs list -H -o name -r "$pool" -t filesystem,volume -d 1 | grep -v "^${pool}$")