1 คะแนน โดย GN⁺ 2024-10-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เริ่มต้นคู่มือการเขียนระบบไฟล์ FUSE ด้วย Python

    • หลังจากการพูดคุยกับ Eeveelweezel ในงาน DebConf22 ผู้เขียนได้รับเชิญให้เตรียมการบรรยายสำหรับ Chicago Python User Group
    • แม้จะไม่ได้ใช้ Python บ่อยนัก แต่ก็กำลังสอนด้วยภาษาที่นักศึกษาสามารถเข้าใจได้ง่าย
    • กำลังใช้ระบบไฟล์อย่างง่ายชื่อ FIUnamFS เป็นโปรเจ็กต์ในชั้นเรียน และแนะนำให้นักศึกษาใช้ FUSE เพื่อมอบอินเทอร์เฟซที่โปร่งใส
  • ความยากในการพัฒนาระบบไฟล์ FUSE

    • การสร้างระบบไฟล์ที่ใช้ FUSE บน Python ไม่ใช่เรื่องง่าย
    • แม้จะมีตัวอย่างและหน้าเว็บจำนวนมาก แต่ส่วนใหญ่ค่อนข้างเก่าและยากต่อการทำตาม
    • ใน Python มีอินเทอร์เฟซหลากหลายแบบ เช่น python-fuse, Pyfuse และ Fusepy
  • เริ่มต้นโปรเจ็กต์บน GitLab

    • ได้สร้างโปรเจ็กต์บน GitLab เพื่อจัดทำคู่มือสำหรับการเขียนระบบไฟล์ที่ใช้ FUSE ด้วย Python
    • เพิ่มงานหลายอย่างแบบเป็นขั้นตอน รวมถึงการพัฒนาระบบไฟล์แบบใช้ RAM และแบบ passthrough
    • เพื่อให้นักศึกษาเรียนรู้ผ่านตัวอย่างที่ทั้งสนุกและมีประโยชน์ จึงเพิ่มไอเดียอย่างระบบไฟล์ DNS, ระบบไฟล์คอมไพล์ Markdown แบบเรียลไทม์, ระบบไฟล์แตกไฟล์บีบอัด และระบบไฟล์ลบคอมเมนต์
  • แผนการบรรยายและการสอน

    • มีกำหนดจะบรรยายที่ ChiPy และจะบรรยายที่งาน Jornadas Regionales de Software Libre ใน Santa Fe, Argentina รวมถึง nerdear.la ใน Mexico City ด้วย
    • มีแผนจะแชร์โปรเจ็กต์นี้ให้นักศึกษา และกระตุ้นให้พวกเขาสนใจการพัฒนา FUSE บน Python
  • สรุปโดย GN⁺

    • บทความนี้ให้ข้อมูลที่เป็นประโยชน์สำหรับผู้ที่สนใจพัฒนาระบบไฟล์ FUSE ด้วย Python
    • ด้วยตัวอย่างที่หลากหลายและคู่มือแบบเป็นขั้นตอน จึงช่วยให้นักศึกษาเรียนรู้ได้ง่าย
    • ความพยายามในการแก้ปัญหาความยากของการพัฒนา FUSE นั้นโดดเด่น และเจตนาที่จะมีส่วนร่วมกับชุมชน Python ก็ได้รับการประเมินในเชิงบวก
    • โปรเจ็กต์ที่มีความสามารถคล้ายกันได้แก่ Dokan และ WinFsp

1 ความคิดเห็น

 
GN⁺ 2024-10-13
ความคิดเห็นจาก Hacker News
  • ใน GitHub ของ libfuse มีตัวอย่างที่ดีซึ่งแสดงให้เห็นความซับซ้อนที่เพิ่มขึ้นของ C/C++

    • passthrough.c มิเรอร์ไฟล์ซิสเต็มที่มีอยู่ แต่ประสิทธิภาพไม่ดี
    • passthrough_fh.c มีประสิทธิภาพดีกว่าเล็กน้อย
    • passthrough_ll.c ถูกพัฒนาด้วย API ระดับล่าง และดีที่สุดในสามตัวนี้
    • passthrough_hp.cc เป็นเวอร์ชันประสิทธิภาพสูงที่เขียนด้วย C++
    • โปรเจกต์ FUSE ที่น่าสนใจ ได้แก่ การแบ่งไฟล์ขนาดใหญ่ออกเป็นเซกเมนต์, การแสดง incremental snapshot ของ ZFS เป็นไฟล์, และการบีบอัดไฟล์ซิสเต็มแบบโปร่งใส
  • นอกจาก FUSE แล้ว ยังสามารถทำ virtual file system ผ่านโปรโตคอล 9p ได้

    • ประสบการณ์การใช้ Python กับ py9p ดีกว่า fuse-python
    • สามารถเมานต์บริการ 9p ผ่าน FUSE ได้ และเคยใช้เซิร์ฟเวอร์ diod 9p
    • โดยรวมแล้วเป็น ecosystem ที่น่าสำรวจ
  • เคยเริ่มโปรเจกต์ที่ใช้ FUSE เพื่อแปลง Jira ให้เป็นไฟล์ซิสเต็ม

    • การใช้ issue ID เป็นชื่อไดเรกทอรีช่วยให้อัตโนมัติได้ง่ายขึ้น แต่คนใช้งานกลับสำรวจได้ยาก
    • จึงแก้ปัญหาโดยเพิ่มรูปแบบไดเรกทอรี issue-type-with-summary
  • คนที่สนใจ FUSE อาจสนใจโปรเจกต์ CUSE ด้วย

    • CUSE เป็นโปรเจกต์สำหรับจำลองฮาร์ดแวร์ใน user space
    • เคยใช้ Python เขียนอุปกรณ์ฮาร์ดแวร์ที่รองรับ IOCTL
    • เดิมที CUSE ถูกสร้างขึ้นเพื่อทำอุปกรณ์เสียงใน user space
  • มีตัวเลือกการเมานต์ของ FUSE หลากหลายแบบ และ JuiceFS ก็น่าสนใจสำหรับการเมานต์ object storage ให้เป็น POSIX file system

  • ช่วงหลังมีคนทำไฟล์ซิสเต็มบนพื้นฐาน NFS เพิ่มขึ้น

    • บน Mac, rclone รองรับสิ่งนี้
  • azuline/rosé เป็นตัวจัดการเพลงที่มี virtual file system และมี codebase ที่เหมาะแก่การศึกษา

  • ใช้ FUSE เพื่อให้ Makefile สามารถระบุ DAG สำหรับรีซอร์สตามอำเภอใจได้

    • ตัวอย่างเช่น มี FUSE file system ที่เปิดเผยสถานะของ Kubernetes cluster
  • เคยสร้าง Python FUSE file system เพื่อโต้ตอบกับ dokuwiki

    • ได้ทำ wrapper ชื่อ easyfuse เพื่ออิมพลีเมนต์ API ระดับล่างที่ไม่เกี่ยวกับ dokuwiki
  • เคยเขียนโปรเจกต์เล็ก ๆ ที่ใช้ FUSE เพื่อเปิดเผย git repository

    • เปิดเผยทุก commit และ branch เป็นโฟลเดอร์ของตัวเองผ่านโฟลเดอร์ .git
    • ทุกอย่างเป็นแบบอ่านอย่างเดียว