Sei que alguns sistemas de arquivos se apresentam por meio do Fuse e queria saber os prós e contras dessa abordagem.
Resposta
Não tenho certeza se você quer dizer sistemas de arquivos reais em disco ou qualquer sistema de arquivos. Nunca vi um sistema de arquivos normal usar FUSE, embora suponha que seja ” é possível; o principal benefício do FUSE é permitir que você apresente algo aos aplicativos (ou ao usuário) que se pareça com um sistema de arquivos, mas na verdade apenas chama funções dentro do seu aplicativo quando o usuário tenta fazer coisas como listar os arquivos em um diretório ou crie um novo arquivo. Plan9 é bem conhecido por tentar tornar tudo acessível através do sistema de arquivos, e o /proc
pseudo -Sistema de arquivos vem deles; FUSE é uma maneira para os aplicativos seguirem facilmente esse padrão
Por exemplo, aqui está uma captura de tela de um sistema de arquivos FUSE (sem características) que dá acesso aos dados do site SE:
Naturalmente, nenhum desses arquivos realmente existe; quando ls
pediu a lista de arquivos no diretório FUSE chamou uma função em meu programa que fez uma solicitação de API a este site para carregar informações sobre o usuário 73 (eu); cat
tentando ler de display_name
e website_url
chamou mais funções que retornaram os dados em cache de memória, sem nada realmente existente no disco
Comentários
- Existem implementações FUSE de FAT , NTFS , iso9660 , ext2 e mais .
- Você encontrará sistemas de arquivos pesados implementados no fusível: LessFS, GlusterFS, MooseFS . Google ' s GFS (não POSIX) também é executado no espaço do usuário.
- Onde você encontrou esse aplicativo?!?!
- @George Eu o escrevi quando estava mexendo na API do SO. Ele não ' não usa nenhuma rota, exceto / users, portanto, você ' está basicamente vendo todos os recursos implementados naquela captura de tela; era só para ver como seria difícil
- @George Coloquei no github
Resposta
Os sistemas de arquivos Unix são tradicionalmente implementados no kernel. FUSE permite que os sistemas de arquivos sejam implementados por um programa do usuário.
Os sistemas de arquivos do kernel são mais adequados para os principais sistemas de arquivos de programas e dados:
- Eles podem ser usados na mídia de boot (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 travar ou ser interrompido 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 por conta própria: para acesso à rede, para passar por arquivos compactados, para mídia removível, etc. .
- Se um driver do sistema de arquivos FUSE travar, seu kernel não entrará em pânico: você não verá nada pior do que erros de E / S em aplicativos que estavam acessando o sistema de arquivos.
- Eles pode ser programado muito rapidamente; existem ligações FUSE para muitas linguagens de script em que 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 podem ser facilmente transferidos entre sistemas operacionais compatíveis .
- Não há problemas de licenciamento relacionados a estar estaticamente vinculado a um kernel (isso está afetando zfs ).
Resposta
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 não GPL. Por exemplo, Gnu / Linux e ZFS http://zfs-fuse.net/ ou NTFS-3G em muitos sistemas operacionais como OpenSolaris e * BSD http://www.tuxera.com/community/ntfs-3g-download/
A principal desvantagem é o impacto no desempenho em comparação com os drivers nativos (kernel).