Version 2.4.1: Ajout limitation de bande passante
All checks were successful
Tests et Vérifications / Tests unitaires BATS (push) Successful in 26s
Tests et Vérifications / Vérification ShellCheck (push) Successful in 13s
Tests et Vérifications / Vérification syntaxe Bash (push) Successful in 4s
Tests et Vérifications / Résumé des tests (push) Successful in 1s

- 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)
This commit is contained in:
Tellsanguis 2026-02-08 12:14:23 +01:00
parent ac085fffb2
commit 8da967213a

View file

@ -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}$")