União montada no Linux

8

Uma união montada apresenta uma visão combinada de vários diretórios (filiais) em uma única hierarquia. Ok, mas como eu uso um na prática e qual deles?

Muitas tecnologias de montagem de união estão disponíveis em um sistema Linux moderno: OverlayFS , aufs , UnionFS , vários sistemas de arquivos baseados em FUSE,…

Dado um caso de uso, como decido qual (is) são adequados (s)? Em particular:

  • Quais requerem acesso root em um sistema típico? (Em outras palavras, um usuário sem privilégios pode criar uma montagem de união?)
  • Quais podem ser montados em / (com acesso root, é claro)?
  • Quais suportam escrever para os ramos subjacentes? (Por exemplo, se /foo e /bar forem montados em união para /union , posso gravar em /foo e /bar ?)
  • Quais deles suportam políticas configuráveis para gravações? (Por exemplo, posso enviar arquivos recém-criados para ramificar B mesmo que eu esteja recebendo conteúdo da ramificação A quando existe um arquivo em ambas as ramificações?)
  • Quais suportam uma ordem de prioridade entre filiais que depende dos arquivos? (Por exemplo, posso sempre obter o arquivo mais novo entre todos os ramos que o possuem?)

Exemplos de uso seriam bem-vindos.

Por favor, evite respostas que se concentram em um ponto específico. Estou à procura de respostas abrangentes que analisem o software disponível (algo semelhante a O que é um bind montar? ). Boas respostas serão recompensadas.

    
por Gilles 11.05.2016 / 01:59

1 resposta

8

Em cada um dos pontos específicos:

  • Acesso root: Se ele usa o FUSE, ele não precisa de root, se não usa o FUSE, ele precisa de root, a menos que você faça uma configuração especial com recursos (potencialmente perigosos) ou namespaces.

  • Montagem em / : Suponho que você queira dizer como o sistema de arquivos raiz na inicialização, caso em que qualquer um deles executado em modo kernel deve, em teoria, funcionar, embora alguns sejam mais confiáveis do que outros. A maioria dos LiveCDs faz isso, então é aqui que eu sugiro procurar informações sobre esse ponto específico.

  • Escrevendo para os ramos subjacentes: Isso depende do que você quer dizer. Se você quer dizer a propagação de gravações para a vista montada até os ramos inferiores, não faço ideia. Se você quer escrever para os ramos inferiores fora de banda do sistema de arquivos principal, tecnicamente todos os três grandes fazem, mas todos eles requerem uma remontagem para garantir que a mudança seja propagada para a visão montada.

  • Políticas de gravação configuráveis: Eu não sei especificamente sobre isso, mas acho que as grandes 3 (UnionFS, AUFS e OverlayFS) não suportam isso.

  • Ordem de prioridade dependente do arquivo: Eu acho que esse tipo também se enquadra na terceira subquestão, e como lá, eu não conheço nenhum que suporte especificamente isso.

Quanto a alguns detalhes mais específicos sobre cada um deles:

  • UnionFS: Até onde eu sei, esta foi a implementação do sistema de arquivos unificado empilhável original para Linux. Ele existe há muito tempo e é usado por muitos LiveCDs do Linux. Ele é executado no modo kernel e requer correções para o kernel upstream a ser usado.

  • AUFS: Originado como uma bifurcação do UnionFS, e depois meio que se tornou algo próprio. Este tentou obter mainline mesclado e foi rejeitado com base na qualidade do código. Ele substituiu o UnionFS em alguns LiveCD's da distro, principalmente Debian e derivados do Gentoo. Como o UnionFS, ele é executado no modo kernel e requer correções no kernel upstream.

  • OverlayFS: Eu não sei muito sobre o desenvolvimento original deste, além de ser apoiado em um par de derivativos BSD também. É notavelmente a implementação de uplay / union filesystem upstream no kernel do Linux. Ele também é executado no modo kernel.

  • UnionFS-FUSE: Esse projeto, de certa forma confuso, na verdade não tem nada a ver com o UnionFS, além de fornecer essencialmente a mesma funcionalidade. É a implementação do FUSE mais amplamente utilizada de um sistema de arquivos de união, mas isso é tudo que eu sei sobre isso.

  • mhddfs: Este é um valor atípico estranho que é mais parecido com uma implementação de raid0 de granularidade de arquivo do que um sistema de arquivos de união convencional. Ele suporta o balanceamento de arquivos em vários diretórios de backup com base no uso de espaço. Também é baseado em FUSE.

Algumas coisas específicas para observar que não são específicas de uma implementação específica:

  • Todas as opções no kernel têm limitações sobre o que os sistemas de arquivos de apoio podem ser, mais notavelmente não trabalhar com sistemas de arquivos em rede ou BTRFS.

  • Todas as implementações do FUSE têm problemas quando usadas como um sistema de arquivos raiz. Isso não é específico para implementações de sistema de arquivos de união, mas é mais um problema com o FUSE em geral.

por 17.08.2017 / 19:39