Sauvegarder un dépôt de sauvegardes de Proxmox Backup Server

Durant les vacances d'été, j'ai pris le temps de penser à comment je peux améliorer ma façon de sauvegarder les données du serveur, en prenant en compte l'installation existante. J'ai fait pas mal de recherches pour ne pas trouver grand chose. Du coup, pour combler le vide que j'ai ressenti, je vais étayer comment j'ai fait une copie d'un dépôt de sauvegardes de Proxmox Backup.

Comment je sauvegarde ce beau monde ?

Pour sauvegarder le beau monde sur mon serveur, je suis passé par plusieurs solutions. Certaines façons étaient volumineuses, d'autres un peu douteuses, plus ou moins rapides à exécuter.

Pour n'en citer quelques unes:

  • Enregistrement des fichiers directements dans un dossier sur mon NAS à coup de vzdump;
  • Enregistrement des fichiers sur le serveur avec vzdump puis sauvegarde avec BorgBackup;
  • Idem que l'élément précédent, mais en passant par la case "extraction du fichier vma" avant de le passer dans BorgBackup.

La première allait bien, quoique volumineuse parce que plein de données dupliquées. La seconde allait encore, quoique que. La troisième n'était pas un échec, ça n'a pas très bien marché.

Pour finir, je me suis installé une machine virtuelle Proxmox Backup Server sur le serveur et j'ai configuré les choses comme il faut, tant du côté de l'hyperviseur que de la machine virtuelle. Le dépôt des sauvegardes se trouve donc sur le NAS. Ces sauvegardes de conteneurs et machines virtuelles sont très bien dédupliquées. En bref, ça fait le café.

Faire une copie de tout cela

J'ai des sauvegardes des containers et machines virtuelles du serveur. C'est bien. J'aimerais en faire une copie quelque part au cas où quelque chose arrive ou que j'ai besoin d'une relique.

La copie se fera sur un Raspberry Pi 4 qui suffira amplement pour ce cas d'usage. Ce Raspberry Pi aura un disque-dur externe connecté via USB.

Proxmox Backup Server sur un processeur ARM

Tout d'abord, j'ai regardé en vitesse sur les forums de Proxmox, histoire de voir si il y avait moyen d'installer le tout sur une machine avec un processeur ARM. J'ai trouvé un sujet qui parle du support d'ARM pour PBS1. Ils ne compte pas encore supporter l'architecture ARM puisqu'ils veulent d'abord stabiliser l'expérience sur les processeurs x86 / amd64. Je ne suis pas surpris de la réponse, considérant que la solution est "relativement" jeune.

J'ai essayé de comprendre comment ça se compilait parce que... uh... y'a pas d'instructions ou alors elles étaient vagues. J'ai fini par trouver des images Docker où je pouvais encore espérer avoir un truc qui marche. J'ai essayé une fois, erreur de compilation. J'essaye une autre "version", erreur de compilation. D'autres images sont pour des processeurs ARM64. Autant dire que j'ai laissé cette possibilité de côté.

En plus, avec les termes recherchés, c'était le désert, donc je suis passé à la solution que j'ai retenue ci-dessous.

Un rsync tout bête

Je me suis amusé à rsync le dépôt existant depuis le serveur de sauvegardes ─ donc depuis la machien virtuelle avec PBS ─ afin d'en faire une copie sur le disque-dur du Raspberry Pi. Le transfert de 100 GB de données a pris un peu de temps avec tous les petits fichiers, mais l'opération a quand même fini. En attendant, si elle ne finissait pas, il y aurait un petit problème quelque part.

La commande en question, pour les curieuses et curieux:

rsync -avh user@0.0.0.0:/chemin/vers/la/source/ /chemin/vers/la/destination

L'utilisateur, l'adresse, le dossier source et de destination sont évidemment à remplacer avec vos valeurs.

Maintenant que j'ai une copie, je voudrais y accéder d'une manière ou d'une autre.

Accéder à la copie

Afin d'accéder à la copie que j'ai faite du dépôt, j'ai utilisé l'installation existante de PBS, pour voir si ça fonctionnerait avant que j'installe une machine virtuelle pour ça de mon côté.

J'ai installé le serveur NFS sur le Raspberry Pi, configuré un dossier exporté dans /etc/exports, rechargé la configuration avec exportfs -ra. Ce dossier est ensuite monté dans le système de fichiers de la machine virtuelle avec mount 0.0.0.0:/chemin/vers/la/copie /chemin/vers/point-de-montage. Si tout se passe bien, vous devriez avoir accès au contenu de la copie depuis le client et voir que les fichiers ont retenu les attributs.

Du côté des configurations de PBS, il y a deux lignes à ajouter dans le fichier qui répertorie les datastores, /etc/proxmox-backup/datastore.cfg:

datastore: remote-repository
    path /chemin/vers/point-de-montage

Si tout est correct, vous devriez voir le datastore apparaître avec vos sauvegardes et vous pourrez interagir avec.

Pour "fermer" la copie, il faut faire l'opération inverse: enlever le dépôt de sauvegardes dans /etc/proxmox-backup/datastore.cfg puis démonter de force (umount -lf) le montage NFS. Si on ne précise pas -lf, umount ne va pas réaliser l'opération parce que le fichier .lock à la racine du dépôt est toujours ouvert par PBS.

Le mot de la fin

Au moins, j'aurai une copie du dépôt de sauvegarde, au cas où il arriverait quelque chose. Comme je ne trouvais vraiment pas grand chose dans mes recherches, une partie de la preuve de concept a été d'explorer différentes pistes afin d'arriver à une solution acceptable. La solution, de mon côté, est:

  • Copie régulière des fichiers du dépôt avec rsync, sans supprimer les fichiers existants qui ne seraient pas dans la source;
  • Accès avec une machine virtuelle sur une machine avec un processeur x86.

Je me suis également amusé à explorer les fichiers de ce dépôt histoire de voir comment ça fonctionne sous le capôt. Ça tombe bien, le format des fichiers binaires est fourni dans la documentation. Avec tout cela, il y a moyen de s'amuser.



  1. Proxmox Backup Server ↩︎