1 điểm bởi GN⁺ 2024-10-13 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bắt đầu hướng dẫn viết hệ thống tệp FUSE bằng Python

    • Sau cuộc trò chuyện với Eeveelweezel tại DebConf22, tác giả được mời chuẩn bị một buổi trình bày cho Chicago Python User Group.
    • Dù không thường xuyên dùng Python, tác giả vẫn giảng dạy bằng một ngôn ngữ mà sinh viên có thể dễ dàng hiểu được.
    • Tác giả đang sử dụng một hệ thống tệp đơn giản tên là FIUnamFS cho dự án môn học, và khuyến khích sinh viên dùng FUSE để cung cấp một giao diện trong suốt.
  • Khó khăn khi triển khai hệ thống tệp FUSE

    • Việc xây dựng hệ thống tệp dựa trên FUSE trong Python không hề dễ dàng.
    • Có nhiều ví dụ và trang web liên quan, nhưng phần lớn đã cũ và khó làm theo.
    • Trong Python có nhiều giao diện khác nhau như python-fuse, Pyfuse và Fusepy.
  • Bắt đầu dự án GitLab

    • Tác giả đã tạo một dự án trên GitLab để cung cấp hướng dẫn viết hệ thống tệp dựa trên FUSE bằng Python.
    • Dự án bổ sung theo từng bước nhiều phần việc, bao gồm cả triển khai hệ thống tệp dựa trên RAM và hệ thống tệp passthrough.
    • Để sinh viên có thể học qua các ví dụ thú vị và hữu ích, tác giả thêm các ý tưởng như hệ thống tệp DNS, hệ thống tệp biên dịch Markdown theo thời gian thực, hệ thống tệp giải nén và hệ thống tệp loại bỏ chú thích.
  • Kế hoạch trình bày và giảng dạy

    • Tác giả dự kiến sẽ trình bày tại ChiPy, đồng thời cũng sẽ trình bày tại Jornadas Regionales de Software Libre ở Santa Fe, Argentina và tại nerdear.la ở Mexico City.
    • Tác giả có kế hoạch chia sẻ dự án này với sinh viên và khơi gợi sự quan tâm của họ đối với việc triển khai FUSE trong Python.
  • Tổng kết của GN⁺

    • Bài viết này cung cấp thông tin hữu ích cho những ai quan tâm đến việc triển khai hệ thống tệp FUSE bằng Python.
    • Nhờ nhiều ví dụ đa dạng và hướng dẫn từng bước, nội dung này giúp sinh viên dễ học hơn.
    • Nỗ lực giải quyết những khó khăn trong việc triển khai FUSE là điểm nổi bật, và ý định đóng góp cho cộng đồng Python được đánh giá tích cực.
    • Các dự án có chức năng tương tự gồm có Dokan và WinFsp.

1 bình luận

 
GN⁺ 2024-10-13
Ý kiến Hacker News
  • Trong GitHub của libfuse có những ví dụ hay cho thấy độ phức tạp ngày càng tăng của C/C++

    • passthrough.c phản chiếu hệ thống tệp hiện có nhưng hiệu năng không tốt
    • passthrough_fh.c có hiệu năng nhỉnh hơn một chút
    • passthrough_ll.c được triển khai bằng API cấp thấp nên là bản tốt nhất trong ba bản
    • passthrough_hp.cc là phiên bản hiệu năng cao được viết bằng C++
    • Các dự án FUSE thú vị gồm có chia tệp lớn thành các phân đoạn, hiển thị snapshot gia tăng của ZFS dưới dạng tệp, và nén hệ thống tệp trong suốt
  • Ngoài FUSE ra, cũng có thể triển khai hệ thống tệp ảo thông qua giao thức 9p

    • Trải nghiệm dùng Python với py9p tốt hơn fuse-python
    • Có thể mount dịch vụ 9p thông qua FUSE, và đã dùng máy chủ diod 9p
    • Nhìn chung đây là một hệ sinh thái đáng để khám phá
  • Đã bắt đầu một dự án dùng FUSE để biến Jira thành một hệ thống tệp

    • Dùng ID issue làm tên thư mục giúp tự động hóa dễ hơn, nhưng con người lại khó duyệt hơn
    • Đã giải quyết vấn đề bằng cách thêm kiểu thư mục issue-type-with-summary
  • Những ai quan tâm đến FUSE có thể cũng sẽ quan tâm đến dự án CUSE

    • CUSE là một dự án mô phỏng phần cứng trong không gian người dùng
    • Đã viết một thiết bị phần cứng hỗ trợ IOCTL bằng Python
    • CUSE ban đầu được triển khai để tạo thiết bị âm thanh trong không gian người dùng
  • Có nhiều tùy chọn mount FUSE khác nhau, và JuiceFS khá thú vị trong việc mount object storage thành hệ thống tệp POSIX

  • Gần đây ngày càng có nhiều người triển khai hệ thống tệp dựa trên NFS

    • Trên Mac, rclone hỗ trợ việc này
  • azuline/rosé là một trình quản lý nhạc có hệ thống tệp ảo, cung cấp codebase tốt để học hỏi

  • Dùng FUSE để Makefile có thể chỉ định DAG cho các tài nguyên tùy ý

    • Ví dụ, có một hệ thống tệp FUSE dùng để phơi bày trạng thái của cụm Kubernetes
  • Đã tạo một hệ thống tệp FUSE bằng Python để tương tác với dokuwiki

    • Đã tạo một wrapper tên là easyfuse để triển khai API cấp thấp không liên quan đến dokuwiki
  • Đã viết một dự án nhỏ dùng FUSE để phơi bày kho lưu trữ git

    • Thông qua thư mục .git, mọi commit và branch đều được phơi bày thành thư mục riêng
    • Mọi thứ đều ở chế độ chỉ đọc