# NFS > FUSE: 우리가 자체 NFS 서버를 Rust로 개발한 이유

> Clean Markdown view of GeekNews topic #10992. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=10992](https://news.hada.io/topic?id=10992)
- GeekNews Markdown: [https://news.hada.io/topic/10992.md](https://news.hada.io/topic/10992.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2023-09-22T10:17:02+09:00
- Updated: 2023-09-22T10:17:02+09:00
- Original source: [about.xethub.com](https://about.xethub.com/blog/nfs-fuse-why-we-built-nfs-server-rust)
- Points: 13
- Comments: 4

## Topic Body

- FUSE는 파일시스템 드라이버를 커널 모듈 필요없이 작성할 수 있게 해줌   
  - NTFS, SFTP, S3 같은 다양한 파일시스템 클라이언트가 사용   
  - WikipediaFS 처럼 실제 파일시스템이 아닌 것도 만들 수 있음   
- 하지만 FUSE는 개발하기에 불편함   
  - 2개의 API 중에서 선택: Low-Level 과 High-Level   
  - 호환되지 않는 2개의 API 버전: libfuse2 와 libfuse3   
  - 조금씩 계속 변경되는 API들 (FUSE_USE_VERSION)  
  - Mac 과 Windows 에서는 네이티브가 아니라 MacFuse, WinFuse 같은 써드파티 드라이버를 설치해야만 함   
- 우리(XetHub)는 이미지 데이터셋의 다양한 버전을 S3 명령어 쓸 필요없이 개인 노트북에서 편하게 접근하게 만들고 싶었음   
- "진정한 크로스 플랫폼인 유저스페이스 파일 시스템을 만들수 있을까?" 질문에서 NFSv3 에 도달   
### NFS   
- NFSv3는 20년이 된 네트워크 파일 시스템 프로토콜로, 매우 간단하고 보편적이어서 거의 모든 운영 체제에서 기본으로 구현됨   
- 아름답고 간단한 디자인 원칙  
  - 서버는 완전히 Stateless   
  - NFS 서버는 멍청하고 NFS 클라이언트는 스마트함   
  - 간단한 캐시 일관성 규칙(서버는 캐시 정책을 정의하지 않음. 클라언트는 원하는 만큼 알아서)  
  - NFS 클라이언트는 자신이 네트워크를 넘어서 대화하고 있다는 것을 알고 있음   
  - 실제로 매우 우수한 성능   
- 요약하자면, FUSE 대신 로컬 호스트 NFS를 사용하여 사용자 모드 파일 시스템을 구현하면 성능과 복원력(resiliency)을 더 쉽게 얻을 수 있다는 것  
- 서버 프로토콜만 한번 구현하면, 기존의 캐싱 및 20년 간 강화된 기능을 그대로 활용 가능   
### XetHub 에서 NFS를 사용하는 방법   
- 네이티브 크로스 플랫폼, 사용자 모드 파일시스템 구현체를 개발   
- 커널 드라이버 없이 대규모 데이터셋을 사용자 머신에 마운트 가능  
  - 660GB Llama 2 모델을 마운트 하거나, DuckDB 쿼리로 대규모 Parquet 파일을 분석 하는 등   
- Linux, Mac 및 Windows Pro 버전 이상에서 지원(Windows Home은 동작하지 않음)   
- Rust 로 구현한 NFS 서버인 [nfsserve](https://github.com/xetdata/nfsserve) 는 GitHub에 공개   
- 읽기 성능은 꽤 좋고, 쓰기는 작동하지만 아직 최적화가 필요함

## Comments



### Comment 19418

- Author: ntpd3300
- Created: 2023-09-22T10:35:46+09:00
- Points: 1

제목과는 다르게 정작 Rust로 작성한 이유는 안나와있네요

### Comment 19436

- Author: botplaysdice
- Created: 2023-09-23T05:12:29+09:00
- Points: 1
- Parent comment: 19418
- Depth: 1

원글의 초점은 우리만의 NFS서버를 개발한 이유...... 인데, Rust 같은 인기 키워드를 빼먹을 수 없어서 제목에 쓴것같네요 :-)

### Comment 19429

- Author: blueprajna
- Created: 2023-09-22T16:54:30+09:00
- Points: 1
- Parent comment: 19418
- Depth: 1

원글이 rust로 작성한 이유가 아니라 fuse대신 nfs를 선택했나하는 내용이네요.

### Comment 19420

- Author: xguru
- Created: 2023-09-22T10:37:12+09:00
- Points: 1
- Parent comment: 19418
- Depth: 1

앗 그러고보니 그냥 Rust라서 빠르다는 얘기말고는 없었군요. 아무 생각없이 요약을 했네요.
