1 ポイント 投稿者 GN⁺ 2024-10-13 | 1件のコメント | WhatsAppで共有
  • PythonでFUSEファイルシステムを書くガイドを開始

    • DebConf22でEeveelweezelと話した後、Chicago Python User Groupで発表の準備をするよう招待を受けた。
    • Pythonはそれほど頻繁には使わないが、学生たちが理解しやすい言語として教えている。
    • FIUnamFSというシンプルなファイルシステムを授業プロジェクトとして使っており、学生にはFUSEを使って透過的なインターフェースを提供するよう勧めている。
  • FUSEファイルシステム実装の難しさ

    • PythonでFUSEベースのファイルシステムを構築するのは簡単ではない。
    • さまざまなサンプルやWebページはあるが、その大半は古く、追いかけるのが難しい。
    • Pythonにはpython-fuse、Pyfuse、Fusepyなど、さまざまなインターフェースが存在する。
  • GitLabプロジェクトの開始

    • PythonでFUSEベースのファイルシステムを書くためのガイドを提供するため、GitLabプロジェクトを登録した。
    • RAMベースおよびパススルーベースのファイルシステム実装を含め、複数の作業を段階的に追加した。
    • 学生たちが楽しく実用的な例を通じて学べるよう、DNSファイルシステム、リアルタイムMarkdownコンパイルファイルシステム、展開ファイルシステム、コメント除去ファイルシステムなどのアイデアも追加した。
  • 発表と教育計画

    • ChiPyで発表予定であり、Santa Fe, Argentinaで開催されるJornadas Regionales de Software Libreや、Mexico Cityで開催されるnerdear.laでも発表する予定である。
    • 学生たちにこのプロジェクトを共有し、PythonでのFUSE実装に関心を持つよう促す計画である。
  • GN⁺のまとめ

    • この記事は、PythonでFUSEファイルシステムを実装したい人にとって有用な情報を提供している。
    • さまざまな例と段階的なガイドを通じて、学生たちが無理なく学べるよう支援している。
    • FUSE実装の難しさを解決しようとする努力が際立っており、Pythonコミュニティに貢献しようとする意図が前向きに評価できる。
    • 類似の機能を持つプロジェクトとしては、DokanとWinFspがある。

1件のコメント

 
GN⁺ 2024-10-13
Hacker Newsのコメント
  • libfuse の GitHub には、C/C++ の複雑さを増してしまう良い例がある

    • passthrough.c は既存のファイルシステムをミラーするが、性能はあまり良くない
    • passthrough_fh.c は性能が少し良い
    • passthrough_ll.c は低レベル API で実装されており、3つの中では最も良い
    • passthrough_hp.cc は C++ で書かれた高性能版
    • 興味深い FUSE プロジェクトとしては、大容量ファイルをセグメントに分割するもの、ZFS の増分スナップショットをファイルとして表示するもの、透過的なファイルシステム圧縮などがある
  • FUSE 以外にも、9p プロトコルを通じて仮想ファイルシステムを実装できる

    • py9p を使った Python の体験は fuse-python より良かった
    • FUSE を介して 9p サービスをマウントでき、diod 9p サーバーを使っていた
    • 全体として探索しがいのあるエコシステム
  • FUSE を使って Jira をファイルシステムに変換するプロジェクトを始めた

    • 課題 ID をディレクトリ名として使うことで自動化はしやすくなったが、人間にはたどりにくかった
    • issue-type-with-summary ディレクトリタイプを追加して問題を解決した
  • FUSE に関心がある人は、CUSE プロジェクトにも関心を持つかもしれない

    • CUSE はユーザー空間でハードウェアをエミュレートするプロジェクト
    • Python を使って IOCTL をサポートするハードウェアデバイスを書いた
    • CUSE はもともとユーザー空間のサウンドデバイスを作るために実装された
  • さまざまな FUSE のマウントオプションが存在し、JuiceFS はオブジェクトストレージを POSIX ファイルシステムとしてマウントする点で興味深い

  • 最近は NFS ベースのファイルシステムを実装する人が増えている

    • Mac では rclone がこれをサポートしている
  • azuline/rosé は仮想ファイルシステムを持つ音楽マネージャーで、学習に適したコードベースを提供している

  • FUSE を使って、Makefile が任意のリソースに対して DAG を指定できるようにした

    • たとえば、Kubernetes クラスターの状態を公開する FUSE ファイルシステムがある
  • Python の FUSE ファイルシステムを作って dokuwiki とやり取りした

    • easyfuse というラッパーを作り、dokuwiki に無関係な低レベル API を実装した
  • FUSE を使って git リポジトリを公開する小さなプロジェクトを書いた

    • .git フォルダを通じて、すべてのコミットとブランチをそれぞれ独自のフォルダとして公開する
    • すべて読み取り専用