Sauvegardes chiffrées des conteneurs LXC sous Proxmox

comment vous faites avaler votre snapshot dans votre logiciel (?) de backup le tout en deduplication

Un snapshot est vu par un logiciel de backup comme un filesystem. Il est juste figé par rapport à celui qui continue en prod. Pour la dédupli, c’est le boulot du logiciel de backup de la faire, comme pour tout filesystem.

L’autre option, c’est de considérer que le pool ZFS répliqué de l’original sur une machine distante EST le backup… et du coup, on a l’incrémental gratos (via les snapshots), la dédupli, la compression et la restauration instantanée (vu qu’on a un filesystem opérationel sur la réplique).

oui mais fait ainsi si tu as des bases c’est crade.
tu as des transactions par forcément commité.

Problème identique à un backup normal… certains services (typique pour les bases de données) ont besoin d’un peu plus qu’un simple backup basé ou pas sur des snapshots. Les snapshot ont quand même tendance à réduire le problème car le filesystem étant figé, on n’est pas en train de sauvegarder des fichiers qui évoluent au fur et à mesure de la sauvegarde.
Par exemple dans le cas de postgresql que j’utilise beaucoup, le snapshot va figer ses fichiers ainsi que son wal (son journal), et on repartira de là avec quelque chose de globalement cohérent.

en quoi zfs te permet des bascules rapides ?

Temps de restauration nul, temps de réplication très faible et peu lié au volume du filesystem.

Ton backup (incrémental ?) de nextcloud de 55mm (temps lié je pense à la quantité totale de données) doit pouvoir se faire en quelques secondes (temps lié aux seuls changements) et la réplique est tout de suite utilisable.

Ceux qui s’amusent à pousser les sauvegardes depuis la prod. vers du stockage courent le gros risque d’une attaque par chiffrement des backup.

Oui, c’est pour ça qu’il vaut mieux que ce soit la réplique qui vienne se connecter sur la prod pour récupérer le snapshot différentiel et pas l’inverse.
Je ne me suis pas trop inquiété des cryptolocker qui je pense chiffrent les fichiers et vont pas aller à un niveau plus bas (block device). Dans ce cas, un cryptolocker va chiffrer la dernière version des fichiers, en créer une nouvelle, éliminable en revenant au snapshot précédent.
Bien sûr si un cryptolocker visant spécifiquement ZFS est développé, ça sera une autre histoire, mais j’ai jamais entendu parlé d’une telle bête jusqu’à maintenant.

salut cquest , tu utilises quel soft de backup ?
j’ai choppé un crypto sur une prod. : c’est redoutable et surtout rapide avec les SSD et réseau gigabit … et j’ai constaté , pour un gros groupe allemand un sinistre par cryptage du backup et en phase deux l’attaques de la prod. : comme on dit par chez nous … méfia teu !
Je préfére les concepts solides aux dernières trouvailles technologiques, que nous devons certes experimenté mais de là à tout faire reposer dessus : non.
Après je serai curieux de voir ton système de backup au complet, y’a des trucs sympas.
Tu l’as documenté ? (perso je dois faire ca …ce jour lol)

Ton backup (incrémental ?) de nextcloud de 55mm (temps lié je pense à la quantité totale de données) doit pouvoir se faire en quelques secondes (temps lié aux seuls changements) et la réplique est tout de suite utilisable.

je sais pas, faut que je regardes car il ny’a pas de gros changement chaque jour … bon il y a environ 200Go en tout, mais si 100 à 500 Mo bouge cela doit etre le maximum.
J’utilise sshFS pour la la copie du différentiel .

pour répondre à mablr, concrétement, voilà notre recette actuelle à ilinux :
https://wiki.ilinux.fr/doku.php?id=documentations:logiciels:gargantua#orionle_serveur_de_sauvegarde_n_1

Merci Stéphane, je vais lire ça attentivement.

de rien :wink:, la piste de cquest est intéressante aussi (ce serait cool qu’il documente sur un site !):+1:.
Mais elle demande, à mon avis, des gros moyens.
Comme tu le sais j’ai monté une infra. la plus discrète possible en terme de consommation électrique et de matériel.
Un ceph sur un design matériel adéquate me semble complètement jouable.(il faut voir le matos que j’utilises …)

Ok du coup on jette tout ? On ne sauvegarde QUE des bases ? Ah zut on y avait pas pensé !

De plus rien ne t’empêche de faire l’équivalent d’un « FLUSH TABLES WITH READ LOCK » AVANT de faire ton snapshot et de le libérer juste après.

Toutes nos sauvegardes bases sont réalisées ainsi à mon taf…

https://www.percona.com/blog/2012/03/23/how-flush-tables-with-read-lock-works-with-innodb-tables/

j’ai mis ça : « –single-transaction » dans les options du mysqlDump … donc ? mais on sort du sujet du post :wink:

je suis tombé là dessus … si cela peut vous donner des idées .
https://irs-blog.ynovaix.com/index.php/2019/05/10/sauvegarde-de-machines-virtuelles-avec-borg-backup/

et surtout ça :
https://forum.proxmox.com/threads/help-with-setting-up-a-good-backup-strategy-on-single-server.47073/#post-222160

par contre c’est cramé avec une vm, pour les lxc c’est bon.

bien méditer la partie raid, snapshot et réplication qui ne sont PAS des sauvegardes.
https://blog.lrdf.fr/article9/mettre-en-place-une-strategie-de-sauvegarde

RAID et snapshot… ok

Réplication, tout dépend de ce qu’on entends par là…

  • une réplique incrémentale de snapshots sur un second espace de stockage physiquement différent (distant de préférence) a toutes les caractéristiques d’une sauvegarde
  • une réplique « live » sans snapshot (impossible de revenir en arrière) n’est pas suffisante pour être considérée comme une sauvegarde

et si je te chiffre ton(tes) snapshots (second espace de stockage) en première phase de l’attaque ?
Tu réanimes la bête comment ?:roll_eyes:

Personnellement je contrôle l’intégrité de mes depots borgbackup AVANT de les synchroniser (rsync pour externalisation sur un autre site physique ) … au moindre doute de cryptage ou de corruption : je ne synchronise pas … une alerte part illico … car cela peut signifier que l’on s’est fait ouvrir :angry:

Note : je vais surement évaluer la possibilité de faire un double depot borkbackup, un interne l’autre externe.

Ne mélanges tu pas un peu les sujets ?

Et si on te chiffre ton second dépot borg backup en première phase d’attaque ? C’est pas le même problème ?

A partir du moment où quelqu’un a un accès suffisant sur une machine pour cryptolocker, je pense qu’il n’y a pas plus grand chose à faire pour cette machine et ce qu’elle contenait.

Non je ne mélange pas tout, au contraire je prends la problématique dans son ensemble. Ça s’appelle faire de l’ architecture système (ou urbanisation du si).
La sauvegarde (chiffrées ou pas) fait partie intégrante de la sécurité.

je n’ai pas de second dépôt borgbackup (borgbackup permet de faire de la rétention de données sur 5 ans, ce n’est pas une copie, ni une synchro ni un snapshot). Mon externalisation se base sur une synchro du dépot (c’est différent), cette synchro (copie ) des dépots est sur un autre site, physiquement isolé .

Et logiquement aussi … la solution de sauvegarde BorgBackup (n°1) ne PEUT PAS voir , ou accéder à la solution de sauvegarde n°2 déporté .

Donc physiquement ou logiquement : la compromission des dépots BorgBackup NE PERMET pas une compromission de la copie externe. (là c’est physique et logique …).

De plus les réseaux de sauvegardes sont :

  1. dédié (chacun son switch),
  2. isolé logiquement et physiquement …

https://wiki.ilinux.fr/lib/exe/fetch.php?media=medias:schema-sauvegarde-ilinux.png

Le truc que j’aimerai implémenter c’est pouvoir faire un snapshot sur proxmox (la prod) et pouvoir travailler avec borgbackup sur ce snaphsot laissant tourner la prod pendant le backup , tout cela au niveau système de fichier … donc pouvoir rentrer dans le snapshot :thinking:

Version courte: s/borg backup/replique ZFS/

Ce n’est pas la techno borg vs ZFS qui assure le sécurité, mais l’isolation et le fait que 1 ne peut pas accéder à 2 (c’est 2 qui accède à 1).

Pour répondre au poste initiale, je m’intéresse , bien entendu ,aux snapshot pour ne pas pertuber la prod. (je n’ai que 60 utilisateur sur une des insatnces nextcloud : mais quand on va augmenter en volumétrie … je vais avoir un temps de backup long … c’est sur un autre réseau mais si on peut améliorer).

Voilà ou j’en suis sur du ceph/RBD :

Par contre cela coince au moment du montage sur le système racine de l’hyperviseur :

rbd snap ls cephPool1/vm-106-disk-0

==>
SNAPID NAME SIZE TIMESTAMP
32 Backup28102019 32GiB Mon Oct 28 19:46:00 2019

Puis

rbd map --read-only cephPool1/vm-106-disk-0@Backup28102019

==>
/dev/rbd3

rbd showmapped

==>
id pool image snap device
0 cephPool1 vm-101-disk-0 - /dev/rbd0
1 cephPool1 vm-106-disk-0 - /dev/rbd1
2 cephPool1 vm-107-disk-0 - /dev/rbd2
3 cephPool1 vm-106-disk-0 Backup28102019 /dev/rbd3

et enfin :

mount /dev/rbd/cephPool1/vm-106-disk-0@Backup28102019 /mnt/borg/

==> mount: /dev/rbd3 is write protected, ans will b e mount in read only (OK ! good)
mount: impossible to mount /dev/rbd3 in read only (ouchhhhhh !!!)

dmesg|tail

==>
[1342340.220678] EXT4-fs (rbd3): Unrecognized mount option « nouuid » or missing value
[1342354.756600] EXT4-fs (rbd3): Unrecognized mount option « nouuid » or missing value
[1342407.463896] EXT4-fs (rbd3): INFO: recovery required on readonly filesystem
[1342407.463898] EXT4-fs (rbd3): write access unavailable, cannot proceed (try mounting with noload)
[1342864.427501] rbd: rbd3: capacity 34359738368 features 0x1
[1342873.906068] EXT4-fs (rbd3): INFO: recovery required on readonly filesystem
[1342873.906070] EXT4-fs (rbd3): write access unavailable, cannot proceed (try mounting with noload)
[1343242.451830] rbd: rbd3: capacity 34359738368 features 0x1
[1343285.621429] EXT4-fs (rbd3): INFO: recovery required on readonly filesystem
[1343285.621430] EXT4-fs (rbd3): write access unavailable, cannot proceed (try mounting with noload)

Si vous avez une idée ?

trouvé ! (forum proxmox, souci sur option de montage)

Pour ceux qui veulent bosser sur le système de fichier du CT (LXC, conteneur) via le snapshot fait par proxmox (sur du Ceph/RBD …), comme çà a on peut faire les backup en pleine production , en pleine journée … (à condition d’avoir bien monté son cluster avec un réseau dédié à la sauvegade)

  • mkdir -p /mnt/borg/<CT_ID>

  • pct snapshot <CT_ID> BorgSnap_date --description « CT SnapShot for BorgBackup »

  • (verify command) : pct listsnapshot <CT_ID>

  • rbd map --read-only cephPool/vm-id-disk-x@BorgSnap_date

  • (verify command) : rbd showmapped

  • mount -o noload /dev/rbd/cephPool/vm-id-disk-x@BorgSnap_date /mnt/borg/<CT_ID>

  • (verify command) : ls -alh /mnt/borg/<CT_ID>

  • umount /mnt/borg/<CT_ID>

  • sync

  • rbd unmap cephPool/vm-id-disk-x@BorgSnap_date

  • sync

  • (verify command) : rbd showmapped ==> snapshot must not be listed !

  • pct delsnapshot <CT_ID> BorgSnap_date ==> BIEN LIBERER les SNAPSHOT (sinon souci!)

  • sync

  • pct listsnapshot <CT_ID>

Le forum me bouffe la moitié des caractères … <>

je suis en train de bien regarder le cli, de vzdump … (en plus de snapshot)

Question si tu dumpes un NextCloud (ou un seafile) de 900Go (et plus!) : auras tu de la place pour le fichier tmp pour la compression ?

Je vais tenter d’implémenter le backup via un snapshot mais c’est pas parfait.
« snapshot mode
This mode provides the lowest operation downtime, at the cost of a small inconstancy risk. It works by performing a Proxmox VE live backup, in which data blocks are copied while the VM is running. If the guest agent is enabled (agent: 1) and running, it calls guest-fsfreeze-freeze and guest-fsfreeze-thaw to improve consistency. »

le « small inconstancy » : pas glop du tout.

Avez vzdump vous n’avez pas des problèmes d’IO? je backup mes containers LXC avec un backup mode: snapshot sur le serveur de sauvegarde d’OVH mais cela me génère un IO proche de 100% ce qui n’est pas top en terme de performance… Vous n’avez pas constaté ce type de problème?

ma config vzdump:

tmpdir: /var/lib/vz/tmp_backup
bwlimit: 10000
exclude-path: "/tmp/?*""

Quelle est ton offre chez ovh ? (les io … avec les offres bas prix … )

j’ai un dédié à 100€ par mois avec la config suivante:

Serveur SP-64 - Xeon E3-1270v6 - 64GB - SoftRaid 2x2To

Et VPS Proxmox VE 5 (ZFS)