Montage Union sur Linux

11

Un montage union présente une vue combinée de plusieurs répertoires (branches) dans une même hiérarchie. Ok, mais comment en utiliser un en pratique et lequel?

De nombreuses technologies de montage union sont disponibles sur un système Linux moderne: OverlayFS , aufs , UnionFS , divers systèmes de fichiers basés sur FUSE,…

Étant donné un cas d'utilisation, comment puis-je décider lequel convient le mieux? En particulier:

  • Lesquels nécessitent un accès root sur un système typique? (En d'autres termes, un utilisateur non privilégié peut-il créer une monture union?)
  • Lesquels peuvent être montés /(avec un accès root bien sûr)?
  • Lesquelles prennent en charge l'écriture dans les branches sous-jacentes? (C'est-à-dire si /fooet /barsont montés sur union /union, puis-je écrire sur /fooet /bar?)
  • Lesquelles prennent en charge les stratégies configurables pour les écritures? (Par exemple, puis-je envoyer des fichiers nouvellement créés à la branche B même si je reçois du contenu de la branche A lorsqu'un fichier existe sur les deux branches?)
  • Lesquelles prennent en charge un ordre de priorité entre les branches qui dépend des fichiers? (Par exemple, puis-je toujours obtenir le fichier le plus récent parmi toutes les branches qui l'ont?)

Des exemples d'utilisation seraient appréciés.

Veuillez éviter les réponses qui se concentrent sur un point spécifique. Je cherche des réponses complètes qui examinent le logiciel disponible (quelque chose de similaire à Qu'est-ce qu'un montage de liaison? ). De bonnes réponses seront générées.

Gilles 'SO- arrête d'être méchant'
la source

Réponses:

12

Sur chacun des points spécifiques:

  • Accès root: s'il utilise FUSE, il n'a pas besoin de root, s'il n'utilise pas FUSE, il a besoin de root, sauf si vous effectuez une configuration spéciale avec des capacités (potentiellement dangereuses) ou des espaces de noms.

  • Montage /: je suppose que vous voulez dire en tant que système de fichiers racine au démarrage, auquel cas tous ceux qui s'exécutent en mode noyau devraient en théorie fonctionner, bien que certains soient plus fiables que d'autres. La plupart des LiveCD font cela, c'est donc là que je suggère de rechercher des informations sur ce point particulier.

  • Écrire dans les branches sous-jacentes: cela dépend de ce que vous voulez dire. Si vous voulez dire propager des écritures dans la vue montée jusqu'aux branches inférieures, je n'en ai aucune idée. Si vous voulez écrire sur les branches inférieures hors bande à partir du système de fichiers principal lui-même, techniquement tous les trois grands le font, mais ils nécessitent tous un remontage pour s'assurer que le changement est propagé à la vue montée.

  • Politiques d'écriture configurables: je ne sais pas spécifiquement à ce sujet, mais je pense que les 3 grands (UnionFS, AUFS et OverlayFS) ne le prennent pas en charge.

  • Ordre de priorité dépendant du fichier: je pense que ce type de problème relève également de la troisième sous-question, et comme là-bas, je n'en connais aucun qui le soutienne spécifiquement.

En ce qui concerne plus de détails sur chacun d'eux:

  • UnionFS: Autant que je sache, il s'agit de l'implémentation du système de fichiers union empilable d'origine pour Linux. Il existe depuis des siècles et est utilisé par de nombreux LiveCD Linux. Il s'exécute en mode noyau et nécessite l'utilisation de correctifs pour le noyau en amont.

  • AUFS: originaire d'une fourchette d'UnionFS, puis est devenu en quelque sorte sa propre chose. Celui-ci a tenté de fusionner la ligne principale et a été rejeté pour des raisons de qualité du code. Il a remplacé UnionFS dans certaines distributions de LiveCD, principalement des dérivés Debian et Gentoo. Comme UnionFS, il fonctionne en mode noyau et nécessite des correctifs pour le noyau en amont.

  • OverlayFS: Je ne sais pas grand-chose sur le développement original de celui-ci, à part le fait qu'il soit également supporté par quelques dérivés BSD. C'est notamment l'implémentation du système de fichiers overlay / union en amont dans le noyau Linux. Il fonctionne également en mode noyau.

  • UnionFS-FUSE: Ce projet au nom quelque peu déroutant n'a en fait rien à voir avec UnionFS, à part fournir essentiellement les mêmes fonctionnalités. C'est l'implémentation FUSE la plus largement utilisée d'un système de fichiers union, mais c'est à peu près tout ce que je sais à ce sujet.

  • mhddfs: Celui-ci est une étrange valeur aberrante qui s'apparente plus à une implémentation RAID-0 de granularité de fichier qu'à un système de fichiers union classique. Il prend en charge l'équilibrage des fichiers sur plusieurs répertoires de sauvegarde en fonction de l'utilisation de l'espace. Il est également basé sur FUSE.

Quelques points spécifiques à noter qui ne sont pas spécifiques à une implémentation particulière:

  • Toutes les options du noyau ont des limites sur ce que peuvent être les systèmes de fichiers de support, notamment ne fonctionnant pas avec les systèmes de fichiers en réseau ou BTRFS.

  • Toutes les implémentations FUSE ont des problèmes lorsqu'elles sont utilisées comme système de fichiers racine. Ce n'est pas spécifique aux implémentations d'un système de fichiers union, mais c'est plus un problème avec FUSE en général.

Austin Hemmelgarn
la source