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:
- faire un instantané LVM de l'ext [234] / XFS / JFS sur le serveur de production
rsync
/ transférer les données modifiées vers btrfs sur le serveur de sauvegarde- instantané du système de fichiers btrfs
- 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
rsync
solution à domicile ? - Que font les personnes disposant de boîtes ZFS dédiées à la sauvegarde pour sauvegarder leurs machines Linux?
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.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 -a
etrsync
c'est pour ça ...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?rsync
sans--inplace
vous 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)Réponses:
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.
la source
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
la source
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.
la source
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.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 :
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."
la source
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
,/home
etc. 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é.
la source