1 pontos por GN⁺ 2024-10-13 | 1 comentários | Compartilhar no WhatsApp
  • Começando um guia para escrever sistemas de arquivos FUSE em Python

    • Após uma conversa com Eeveelweezel na DebConf22, recebeu um convite para preparar uma apresentação no Chicago Python User Group.
    • Embora não use Python com frequência, ensina usando uma linguagem que os alunos conseguem entender com facilidade.
    • Está usando um sistema de arquivos simples chamado FIUnamFS como projeto de aula e incentiva os alunos a usar FUSE para oferecer uma interface transparente.
  • Dificuldades na implementação de sistemas de arquivos FUSE

    • Construir um sistema de arquivos baseado em FUSE em Python não é algo simples.
    • Existem vários exemplos e páginas na web, mas a maioria está desatualizada e é difícil de acompanhar.
    • Em Python, existem várias interfaces, como python-fuse, Pyfuse e Fusepy.
  • Início do projeto no GitLab

    • Registrou um projeto no GitLab para oferecer um guia de como escrever um sistema de arquivos baseado em FUSE em Python.
    • Adicionou várias tarefas em etapas, incluindo implementações de sistemas de arquivos baseados em RAM e passthrough.
    • Também acrescentou ideias como sistema de arquivos DNS, sistema de arquivos com compilação de Markdown em tempo real, sistema de arquivos de descompressão e sistema de arquivos de remoção de comentários, para que os alunos aprendam com exemplos úteis e divertidos.
  • Planos de apresentações e ensino

    • Pretende apresentar no ChiPy, além de Jornadas Regionales de Software Libre em Santa Fe, Argentina, e nerdear.la na Cidade do México.
    • Planeja compartilhar esse projeto com os alunos e incentivá-los a se interessarem pela implementação de FUSE em Python.
  • Resumo do GN⁺

    • Este artigo traz informações úteis para quem tem interesse em implementar sistemas de arquivos FUSE em Python.
    • Com vários exemplos e um guia passo a passo, ajuda os alunos a aprender com facilidade.
    • Destaca-se o esforço para superar as dificuldades da implementação de FUSE, e a intenção de contribuir com a comunidade Python é vista de forma positiva.
    • Projetos com funcionalidade semelhante incluem Dokan e WinFsp.

1 comentários

 
GN⁺ 2024-10-13
Comentários no Hacker News
  • No GitHub do libfuse há bons exemplos que aumentam a complexidade em C/C++

    • passthrough.c espelha um sistema de arquivos existente, mas tem desempenho ruim
    • passthrough_fh.c tem um desempenho um pouco melhor
    • passthrough_ll.c é implementado com a API de baixo nível e é o melhor dos três
    • passthrough_hp.cc é uma versão de alto desempenho escrita em C++
    • Entre os projetos FUSE interessantes estão dividir arquivos grandes em segmentos, exibir snapshots incrementais do ZFS como arquivos e compressão transparente do sistema de arquivos
  • Além do FUSE, também é possível implementar um sistema de arquivos virtual por meio do protocolo 9p

    • A experiência com Python usando py9p foi melhor do que com fuse-python
    • É possível montar um serviço 9p via FUSE, e foi usado o servidor diod 9p
    • No geral, é um ecossistema bom de explorar
  • Foi iniciado um projeto para transformar o Jira em um sistema de arquivos usando FUSE

    • Usar o ID da issue como nome de diretório facilitou a automação, mas dificultou a navegação humana
    • O problema foi resolvido adicionando o tipo de diretório issue-type-with-summary
  • Quem se interessa por FUSE também pode se interessar pelo projeto CUSE

    • CUSE é um projeto para emular hardware no espaço do usuário
    • Foi escrito um dispositivo de hardware com suporte a IOCTL usando Python
    • O CUSE foi implementado originalmente para criar dispositivos de som em espaço do usuário
  • Existem várias opções de montagem do FUSE, e o JuiceFS é interessante para montar armazenamento de objetos como sistema de arquivos POSIX

  • Recentemente, mais pessoas estão implementando sistemas de arquivos baseados em NFS

    • No Mac, o rclone oferece suporte a isso
  • azuline/rosé é um gerenciador de música com sistema de arquivos virtual e oferece uma base de código boa para estudo

  • O FUSE foi usado para permitir que um Makefile especifique um DAG para recursos arbitrários

    • Por exemplo, existe um sistema de arquivos FUSE que expõe o estado de um cluster Kubernetes
  • Foi criado um sistema de arquivos FUSE em Python para interagir com o dokuwiki

    • Foi feito um wrapper chamado easyfuse para implementar a API de baixo nível não relacionada ao dokuwiki
  • Foi escrito um pequeno projeto para expor um repositório git usando FUSE

    • A pasta .git expõe todos os commits e branches como pastas próprias
    • Tudo é somente leitura