Commit graph

12 commits

Author SHA1 Message Date
ef3b777800 Version 2.0.1: Configuration Sanoid optimisée pour snapshots fréquents
Changements:
- Snapshots toutes les 15 minutes (conservés 12 heures)
- Snapshots horaires: 48 (conservés 2 jours)
- Snapshots quotidiens: 7 (conservés 1 semaine)
- Snapshots mensuels/annuels désactivés

Configuration Sanoid:
- frequently = 48 (15 min × 48 = 12h)
- frequent_period = 15 minutes
- hourly = 48 (2 jours)
- daily = 7 (1 semaine)
- monthly = 0
- yearly = 0
2025-11-18 13:52:36 +01:00
ceeb68ddc5 Merge pull request 'Version 2.0.0: Support multi-pools avec isolation des erreurs' (#1) from multipool_update into main
Reviewed-on: #1

Prêt pour la production sur le cluster
2025-11-18 12:41:18 +00:00
5f00bf25ee Version 2.0.0: Support multi-pools avec isolation des erreurs
Fonctionnalités principales:
- Support de plusieurs pools ZFS simultanément (ZPOOLS array)
- Isolation des erreurs: échec d'un pool n'affecte pas les autres
- Logs séparés par pool avec rotation automatique (14 jours)
- Lockfiles indépendants par pool
- Configuration Sanoid générée automatiquement pour tous les pools
- Fichiers d'état séparés par pool
- Résumé de réplication détaillé

Configuration:
- Variable ZPOOLS: liste des pools à répliquer
- LOG_DIR: répertoire des logs (/var/log/zfs-nfs-replica/)
- LOG_RETENTION_DAYS: durée de rétention des logs (14 jours)

Changements techniques:
- Nouvelle fonction replicate_pool() pour réplication isolée
- Fonction init_logging() pour setup des logs et logrotate
- configure_sanoid() génère config dynamique pour tous les pools
- Logs avec contexte de pool (CURRENT_POOL)

Rétrocompatibilité:
- Compatible v1.x avec un seul pool: ZPOOLS=("zpool1")
2025-11-18 13:39:16 +01:00
464540696b Version 1.7.0: Configuration dynamique Sanoid actif/passif
- Configuration automatique de sanoid.conf selon le role du noeud
- Noeud actif: autosnap=yes, autoprune=yes
- Noeud passif: autosnap=no, autoprune=yes
- Conforme a la documentation officielle Sanoid
- Documentation du mount point LXC shared=1 pour la HA
2025-11-16 11:01:07 +01:00
9279932f8b Version 1.6.0: Auto-update + Fix bug réplication multi-datasets
Nouvelles fonctionnalités :
- Système d'auto-update automatique depuis Forgejo
  - Vérification à chaque exécution
  - Sauvegarde de l'ancienne version
  - Redémarrage automatique après mise à jour
  - Protection contre les boucles infinies

Corrections de bugs :
- Fix bug critique: stdin consommé par syncoid dans boucle while
  - Ajout de "< /dev/null" pour rediriger stdin
  - Permet maintenant la réplication de tous les datasets
  - Ajout d'un compteur de datasets traités pour logging

Améliorations :
- Documentation complète du système d'auto-update dans README.md
- Version incrémentée de 1.5.1 à 1.6.0
2025-11-15 18:00:23 +01:00
d1c4a46984 Version 1.5.1: Fix bug 'unbound variable' dans les boucles
Problème:
- Les boucles while avec pipe (|) s'exécutent dans un sous-shell
- SYNCOID_OPTS n'était pas accessible dans le sous-shell (set -u)
- Erreur: "SYNCOID_OPTS: unbound variable"

Corrections:
- Remplacement des pipes par des here-strings (<<<)
- Les boucles while s'exécutent maintenant dans le shell principal
- Changement de REPLICATION_SUCCESS (string) vers REPLICATION_FAILED (int)
- Variables maintenant accessibles dans toutes les boucles
2025-11-14 22:33:35 +01:00
7336f86a64 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
2025-11-14 22:26:29 +01:00
c220b52bb8 Version 1.4: Retrait de l'option --quiet pour plus de verbosité
Changements:
- Retrait de --quiet des options syncoid (première sync et incrémentale)
- Permet de voir la progression détaillée de la réplication
- Utile pour le debugging et le monitoring de la première sync (7.67TB)

Options syncoid:
- Première sync: --recursive --force-delete
- Sync incrémentale: --recursive --no-sync-snap
2025-11-14 22:18:32 +01:00
71f6f3962a Version 1.3: Fix première synchronisation - Options syncoid adaptatives
Problème résolu:
- L'option --no-sync-snap était utilisée dans tous les cas, empêchant
  la première synchronisation de fonctionner correctement
- Message d'erreur: "Removing zpool1 because no matching snapshots were found"

Corrections:
- Options syncoid maintenant conditionnelles selon le contexte:
  * Première sync: --recursive --force-delete --quiet
    (pas de --no-sync-snap pour permettre création snapshot initial)
  * Sync incrémentale: --recursive --no-sync-snap --quiet
    (utilise les snapshots Sanoid existants)

Impact:
- Permet la synchronisation initiale elitedesk → acemagician
- Conserve l'optimisation des syncs incrémentales ultérieures
2025-11-14 22:12:38 +01:00
2b7d1c5500 Version 1.2: Détection automatique première sync + double protection anti-écrasement
- Détection automatique snapshots en commun (sync incrémentale vs première sync)
  - Gestion automatique Sanoid (activation/désactivation selon nœud actif)
  - Protection #1: Comparaison tailles source/destination (ratio >= 50%)
  - Protection #2: Historique des tailles avec tolérance ±20%
  - Prévention écrasement accidentel lors remplacement disque
  - Logs explicites avec actions recommandées en cas de blocage
2025-11-14 19:08:35 +01:00
d5c2357487 Version 1.1: Gestion automatique Sanoid selon nœud actif 2025-11-14 18:43:49 +01:00
996b5c6c8e Commit initial : réplication bidirectionnelle ZFS avec NFS HA 2025-11-14 18:06:02 +01:00