• [^] # Re: snapshots ZFS

    Posté par (Mastodon) . En réponse au journal Sauvegarde incrémentiel de container lxc sous proxmox. Évalué à 3.

    Tu peux aussi stocker tes snapshots de zfs sous forme de fichiers.

    Exemple:

    Premier snapshot (full) :

    zfs snapshot mypool/mydataset@initial
    zfs send mypool/mydataset@initial | ssh myuser@mybackupserver "dd of=/backup/snaps/mydataset_initial.snap"
    

    Le premier incrémental :

    TODAY=$(date +%Y-%m-%d)
    YESTERDAY=$(date +%Y-%m-%d -d yesterday)
    zfs snapshot mypool/mydataset@$TODAY && zfs send -i mypool/mydataset@initial mypool/mydataset@$TODAY | ssh myuser@mybackupserver "dd of=/backup/snaps/mydataset_$TODAY.snap"
    Les jours suivants (scripté) :

    zfs snapshot mypool/mydataset@$TODAY && zfs send -i mypool/mydataset@$YESTERDAY mypool/mydataset@$TODAY | ssh myuser@mybackupserver "dd of=/backup/snaps/mydataset_$TODAY.snap"
    

    Tu saupoudre le tout d'un peu de gestion d'erreur et de cleanup d'anciens snaps et tu as facilement un truc robuste qui a pour avantage d'être instantané. Au final il n'y a plus que le transfert ssh qui prend du temps.

    Evidemment c'est toujours mieux de foutre ça dans un vrai pool zfs car ça te permet de vérifier l'intégrité des données. Tu es sous LVM ? Ce n'est pas réellement un problème. Tu peux créer un pool zfs en utilisant des fichiers à la place de raw devices ou de partitions.

    Comment créer un zpool de 100GB quand on a déjà partitionné ses disques en LVM:

    On crée d'abord un fichier vide qui ne prend pas de place sur le disque (thin provisionning)

    dd if=/dev/zero of=/rawfiles/my10GBfile bs=1 count=0 seek=100G
    Puis on crée notre pool zfs :

    zpool create my10GBzpool -m none /my10GBfile
    Et là dedans tu peux recevoir des snaps zfs, voir les données à loisir et t'assurer de leur intégrité. Le tout avec l'instantanéité des snaps zfs.