Montagem da União no Linux

11

Uma montagem de união apresenta uma visualização combinada de vários diretórios (ramificações) em uma única hierarquia. Ok, mas como eu uso um na prática e qual?

Muitas tecnologias de montagem em 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 quais são adequados? 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 deles podem ser montados /(com acesso root, é claro)?
  • Quais suportam a gravação nos ramos subjacentes? (Ou seja, se /fooe /barsão montados em união /union, posso escrever para /fooe /bar?)
  • Quais deles suportam políticas configuráveis ​​para gravações? (Por exemplo, posso enviar arquivos recém-criados para a ramificação B, mesmo que eu esteja obtendo conteúdo da ramificação A quando existe um arquivo nas duas ramificações?)
  • Quais suportam uma ordem de prioridade entre os ramos que depende dos arquivos? (Por exemplo, posso sempre obter o arquivo mais recente entre todos os ramos que o possuem?)

Exemplos de uso seriam apreciados.

Por favor, evite respostas que se concentrem em um ponto específico. Estou procurando respostas abrangentes que analisem o software disponível (algo semelhante a O que é uma montagem de ligação? ). Boas respostas serão recompensadas.

Gilles 'SO- parar de ser mau'
fonte

Respostas:

12

Em cada um dos pontos específicos:

  • Acesso à raiz: se ele usa o FUSE, não precisa de raiz; se não usa o FUSE, ele precisa de raiz, a menos que você faça uma configuração especial com recursos (potencialmente perigosos) ou espaços para nome.

  • Montagem /: Suponho que você queira dizer o sistema de arquivos raiz na inicialização; nesse caso, qualquer um deles que seja executado no modo kernel deve, em teoria, funcionar, embora alguns sejam mais confiáveis ​​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 propagar gravações para a vista montada até as ramificações inferiores, não faço ideia. Se você quer escrever os ramos inferiores fora de banda do próprio sistema de arquivos principal, tecnicamente todos os três grandes precisam, mas todos eles precisam de uma remontagem para garantir que a alteração seja propagada para a exibição montada.

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

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

Quanto a mais detalhes sobre cada um deles:

  • UnionFS: Até onde eu sei, essa foi a implementação original do sistema de arquivos empilhável para Linux. Ele existe há séculos e é usado por muitos LiveCDs do Linux. Ele é executado no modo kernel e requer que sejam utilizados patches no kernel upstream.

  • AUFS: Originado como uma bifurcação do UnionFS, e depois se tornou algo próprio. Este tentou obter a linha principal mesclada e foi rejeitado com base na qualidade do código. Ele substituiu o UnionFS em algumas distribuições de LiveCDs, principalmente derivados do Debian e Gentoo. Como o UnionFS, ele é executado no modo kernel e requer patches no kernel upstream.

  • OverlayFS: Eu não sei muito sobre o desenvolvimento original deste, além de ser suportado em alguns derivados do BSD também. É notavelmente a implementação do sistema de arquivos overlay / union upstream no kernel Linux. Também é executado no modo kernel.

  • UnionFS-FUSE: Este projeto de nome um tanto confuso não tem nada a ver com o UnionFS além de fornecer essencialmente a mesma funcionalidade. É a implementação FUSE mais amplamente usada de um sistema de arquivos union, mas é tudo o que sei sobre isso.

  • mhddfs: Este é um erro estranho, mais semelhante a uma implementação RAID-0 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 a serem observadas que não são específicas para uma implementação específica:

  • Todas as opções no kernel têm limitações sobre o que podem ser os sistemas de arquivos de backup, principalmente não trabalhando 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 sistemas de arquivos da união, mas é mais um problema do FUSE em geral.

Austin Hemmelgarn
fonte