GN⁺: Python으로 FUSE 파일 시스템 작성 가이드 시작
(gwolf.org)-
Python으로 FUSE 파일 시스템 작성 가이드 시작
- DebConf22에서 Eeveelweezel과의 대화 후, Chicago Python User Group에서 발표를 준비하라는 초대를 받음.
- Python을 자주 사용하지 않지만, 학생들이 쉽게 이해할 수 있는 언어로 가르치고 있음.
- FIUnamFS라는 간단한 파일 시스템을 수업 프로젝트로 사용하고 있으며, 학생들에게 FUSE를 사용하여 투명한 인터페이스를 제공하도록 권장함.
-
FUSE 파일 시스템 구현의 어려움
- Python에서 FUSE 기반 파일 시스템을 구축하는 것이 쉽지 않음.
- 여러 예제와 웹 페이지가 있지만, 대부분 오래되었고 따라가기 어려움.
- Python에서는 python-fuse, Pyfuse, Fusepy 등 다양한 인터페이스가 존재함.
-
GitLab 프로젝트 시작
- Python으로 FUSE 기반 파일 시스템을 작성하는 가이드를 제공하기 위해 GitLab 프로젝트를 등록함.
- RAM 기반 및 패스스루 기반 파일 시스템 구현을 포함하여 여러 작업을 단계별로 추가함.
- 학생들이 재미있고 유용한 예제를 통해 배울 수 있도록 DNS 파일 시스템, 실시간 마크다운 컴파일 파일 시스템, 압축 해제 파일 시스템, 주석 제거 파일 시스템 등의 아이디어를 추가함.
-
발표 및 교육 계획
- ChiPy에서 발표 예정이며, Santa Fe, Argentina에서 열리는 Jornadas Regionales de Software Libre와 Mexico City에서 열리는 nerdear.la에서도 발표할 예정임.
- 학생들에게 이 프로젝트를 공유하고, Python에서 FUSE 구현에 관심을 가지도록 유도할 계획임.
-
GN⁺의 정리
- 이 기사는 Python으로 FUSE 파일 시스템을 구현하는 데 관심이 있는 사람들에게 유용한 정보를 제공함.
- 다양한 예제와 단계별 가이드를 통해 학생들이 쉽게 배울 수 있도록 돕고 있음.
- FUSE 구현의 어려움을 해결하기 위한 노력이 돋보이며, Python 커뮤니티에 기여하고자 하는 의도가 긍정적으로 평가됨.
- 유사한 기능을 가진 프로젝트로는 Dokan과 WinFsp가 있음.
Hacker News 의견
-
libfuse GitHub에는 C/C++의 복잡성을 증가시키는 좋은 예제들이 있음
-
passthrough.c
는 기존 파일 시스템을 미러링하지만 성능이 좋지 않음 -
passthrough_fh.c
는 성능이 조금 더 나음 -
passthrough_ll.c
는 저수준 API로 구현되어 세 가지 중 가장 나음 -
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
이 이를 지원함
- Mac에서는
-
azuline/rosé
는 가상 파일 시스템을 가진 음악 관리자로, 학습하기 좋은 코드베이스를 제공함 -
FUSE를 사용하여 Makefile이 임의의 리소스에 대해 DAG를 지정할 수 있게 함
- 예를 들어, Kubernetes 클러스터 상태를 노출하는 FUSE 파일 시스템이 있음
-
Python FUSE 파일 시스템을 만들어 dokuwiki와 상호작용했음
-
easyfuse
라는 래퍼를 만들어 dokuwiki와 관련 없는 저수준 API를 구현했음
-
-
FUSE를 사용하여 git 저장소를 노출하는 작은 프로젝트를 작성했음
-
.git
폴더를 통해 모든 커밋과 브랜치를 자체 폴더로 노출함 - 모든 것이 읽기 전용임
-