solution de sauvegarde compatible btrfs

14

Alors que btrfs atteignait la production dans Oracle EL 14th ce mois-ci (avec fsck et scrubbing sous Linux 3.2), je pensais repenser ma solution de sauvegarde actuelle pour l'utiliser. Notez que je pense à le faire pour de petites quantités de données, moins de 10 To, c'est assez statique (moins de 1% changé quotidiennement). En bref, une solution de sauvegarde SMB / SOHO.

Ce que la sauvegarde doit faire:

  1. faire un instantané LVM de l'ext [234] / XFS / JFS sur le serveur de production
  2. rsync/ transférer les données modifiées vers btrfs sur le serveur de sauvegarde
  3. instantané du système de fichiers btrfs
  4. supprimer d'anciens instantanés lorsque l'espace disponible est faible

Avantages:

  • Tous les fichiers sont facilement disponibles, aucune décompression ou montage en boucle nécessaire
  • Des instantanés passés également facilement disponibles ...
  • ... afin que je puisse les partager en tant que partages Samba en lecture seule (avec prise en charge des clichés instantanés)
  • Les instantanés prennent un minimum d'espace grâce à la copie sur écriture (l'instantané sans modifications prend littéralement peu de Kio sur le disque)
  • Haute cohérence de sauvegarde: sommes de contrôle sur les fichiers, nettoyage de toutes les données et redondance intégrée

Des questions:

  • Existe-t-il une solution de sauvegarde (sous la forme de Bacula, BackupPC, etc.) qui est ou peut être facilement mise au courant du système de fichiers de copie sur écriture?
  • Ou devrais-je utiliser une rsyncsolution à domicile ?
  • Que font les personnes disposant de boîtes ZFS dédiées à la sauvegarde pour sauvegarder leurs machines Linux?
Hubert Kario
la source
Je ne vois pas cons! L'un d'eux serait que les instantanés Btrfs ne sont équivalents qu'aux sauvegardes incrémentielles (pas de copie physique par sauvegarde de votre fichier sur le disque). Ce qui pourrait être important face aux problèmes de surface du disque. Notez que vous pouvez forcer une duplication avec le support RAID1 natif inclus dans Btrfs.
vaab
1
@vaab: c'est un pro- plus de deux copies ne sont pas vraiment nécessaires si vous avez des sommes de contrôle et que vous nettoyez activement le FS, trois viendront probablement avec le support RAID6. Comme je l'ai dit, c'est une configuration pour un système de sauvegarde dédié, pas des copies de «sauvegarde» à l'intérieur du FS sur un seul ordinateur. Ce serait "RAID n'est pas une sauvegarde" et "les instantanés ne sont pas une sauvegarde". cp -aet rsyncc'est pour ça ...
Hubert Kario
J'envisage également de sauvegarder sur btrfs, mais je ne pensais qu'à rsync -a --delete /home/user /mnt/butterfs/backups/ && snapper create- en plus de créer un instantané après la sauvegarde, que voulez-vous dire par COW-aware?
unhammer
1
@unhammer: en utilisant rsyncsans --inplacevous obtiendrez plusieurs copies des mêmes données dans le système de fichiers distant. (rsync copie normalement les données dans un fichier caché temporaire puis les déplace sur l'ancien fichier, avec un système de fichiers Copy-On-Write, vous obtenez deux copies sur les données inchangées de cette façon)
Hubert Kario

Réponses:

5

J'ai fait des recherches approfondies la semaine dernière pour quelque chose de similaire. Je n'ai trouvé aucune solution pour faire les 4 étapes. Il existe de nombreux blogs d'utilisateurs à domicile qui essaient le type de sauvegarde « rsync to btrfs », et tous les principaux wikis Btrfs expliquent comment effectuer des instantanés Btrfs.

Il y a aussi pas mal de gens qui essaient différentes façons de faire tourner les instantanés Btrfs . Cependant, vous êtes la première personne que j'ai vue à vouloir faire pivoter des instantanés en fonction de l'espace disque. Je joue avec btrfs-snap moi - même, ce qui crée un ensemble d'instantanés horaires, hebdomadaires et mensuels, et c'est agréable et simple.

Le projet Dirvish semble répondre à bon nombre de vos exigences. Certains développeurs tentent d' intégrer Dirvish à Btrfs . Cependant, le projet Dirvish semble un peu au point mort .

À ce stade, vous êtes en avance sur la courbe.

Stefan Lasiewski
la source
Eh bien, je veux juste une solution de sauvegarde aussi simple que BackupPC: lorsque l'espace disque est faible, il supprime simplement les anciennes données (anciens instantanés). Alors que j'avais peur d'être en avance sur la courbe, ce n'est pas comme si ZFS n'était pas avec nous depuis quelques années ...
Hubert Kario
3

Selon Avi Miller (son discours lors de LinuxConf.AU), un envoi / réception btrfs est en cours d'élaboration. Ce sera plus rapide que rsync car il n'a pas besoin de parcourir les répertoires pour trouver des changements dans les fichiers .. Je ne sais pas encore s'il y a une date de sortie prévue.

Il existe cependant un utilitaire intégré à btrfs-progs qui répertorie tous les fichiers qui ont changé entre les instantanés / etc .. sous-volume btrfs find-new

emprunter
la source
2
Je veux sauvegarder sur btrfs, pas depuis ...
Hubert Kario
2

Je travaille sur un système de sauvegarde OS similaire à BackupPC. J'y ai pensé. Ce qui m'a empêché de l'implémenter, c'est que vous ne pouvez pas créer de lien dur entre les sous-volumes. Vous ne pouvez également créer que des instantanés de sous-volumes -> Un sous-volume par client de sauvegarde. Ainsi, la fonction de déduplication au niveau des fichiers ne peut pas coexister avec cette approche. Et cette déduplication au niveau des fichiers économise généralement beaucoup d'espace. Voulez-vous sauvegarder un seul serveur?

Si btrfs avait une déduplication au niveau du bloc, ce problème peut probablement être évité, mais c'est généralement insupportablement lent aussi ...

Une telle approche impliquerait bien sûr une intégration étroite avec un seul système de fichiers (btrfs), donc cela devrait être une fonctionnalité optionnelle.

Je demande parce que je pense à ajouter une telle fonctionnalité de vache, mais je ne sais pas si je devrais le faire en raison des inconvénients énumérés ci-dessus.

Edit: UrBackup prend en charge les sauvegardes comme décrit dans la question maintenant avec les noyaux Linux> = 3.6 (avec prise en charge de la redistribution croisée des volumes). Découvrez comment le configurer.

UrOni
la source
1
la copie de redistribution inter-sous-volume (un lien semi-dur fait par cp --reflink) est déjà implémentée ou le sera dans un avenir proche. La déduplication en ligne dans FS est lente (lessfs) ou nécessite d'énormes quantités de RAM (ZFS), donc en fonction de ce serait vraiment une mauvaise fonctionnalité dans le logiciel de sauvegarde. Quoi qu'il en soit, le logiciel de sauvegarde orienté btrfs aura un large public, il est censé être le prochain ext3 après tout.
Hubert Kario
Une dernière chose: vous pouvez contourner ce problème en gardant tous les serveurs dans un sous-volume - vous pouvez redéfinir la copie entre eux (pour la déduplication) tout en préservant la capacité de capture instantanée. Vous n'avez qu'à faire un instantané après la déduplication, vous pouvez toujours prendre un instantané après avoir sauvegardé un seul serveur! Les sauvegardes ne prendront pas plus d'espace si vous effectuez les sauvegardes une par une. Alternativement, vous pouvez sauvegarder tous les serveurs, la déduplication et uniquement l'instantané. De cette façon, vous pouvez sauvegarder plusieurs serveurs en même temps.
Hubert Kario
Tu as raison. Je n'y ai pas pensé. Pour plus de commodité, vous pouvez ensuite créer un lien symbolique vers les bons instantanés dans un autre volume. J'ai également vu un correctif pour le lien dur multi-volume (ou --reflink) mais il ne semblait pas qu'il l'ait fait / ou le fera sur la ligne principale. Je vais vraiment me pencher là-dessus! Maintenant, vous faites probablement vos sauvegardes sur ssh. Mon projet est spécialisé pour les réseaux locaux ... (découverte automatique et ainsi de suite)
UrOni
Oui, le patch est vivant et fonctionne, malheureusement pas en ligne principale, je ne sais pas pourquoi. J'essaie de déranger Chris Mason à ce sujet. Quant à votre projet, n'hésitez pas à m'envoyer une ligne, je me ferai un plaisir de le bêta-tester (si le temps le permet). Cela semble vraiment intéressant.
Hubert Kario
Enfin, ce correctif a atterri dans le noyau Linux principal 3.6. Avec le reflink multi-appareils, ce n'était pas vraiment beaucoup de travail. J'ai écrit ici à ce sujet: urbackup.org/blog/?p=83 Le code est dans la branche "suivante" du dépôt git. Je le teste actuellement.
UrOni
1

La page wiki " Cas d'utilisation " de btrfs répertorie certains outils: SnapBtr , Snapper, btrfs-time-machine, UrBackup.

Il y a une proposition pour un outil intégré appelé autosnap :

En utilisant la fonction de capture automatique, vous pouvez configurer btrfs pour prendre des instantanés réguliers ou basés sur des événements et gérer davantage les instantanés automatiquement.

Le snap automatique ne consiste pas seulement à prendre le snapshot, mais également à gérer les snapshots créés.À partir de maintenant, vous pouvez configurer le snap automatique pour supprimer les snapshots en fonction de l'espace utilisé par le système de fichiers.

Cependant, depuis octobre 2013, le wiki déclare que "La fonctionnalité de capture automatique n'est actuellement pas incluse dans la version amont de btrfs."

ignis
la source
1

J'avais des frustrations similaires, alors j'ai fini par créer quelques scripts que j'appelle snazzer . Ensemble, ils offrent des instantanés, l'élagage, la mesure et le transport via ssh (mais à partir d'aujourd'hui peuvent également envoyer / recevoir vers / depuis des systèmes de fichiers locaux). Les mesures ne sont que des rapports de signatures sha512sum et PGP de chemins d'instantanés. Ce n'est pas tout à fait prêt pour la sortie, mais j'aimerais entendre des commentaires si quelqu'un a le temps de le revoir à ce stade précoce.

CLI-seulement à ce moment, mais je l' ai pris un peu de temps pour le rendre facile à utiliser sur les systèmes avec beaucoup btrfs sous - volumes - En général , j'ai séparés pour les sous - volumes /var/cache, /homeetc. qui peuvent avoir besoin d'être exclus de ou avoir plus d' instantanés / moins calendriers de taille agressifs.

Je crains que l'algorithme d'élagage ne prenne uniquement des décisions sur la présence de l'ensemble d'instantanés et de leurs dates, rien n'est là pour continuer l'élagage jusqu'à ce qu'une contrainte d'utilisation du disque soit respectée - que supprimez-vous en premier? Réduisez d'abord le nombre d'heures ou d'heures de jour? Peut-être laisser tomber le plus ancien, par exemple. les yearlies? Différents déploiements auront des priorités différentes; et je ne peux pas savoir s'il s'agit du seul niveau de sauvegarde (auquel cas vous ne devriez pas supprimer les sauvegardes les plus anciennes en cas d'obligations légales / d'assurance), ou simplement intermédiaire (dans ce cas, vous avez probablement ces yearlies archivés dans un endroit sûr autre part).

Je vais ajouter le support et / ou l'interopérabilité ZFS à un moment donné; il est écrit principalement en shell posix-ish et en perl en raison d'un fort désir de dépendances «nulles» pour le moment, j'espère avoir une implémentation alternative plus propre en python maintenue en parallèle à un moment donné.

csirac2
la source
à moins que votre FS ne soit très volumineux et change souvent, il y a très peu de différence entre conserver un instantané il y a un mois et seulement 1 par jour depuis la semaine dernière par rapport à un par jour pour tout le mois - btrfs devra stocker la différence entre état actuel et celui du mois dernier de toute façon - je ne garde que les quotidiens, mais parce que c'est compressé et différent, je peux les garder pendant six mois facilement - puis laisser tomber les garanties les plus anciennes pour libérer au moins un peu d' espace
Hubert Kario
Eh bien, j'ai un nombre non négligeable de machines virtuelles à suivre - certaines avec de gros fichiers transitoires (c'est-à-dire des instantanés avec des étendues uniques) qui, comme vous l'avez suggéré, peuvent bénéficier de l'élagage des instantanés intermédiaires. Donc, même s'il est vrai que l'élagage des intermédiaires ne libère pas autant de disque que la suppression des plus anciens, que puis-je dire ... garder uniquement le nombre minimum d'instantanés et le faire avec le système de fichiers COW comme btrfs semble être à peu près aussi efficace qu'il obtient, mais je me rends compte qu'il y a plus à choisir une solution appropriée que cela :)
csirac2
@ csirac2 êtes-vous maintenante snazzer? Je recherche ce type de solution. Je suis intéressé par snazzer s'il est activement entretenu. GitHub ne semble pas montrer d'activité récente ...
MountainX-for-Monica
@MountainX Quand je n'ai pas eu beaucoup de commentaires initiaux sur snazzer, j'ai en quelque sorte perdu l'enthousiasme .. Quand j'ai commencé à l'écrire, il n'y avait vraiment que le snapper d'OpenSUSE et une poignée de scripts shell / python flottant pour automatiser les btrfs. Au moment où je me suis mis à le partager avec le monde, de nombreuses autres options sont apparues, et je dirais que btrbk semble avoir beaucoup d'élan (le manque de tests automatisés [peut-être réparé maintenant?] Était cependant préoccupant). Si je devais tout recommencer, j'aurais probablement collaboré avec l'auteur de sanoid pour y ajouter la compatibilité btrfs. Intéressé à entendre vos pensées.
csirac2