대용량 데이터를 처리하다 보면, 늘 부딪히는 문제가 있습니다. “파일 시스템이 병목이다.” 아무리 빠른 연산을 해도, 저장소가 느리면 속도가 안 나옵니다. 기존 HDFS나 CephFS를 써봤지만 운영의 복잡함, 일관성 문제, 확장성의 한계를 느꼈다면 이 글에 주목하세요.
이번 글에서는 DeepSeek가 공개한 고성능 오픈소스 분산 파일 시스템 3FS(Fire-Flyer File System) 를 소개합니다. 왜 3FS가 주목받고 있는지, 어떤 구조로 동작하는지, 그리고 실제로 어떤 강점이 있는지를 알기 쉽게 풀어드릴게요.
🔍 3FS란 무엇인가?
3FS는 DeepSeek가 개발한 고성능 분산 파일 시스템입니다. 오픈소스로 공개되었으며, 대규모 데이터 환경에서 높은 처리량과 강한 일관성을 제공합니다.
표면적으로는 일반적인 파일 시스템처럼 보이지만, 실제론 데이터를 여러 서버에 분산 저장합니다. 예를 들어, /3fs/stage/notes.txt 파일은 하나의 파일처럼 보이지만, 물리적으로는 여러 서버에 나뉘어 저장돼 있는 구조죠. 사용자는 mkdir, cat 등 친숙한 명령어로 3FS를 마치 로컬 파일처럼 쓸 수 있습니다.
🌐 왜 분산 파일 시스템이 필요한가?
분산 파일 시스템은 다음과 같은 환경에서 필수입니다:
- 페타바이트급 데이터 처리가 필요한 AI/ML 파이프라인
- 장애 허용과 데이터 중복성을 갖춘 안정적 저장소
- 대규모 병렬 처리 시스템과 연동 (예: Spark)
3FS는 이런 요구를 만족하면서도 더 강력한 일관성, 확장성, 성능 유연성을 제공합니다.
🧩 3FS의 핵심 구성 요소
3FS는 총 4가지 주요 구성 요소로 나뉘며, 각각의 역할이 명확하게 분리되어 있습니다.
1. Meta 노드
- 메타데이터 관리 (파일 경로, 속성, 위치 등)
- open, stat, close 등 클라이언트 요청 처리
- 메타 정보는 FoundationDB에 저장
- Inode는 파일 크기·소유자 등을 저장, DirEntry는 경로와 inode 연결
2. Mgmtd 노드
- 노드 등록 및 상태 관리 담당
- 부팅 시 노드 등록, 주기적 하트비트 전송
- 각 노드 연결을 직접 유지하지 않아도 됨
- CRAQ 체인 구성을 위한 정보도 함께 관리
3. Storage 노드
- 실제 데이터 저장 담당
- Rust 기반 ChunkEngine 사용
- 디스크 블록의 크기, 체크섬, 버전 관리
- 비동기 I/O 처리: io_uring 기반 AioReadWorker
- LevelDB 기반 메타 저장소
- 다양한 워커 존재:
- AllocateWorker: 블록 할당
- PunchHoleWorker: 미사용 블록 회수
- AioReadWorker: 빠른 읽기 처리
4. Client 노드
- 사용자 요청을 처리하고 각 노드와 통신
- 작업 흐름:
- Mgmtd에서 노드 위치 질의
- Meta에 파일 작업 요청
- Storage와 데이터 전송
🔄 CRAQ 알고리듬이란? - 일관성과 안정성의 비밀
3FS는 CRAQ(Chain Replication with Apportioned Queries) 알고리듬을 통해 강한 일관성(linearizability) 을 보장합니다.
쓰기 흐름:
- Head → Middle → Tail 방향으로 쓰기 전파
- 중간 노드는 데이터를 dirty 상태로 표시 (읽기 불가)
- Tail에서 커밋 후, clean 상태로 전파
읽기 흐름:
- clean 상태면 즉시 반환
- dirty 상태면 tail 노드에서 최신 데이터 조회
✅ 강한 일관성 확보
⚠️ 단, tail로 읽기 요청이 몰릴 경우 병목 발생 가능 (특히 Zipfian workload에서)
⚖️ 기존 분산 파일 시스템과의 차이점
3FS는 구조적으로 다른 시스템들과 유사하지만, 현실 적용성과 구현 방식에서 뚜렷한 차별점을 가집니다.
비교 요소:
- 어떤 워크로드에서 강점을 보이는가?
- 성능 조절의 유연성
- 배포 및 관리의 용이성
- SLO 내 지연시간 관리
- 신뢰성 및 장애 허용성
기술적 차별화 포인트:
- 병목 원인 분석 및 처리 구조
- Lock-free 구조 여부
- 최적화된 자료구조 활용
- 특정 하드웨어에 최적화된 구성
- 에러 정정 방식과 알고리듬의 차이
🧪 실사용 예와 기대 효과
3FS는 다음과 같은 환경에서 특히 효과적입니다:
- AI 학습 파이프라인에서 체크포인팅 처리
- Spark 등 병렬 처리 프레임워크 연동
- Google Colossus, Meta Haystack 같은 초대형 스토리지 사례에서 착안
- 기존 시스템(CephFS, JuiceFS)의 한계를 느낄 때 대안으로 검토 가치
왜 3FS인가?
- 3FS는 친숙한 인터페이스와 함께 고성능, 확장성, 일관성을 모두 제공하는 분산 파일 시스템입니다.
- CRAQ 알고리듬을 통해 강한 일관성과 장애 허용을 보장합니다.
- 기존 시스템보다 구조적 유연성과 성능 확장성이 우수하며, 실제 AI/ML 파이프라인 등 고성능 환경에 적합합니다.
📌 다음 블로그에서는 3FS의 실제 성능 분석을 다룰 예정입니다. DeepSeek의 주장대로 FUSE 병목을 해결했는지, 실제로 성능이 얼마나 나오는지, 주요 병목 요소는 무엇인지 꼼꼼히 검증해보겠습니다.
https://maknee.github.io/blog/2025/3FS-Performance-Journal-1/
An Intro to DeepSeek's Distributed File System | Some blog
Series What is 3FS? 3FS (Fire-Flyer File SystemGeez, what a tongue twister) is a distributed filesystem released by DeepSeek during their open source release week. This blog post will dive into what distributed file systems are and how 3FS operates, starti
maknee.github.io
'빅데이터' 카테고리의 다른 글
AI 시대의 검색 인프라, OpenSearch 3.0이 바꿔놓은 것들 - 벡터 검색에 최적화된 성능, AI 에이전트 연동, 데이터 처리 효율까지 새롭게 진화한 오픈소스 검색 플랫폼 (0) | 2025.05.10 |
---|---|
드디어 나왔다! Apache Airflow 3.0 — 4년을 기다린 대형 업데이트의 모든 것 (0) | 2025.04.23 |
ElasticSearch에도 드디어 JOIN이 생겼다? LOOKUP JOIN 기능 소개 (0) | 2025.04.20 |
데이터 인프라의 미래: 레이크하우스와 AI 중심 혁신 (0) | 2025.04.04 |
Apache Kafka 4.0 출시! 무엇이 바뀌었을까? (0) | 2025.03.31 |