1 Punkte von GN⁺ 2024-10-13 | 1 Kommentare | Auf WhatsApp teilen
  • Start eines Leitfadens zum Schreiben von FUSE-Dateisystemen in Python

    • Nach einem Gespräch mit Eeveelweezel auf der DebConf22 erhielt der Autor eine Einladung, einen Vortrag bei der Chicago Python User Group vorzubereiten.
    • Obwohl Python nicht häufig verwendet wird, wird es als Sprache unterrichtet, die Studierende leicht verstehen können.
    • Ein einfaches Dateisystem namens FIUnamFS wird als Kursprojekt verwendet, und den Studierenden wird empfohlen, mit FUSE eine transparente Schnittstelle bereitzustellen.
  • Schwierigkeiten bei der Implementierung von FUSE-Dateisystemen

    • Der Aufbau eines FUSE-basierten Dateisystems in Python ist nicht einfach.
    • Es gibt verschiedene Beispiele und Webseiten, aber die meisten sind veraltet und schwer nachzuvollziehen.
    • In Python existieren verschiedene Schnittstellen wie python-fuse, Pyfuse und Fusepy.
  • Start des GitLab-Projekts

    • Um einen Leitfaden zum Schreiben eines FUSE-basierten Dateisystems in Python bereitzustellen, wurde ein GitLab-Projekt angelegt.
    • Mehrere Aufgaben wurden Schritt für Schritt hinzugefügt, darunter Implementierungen von RAM-basierten und Pass-through-basierten Dateisystemen.
    • Damit Studierende mit unterhaltsamen und nützlichen Beispielen lernen können, wurden Ideen wie ein DNS-Dateisystem, ein Dateisystem zur Echtzeit-Kompilierung von Markdown, ein Dekomprimierungs-Dateisystem und ein Dateisystem zum Entfernen von Kommentaren ergänzt.
  • Vortrags- und Bildungspläne

    • Geplante Vorträge gibt es bei ChiPy sowie bei den Jornadas Regionales de Software Libre in Santa Fe, Argentinien, und bei nerdear.la in Mexiko-Stadt.
    • Das Projekt soll mit Studierenden geteilt werden, um ihr Interesse an FUSE-Implementierungen in Python zu wecken.
  • Zusammenfassung von GN⁺

    • Dieser Artikel bietet nützliche Informationen für alle, die sich für die Implementierung von FUSE-Dateisystemen in Python interessieren.
    • Mit verschiedenen Beispielen und einer Schritt-für-Schritt-Anleitung hilft er Studierenden, das Thema leicht zu erlernen.
    • Bemerkenswert ist der Versuch, die Schwierigkeiten der FUSE-Implementierung zu lösen; auch die Absicht, zur Python-Community beizutragen, wird positiv bewertet.
    • Projekte mit ähnlicher Funktionalität sind unter anderem Dokan und WinFsp.

1 Kommentare

 
GN⁺ 2024-10-13
Hacker-News-Kommentar
  • Im libfuse-GitHub gibt es gute Beispiele, die die Komplexität von C/C++ noch erhöhen

    • passthrough.c spiegelt ein bestehendes Dateisystem, hat aber eine schlechte Performance
    • passthrough_fh.c ist bei der Performance etwas besser
    • passthrough_ll.c ist mit der Low-Level-API implementiert und von den drei Varianten die beste
    • passthrough_hp.cc ist eine in C++ geschriebene Hochleistungsvariante
    • Interessante FUSE-Projekte sind unter anderem das Aufteilen großer Dateien in Segmente, das Darstellen inkrementeller ZFS-Snapshots als Dateien und transparente Dateisystem-Komprimierung
  • Neben FUSE kann man auch über das 9p-Protokoll ein virtuelles Dateisystem implementieren

    • Die Python-Erfahrung mit py9p war besser als mit fuse-python
    • Man kann einen 9p-Dienst über FUSE mounten; verwendet wurde der diod 9p-Server
    • Insgesamt ist das ein Ökosystem, das sich gut erkunden lässt
  • Es wurde ein Projekt begonnen, das Jira mithilfe von FUSE in ein Dateisystem umwandelt

    • Die Verwendung von Issue-IDs als Verzeichnisnamen erleichterte die Automatisierung, war für Menschen aber schwer zu durchsuchen
    • Das Problem wurde durch den zusätzlichen Verzeichnistyp issue-type-with-summary gelöst
  • Wer sich für FUSE interessiert, könnte sich auch für das CUSE-Projekt interessieren

    • CUSE ist ein Projekt zur Emulation von Hardware im Userspace
    • Mit Python wurde ein Hardware-Gerät mit IOCTL-Unterstützung geschrieben
    • CUSE wurde ursprünglich implementiert, um ein Sound-Gerät im Userspace zu erstellen
  • Es gibt verschiedene FUSE-Mount-Optionen, und JuiceFS ist interessant, um Object Storage als POSIX-Dateisystem zu mounten

  • In letzter Zeit implementieren mehr Leute NFS-basierte Dateisysteme

    • Auf dem Mac unterstützt rclone das
  • azuline/rosé ist ein Musikmanager mit virtuellem Dateisystem und bietet eine gute Codebasis zum Lernen

  • Mit FUSE kann man Makefiles erlauben, einen DAG für beliebige Ressourcen zu definieren

    • Es gibt zum Beispiel ein FUSE-Dateisystem, das den Zustand eines Kubernetes-Clusters offenlegt
  • Es wurde ein Python-FUSE-Dateisystem erstellt, um mit dokuwiki zu interagieren

    • Dafür wurde ein Wrapper namens easyfuse erstellt, der die Low-Level-API implementiert, die nichts mit dokuwiki zu tun hat
  • Es wurde ein kleines Projekt geschrieben, das mit FUSE ein Git-Repository offenlegt

    • Über den .git-Ordner werden alle Commits und Branches als eigene Ordner offengelegt
    • Alles ist schreibgeschützt