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

19

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

geoffc
fonte

Respostas:

17

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

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

Captura de tela do sistema de arquivos FUSE em ação

Naturalmente, nenhum desses arquivos realmente existe; quando lssolicitado, a lista de arquivos no diretório FUSE chamou uma função no meu programa que fez uma solicitação de API para este site para carregar informações sobre o usuário 73 (eu); cattentando ler display_namee website_urlchamou mais funções que retornaram os dados em cache da memória, sem nada realmente existente no disco

Michael Mrozek
fonte
3
Existem implementações de FAT do FAT , NTFS , iso9660 , ext2 e muito mais .
Gilles 'SO- stop be evil'
2
Você encontrará sistemas de arquivos pesados ​​implementados no fusível: LessFS, GlusterFS, MooseFS. O GFS do Google (não o POSIX) também é executado no espaço do usuário.
Tobu
Onde você encontrou esse aplicativo?!?!
Nathan Osman
4
@ George Eu escrevi quando estava mexendo com a API SO. Ele não usa nenhuma rota, exceto / users, então você está basicamente vendo todos os recursos implementados nessa captura de tela; era só para ver quão difícil seria
Michael Mrozek
5
@George Coloquei no github
Michael Mrozek
19

Os sistemas de arquivos Unix são tradicionalmente implementados no kernel. O FUSE permite que os 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 precisa ser carregado de algum lugar).
  • Eles são mais robustos, pois não desaparecem devido a um processo travando ou sendo mortos por engano.
  • Eles são um pouco mais rápidos.

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

  • Eles podem ser carregados e montados por usuários comuns, portanto, são convenientes para sistemas de arquivos que os usuários tendem a montar sozinhos: para acesso à rede, para passar por arquivos compactados, para mídia removível etc.
  • Se um driver do sistema de arquivos FUSE travar, ele não entrará em pânico no seu kernel: você 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 do FUSE para muitas linguagens de script em que um driver útil do sistema de arquivos do FUSE 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 os sistemas operacionais suportados .
  • Não há problemas de licenciamento relacionados ao vínculo estatístico com um kernel (isso está afetando o zfs ).
Gilles 'SO- parar de ser mau'
fonte
7

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 "se misture" com um código não GPL. Por exemplo, Gnu / Linux e ZFS http://zfs-fuse.net/ ou NTFS-3G em muitos sistemas operacionais, como o OpenSolaris e o * BSD http://www.tuxera.com/community/ntfs-3g-download/

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

jlliagre
fonte