Système de fichiers de déduplication au niveau bloc


8

Je suis à la recherche d'une solution de système de fichiers à copie sur écriture dédupliquée pour les données utilisateur générales telles que /homeet les sauvegardes. Il doit utiliser la déduplication en ligne / en ligne / synchrone au niveau du bloc en utilisant un hachage sécurisé (pour un risque négligeable de collisions) tel que SHA256 ou TTH . Les blocs en double n'ont même pas besoin de toucher le disque.

L'idée est que je devrais pouvoir simplement copier /home/<user>sur un disque dur externe avec le même système de fichiers pour faire une sauvegarde. Facile. Pas de problème avec les sauvegardes incrémentielles où la corruption de l'un des instantanés interrompra presque toujours tous les instantanés ultérieurs, et pas besoin d'utiliser un outil spécifique pour supprimer ou `` extraire '' un instantané. Tout doit simplement être fait à partir du navigateur de fichiers sans souci. Pouvez-vous imaginer à quel point cela serait facile? Je n'aurais plus jamais à réfléchir à la sauvegarde!

Cela ne me dérange pas un coup de performance, la fiabilité est la principale préoccupation. Bien que, avec des implémentations spécifiques de cp, mvet scp, et un plugin de navigateur de fichiers, ces opérations soient très rapides, surtout lorsqu'il y a beaucoup de duplication car elles n'auraient besoin que de transférer les blocs absents. L'utilisation accidentelle d'outils de copie conventionnels qui ne s'intègrent pas avec le FS prendrait plus de temps, gaspillerait une certaine bande passante lors de la copie à distance et gaspillerait un peu de CPU, car les données en double seraient relues, retransférées et hachées (bien que rien ne soit réécrit), mais ne corromprait absolument rien. (Certains logiciels de partage de fichiers peuvent également bénéficier de l'intégration avec le FS.)

Alors, quelle est la meilleure façon de procéder?

J'ai examiné quelques options:

  • lessfs - semble non entretenu. Tout est bon?
  • Opendedup / SDFS - Java? Puis-je l'utiliser sur Android?! Que signifie SDFS ?
  • Btrfs - Quelques correctifs flottant sur les archives de la liste de diffusion, mais aucun support réel.
  • ZFS - Avec un peu de chance, ils reviendront sous licence sous une vraie licence compatible GPL gratuite / Open Source.

Aussi, il y a 2 ans, j'ai tenté une tentative en Python en utilisant Fuse au niveau du fichier pour être utilisé par-dessus un FS solide typique tel que EXT4, mais j'ai trouvé Fuse for Python sous-documenté et je n'ai pas réussi à implémenter tous les appels système.


Pas un système de fichiers, mais vous voudrez peut-être regarder l'outil de sauvegarde Obnam récemment publié .
JanC

@JanC: Merci, il ressemble définitivement à un logiciel de sauvegarde bien fait! Cela évite ceci: "Pas de problème avec les sauvegardes incrémentielles où la corruption de l'un des snapshots cassera presque toujours tous les snapshots ultérieurs," ... mais pas ceci: "et pas besoin d'utiliser un outil spécifique pour supprimer ou 'checkout' un instantané.". Certainement une bonne trouvaille! Je pourrais peut-être travailler avec une partie du code Python. :-)
James Haigh

@JamesHaigh Vous pouvez également publier cette idée dans Ubuntu BrainStorm ; si vous ne l'avez pas déjà fait.
Samik

@JamesHaigh l'une des choses sur la feuille de route Obnam est un système de fichiers basé sur des fusibles (mais je ne pense pas qu'il y ait une chronologie indiquant quand s'y attendre). Cela ne rapprocherait "aucun outil supplémentaire".
JanC

Si vous voulez éviter la corruption d'une sauvegarde en cassant ces dernières, vous faites simplement une sauvegarde incrémentielle multi générationnelle. Au lieu de faire un plein dimanche et un différentiel quotidien toujours relatif à la veille, vous faites par exemple mercredi une sauvegarde incrémentielle par rapport à la pleine dimanche (plutôt que mardi). Ensuite, si mardi est corrompu, vous ne vous en souciez pas, car si vous avez la sauvegarde de mercredi, vous sautez lundi et mardi lors de la restauration.
psusi

Réponses:


1

Cela semble très entreprise (comme cher).

datadomain offre la déduplication des données, et peut-être netapp avec leur système de fichiers wafl. Mais à un coût élevé.

Une alternative "gratuite" pourrait être zfs.

Selon moi, la «meilleure» et la plus alternative Linuxy, bien qu'au niveau du fichier au lieu du «niveau du bloc», serait rsnapshot. Il utilise rsync et hardlinks pour gérer le contrôle de version.

Je fais plutôt confiance à de vieux outils éprouvés qu'à l'utilisation de nouveaux systèmes de fichiers comme Btrfs qui n'existent pas depuis assez longtemps pour que les gens découvrent toutes sortes de bugs.


Entreprise? Non, c'est plus le genre de chose que je m'attendrais à voir par défaut dans Ubuntu à l'avenir en raison de sa simplicité d'utilisation. J'ai mentionné ZFS mais c'est CDDL donc pas gratuit avec un F. majuscule rsnapshotn'est pas un système de fichiers, c'est plus un hack pour apporter des fonctionnalités de type instantané aux systèmes de fichiers hérités, ne crée pas de «vrais» instantanés (les instantanés sont censés être atomiques ) et incrémentiel (voir 2e paragraphe). Je préfère utiliser un FS relativement nouveau que quelque chose qui utilise des incrémentaux.
James Haigh

Je suppose que «niveau fichier» est un peu ambigu, mais j'ai vu le terme utilisé dans le contexte des systèmes de fichiers avec niveau bloc, niveau octet et niveau bit. C'était le contexte dans lequel je le pensais.
James Haigh

1
@JamesHaigh Selon la Free Software Foundation , le CDDL est une licence libre (comme en toute liberté), il n'est tout simplement pas compatible GPL . Cela signifie que le code de CDDL (comme l'implémentation ZFS officielle) et le code de GPL (comme le noyau Linux) ne peuvent pas être légalement liés ensemble , et puisque les pilotes sous Linux sont généralement liés en tant que modules, ce qui entrave la prise en charge CDDL dans les systèmes d'exploitation Linux.
Eliah Kagan

2
ZFS sous Linux peut éventuellement (dépend de qui vous demandez) contourner ce problème en étant distribué séparément . Alternativement, FUSE permet aux "pilotes" du système de fichiers de fonctionner dans l'espace utilisateur où ils n'ont pas besoin de se lier eux-mêmes au noyau, et il existe également une version FUSE de ZFS . Vous avez donc plusieurs options pour utiliser les systèmes de fichiers ZFS sur des systèmes d'exploitation comme Ubuntu qui utilisent Linux comme noyau. (Certains systèmes d'exploitation, comme Debian, vous permettent d'utiliser un noyau différent.)
Eliah Kagan

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.