Version 2.4.0: Correction limitation de bande passante
All checks were successful
Tests et Vérifications / Tests unitaires BATS (push) Successful in 21s
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

- Utilisation de --source-bwlimit (option native syncoid) au lieu de MBUFFER
- Conversion automatique MB/s → bytes/s pour syncoid
- Plus besoin de mbuffer installé (syncoid utilise pv en interne)
- Limitation appliquée côté source pour tous les transferts
This commit is contained in:
Tellsanguis 2026-02-08 12:10:51 +01:00
parent 9499f5805c
commit a2ecdee7e8

View file

@ -1162,20 +1162,6 @@ replicate_pool() {
# Syncoid utilise les options SSH via la variable d'environnement SSH # Syncoid utilise les options SSH via la variable d'environnement SSH
export SSH="ssh -i ${SSH_KEY}" export SSH="ssh -i ${SSH_KEY}"
# Configuration de la limitation de bande passante via mbuffer
if command -v mbuffer &>/dev/null && [[ -n "${BANDWIDTH_LIMIT_MBS}" ]] && [[ "${BANDWIDTH_LIMIT_MBS}" -gt 0 ]]; then
# -r: rate limit (débit max en MB/s)
# -m: taille du buffer (128MB par défaut)
export MBUFFER="mbuffer -r ${BANDWIDTH_LIMIT_MBS}M -m 128M"
log "info" "Limitation de bande passante activée: ${BANDWIDTH_LIMIT_MBS} MB/s"
else
if [[ -n "${BANDWIDTH_LIMIT_MBS}" ]] && [[ "${BANDWIDTH_LIMIT_MBS}" -gt 0 ]]; then
log "warning" "mbuffer non disponible - limitation de bande passante désactivée"
log "warning" "Installer mbuffer: apt install mbuffer"
fi
unset MBUFFER
fi
local syncoid_opts local syncoid_opts
# Déterminer si c'est une première synchronisation # Déterminer si c'est une première synchronisation
if check_common_snapshots "$remote_ip" "$pool"; then if check_common_snapshots "$remote_ip" "$pool"; then
@ -1201,6 +1187,14 @@ replicate_pool() {
syncoid_opts="--recursive --force-delete" syncoid_opts="--recursive --force-delete"
fi 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 # Lister les datasets de premier niveau sous le pool
local first_level_datasets local first_level_datasets
first_level_datasets=$(zfs list -H -o name -r "$pool" -t filesystem,volume -d 1 | grep -v "^${pool}$") first_level_datasets=$(zfs list -H -o name -r "$pool" -t filesystem,volume -d 1 | grep -v "^${pool}$")