Quais são os benefícios e desvantagens de usar sistemas de arquivos FuseFS?

16

Eu sei que alguns sistemas de arquivos se apresentam através do Fuse e fiquei me perguntando sobre os prós e contras dessa abordagem.

    
por geoffc 17.11.2010 / 14:49

3 respostas

12

Não tenho certeza se você quer dizer sistemas de arquivos reais ou em disco ou qualquer sistema de arquivos. Eu nunca vi um sistema de arquivos normal usar o FUSE, embora eu suponha que seja possível; O principal benefício do FUSE é que ele permite apresentar algo aos aplicativos (ou ao usuário) que se parece com um sistema de arquivos, mas apenas chama funções dentro de seu aplicativo quando o usuário tenta fazer coisas como listar os arquivos em um diretório ou criar um novo Arquivo. O Plan9 é bem conhecido por tentar tornar tudo acessível através do sistema de arquivos, e o /proc pseudo-filesystem vem deles; O FUSE é uma forma de as aplicações seguirem facilmente esse padrão

Por exemplo, aqui está uma captura de tela de um sistema de arquivos FUSE (muito sem recursos) que fornece acesso aos dados do site da SE:

Naturalmente, nenhum desses arquivos realmente existe; quando ls pediu a lista de arquivos no diretório FUSE chamou uma função no meu programa que fez uma requisição de API para este site para carregar informações sobre o usuário 73 (eu); cat tentando ler display_name e website_url chamou mais funções que retornavam os dados armazenados em cache da memória, sem que nada realmente existisse no disco

    
por 17.11.2010 / 15:56
15

Sistemas de arquivos Unix são tradicionalmente implementados no kernel. O FUSE permite que sistemas de arquivos sejam implementados por um programa do usuário.

Os sistemas de arquivos no kernel são mais adequados para os principais sistemas de arquivos para programas e dados:

  • Eles podem ser usados na mídia de inicialização (o programa que implementa um sistema de arquivos FUSE deve ser carregado de algum lugar).
  • Eles são mais robustos, pois não desaparecem devido a um processo que falha ou é morto por engano.
  • Eles são um pouco mais rápidos.

Os sistemas de arquivos FUSE têm outras vantagens, a maioria gira em torno de sua flexibilidade:

  • Eles podem ser carregados e montados por usuários comuns, então são convenientes para sistemas de arquivos que os usuários tendem a montar sozinhos: para acesso à rede, para arquivos, para mídia removível, etc.
  • Se um driver do sistema de arquivos FUSE travar, ele não entrará em pane em seu kernel: você não verá nada pior do que erros de E / S em aplicativos que estavam acessando o sistema de arquivos.
  • Eles podem ser programados muito rapidamente; existem ligações FUSE para muitas linguagens de script onde um driver de sistema de arquivos FUSE útil pode ser escrito em algumas centenas de linhas de código.
  • Eles podem ser implantados muito rapidamente, porque não há necessidade de intervenção do administrador para instalá-los e porque eles podem ser portados facilmente entre SOs suportados .
  • Não há problemas de licenciamento relacionados a estar estaticamente vinculado a um kernel (isso está afetando zfs ).
por 17.11.2010 / 23:22
4

O FUSE não é realmente um sistema de arquivos em si, mas um código que permite que os sistemas de arquivos sejam implementados como processos em vez de módulos do kernel.

Um dos benefícios mais úteis do FUSE é permitir que o código GPL "misture" com um código não GPL. Por exemplo, o link do link ou o NTFS-3G do ZFS em muitos SOs como OpenSolaris e * BSD link

A principal desvantagem é o impacto no desempenho comparado aos drivers nativos (kernel).

    
por 17.11.2010 / 23:09