-
3FS는 DeepSeek가 개발한 고성능 오픈소스 분산 파일 시스템으로, 대규모 데이터 처리와 높은 처리량을 지원함
-
일반적인 파일 시스템처럼 동작하지만, 실제로는 여러 머신에 데이터를 분산 저장하며 사용자는 이를 의식하지 않아도 되는 추상화 구조를 가짐
-
4가지 주요 구성 요소 (Meta, Mgmtd, Storage, Client) 를 통해 메타데이터, 노드 관리, 실제 데이터 저장, 사용자 요청 처리 등을 분리하여 운영함
-
CRAQ 알고리듬을 통해 강한 일관성과 장애 허용을 달성하며, 체인 구조로 쓰기 요청을 안전하게 전파함
-
3FS는 다른 분산 파일 시스템과 비교하여 실제 적용 가능성과 성능 확장성에서 차별화됨
3FS란?
- 3FS는 Fire-Flyer File System의 약자로, DeepSeek에서 공개한 분산 파일 시스템
- DeepSeek의 오픈소스 공개 주간에 함께 릴리즈됨
- 일반적인 파일 경로처럼 보이지만, 실제로는 여러 머신에 분산 저장된 데이터를 추상화해 제공함
분산 파일 시스템이란?
- 사용자에게는 로컬 파일 시스템처럼 보이지만, 실제로는 여러 서버에 데이터를 분산 저장함
- 예: /3fs/stage/notes.txt 경로가 하나의 파일처럼 보이지만 실제론 여러 서버에 나뉘어 저장됨
- 사용자는 mkdir, cat 같은 명령어로 일반 파일처럼 사용할 수 있음
왜 분산 파일 시스템을 사용하는가?
-
대용량 데이터 (페타바이트 수준) 와 높은 처리량을 지원
-
장애 허용(fault tolerance) 과 중복성(redundancy) 을 통해 안정성 보장
- 실제 사용 예:
-
HDFS + Spark 같은 병렬 처리 프레임워크
-
ML 학습 파이프라인의 체크포인팅
- Google의 Colossus
- Meta의 사진 저장소인 Haystack
- AI용 스토리지 예: JuiceFS vs CephFS
3FS 구성 요소
Meta
- 파일 경로, 속성, 위치 등의 메타데이터 관리
- RPC로 클라이언트 요청 처리 (open, stat, close 등)
- 메타 정보는 FoundationDB에 저장됨
-
Inode는 파일의 크기, 소유자 등의 정보를 저장
-
DirEntry는 경로와 inode를 연결함 (심볼릭 링크처럼 하나의 파일에 여러 경로 존재 가능)
Mgmtd
- 클러스터의 노드 등록 및 상태 확인 담당
- 노드들은 부팅 시 자신을 등록하고 주기적으로 하트비트 전송
-
중앙 라우터 역할을 하며, 노드 간 연결을 직접 유지하지 않아도 됨
- CRAQ 체인 구성을 위한 설정 정보도 관리
Storage
- 실제 데이터 저장 담당
-
Rust 기반의 ChunkEngine을 통해 디스크 블록을 관리
- 디스크 블록의 크기, 오프셋, 체크섬, 버전 등을 추적
- 사용자는 직접 블록과 상호작용하지 않고 인터페이스 제공
- 메타 정보는 LevelDB에 저장
- 다양한 워커들이 존재
-
AllocateWorker는 새 블록 할당
-
PunchHoleWorker는 사용되지 않는 블록 회수
-
AioReadWorker는 io_uring 큐를 통해 비동기 읽기 처리
- 쓰기 작업 시 CRAQ 체인을 따라 다음 노드로 전달
Client
- 사용자 요청을 처리하고 다른 노드와 통신
- 작업 흐름:
- Mgmtd에 노드 위치 질의
- Meta에 파일 작업 요청
- Storage와 데이터 전송
CRAQ 알고리듬
-
Chain Replication with Apportioned Queries의 약자로 강한 일관성(linearizability) 제공
- 쓰기 흐름:
- Head → Middle → Tail 순으로 쓰기 전파
- 중간 단계에서는 데이터를 dirty로 표시 (읽기 불가)
- Tail에서 커밋 후 backward로 clean 상태 전파
- 읽기 흐름:
- clean이면 즉시 반환
- dirty이면 tail에 요청하여 최신 데이터 조회
성능 측면에서 CRAQ
-
쓰기 속도는 가장 느린 노드에 의해 제한
- 자주 접근되는 dirty 데이터는 tail로 읽기 요청이 몰려 읽기 병목 발생 가능
- 예: Zipfian workload에서 성능 저하
- 노드가 5개인 클러스터에서는 3개로 복제하여 장애 시 성능 손실 최소화
다른 분산 파일 시스템과의 차이점
- 구조는 유사하지만 현실 적용성과 구현 방식에서 차별점 존재
- 비교 요소:
- 어떤 워크로드에서 강점을 가지는지
- 성능 조절의 유연성
- 배포의 용이성
- 처리량 확장성
- SLO 내에서의 지연시간 관리
- 신뢰성
- 세부 기술 요소:
- 병목 원인과 처리 방식
- 락의 유무
- 사용된 자료구조
- 타겟 하드웨어
- 사용된 장애 허용 알고리듬 또는 에러 정정 방식
블로그 시리즈의 다음 주제
- 실제 성능 분석을 통해 DeepSeek의 주장 검증 예정
- 검토 항목:
-
FUSE 병목에 대한 DeepSeek의 주장
- 성능 그래프 재현 가능성
- 성능 저하 상황 분석
- 병목 요소 (CPU, 메모리, 디스크, 네트워크)
- 어떤 워크로드에서 성능이 우수한지
- 기존 시스템과 비교 분석
- 기존 시스템의 문제 해결 방식과의 차이
- 직접적인 개선 가능성 검토
추가 자료