▲neo 2달전 | parent | favorite | on: GN⁺: Python으로 FUSE 파일 시스템 작성 가이드 시작(gwolf.org)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이 이를 지원함 azuline/rosé는 가상 파일 시스템을 가진 음악 관리자로, 학습하기 좋은 코드베이스를 제공함 FUSE를 사용하여 Makefile이 임의의 리소스에 대해 DAG를 지정할 수 있게 함 예를 들어, Kubernetes 클러스터 상태를 노출하는 FUSE 파일 시스템이 있음 Python FUSE 파일 시스템을 만들어 dokuwiki와 상호작용했음 easyfuse라는 래퍼를 만들어 dokuwiki와 관련 없는 저수준 API를 구현했음 FUSE를 사용하여 git 저장소를 노출하는 작은 프로젝트를 작성했음 .git 폴더를 통해 모든 커밋과 브랜치를 자체 폴더로 노출함 모든 것이 읽기 전용임
Hacker News 의견
libfuse GitHub에는 C/C++의 복잡성을 증가시키는 좋은 예제들이 있음
passthrough.c
는 기존 파일 시스템을 미러링하지만 성능이 좋지 않음passthrough_fh.c
는 성능이 조금 더 나음passthrough_ll.c
는 저수준 API로 구현되어 세 가지 중 가장 나음passthrough_hp.cc
는 C++로 작성된 고성능 버전임FUSE 외에도 9p 프로토콜을 통한 가상 파일 시스템 구현이 가능함
py9p
를 사용한 Python 경험이fuse-python
보다 나았음diod 9p
서버를 사용했음FUSE를 사용하여 Jira를 파일 시스템으로 변환하는 프로젝트를 시작했음
issue-type-with-summary
디렉토리 유형을 추가하여 문제를 해결했음FUSE에 관심 있는 사람들은 CUSE 프로젝트에도 관심을 가질 수 있음
다양한 FUSE 마운트 옵션이 존재하며, JuiceFS는 객체 저장소를 POSIX 파일 시스템으로 마운트하는 데 흥미로움
최근 NFS 기반 파일 시스템을 구현하는 사람들이 늘고 있음
rclone
이 이를 지원함azuline/rosé
는 가상 파일 시스템을 가진 음악 관리자로, 학습하기 좋은 코드베이스를 제공함FUSE를 사용하여 Makefile이 임의의 리소스에 대해 DAG를 지정할 수 있게 함
Python FUSE 파일 시스템을 만들어 dokuwiki와 상호작용했음
easyfuse
라는 래퍼를 만들어 dokuwiki와 관련 없는 저수준 API를 구현했음FUSE를 사용하여 git 저장소를 노출하는 작은 프로젝트를 작성했음
.git
폴더를 통해 모든 커밋과 브랜치를 자체 폴더로 노출함