GN⁺: SeaweedFS - 블롭, 객체, 파일 및 데이터레이크를 위한 빠른 분산 스토리지 시스템
(github.com/seaweedfs)- 단순하고 확장성이 뛰어난 분산 파일 시스템
- 목표는 수십억 개의 파일을 저장하고 빠르게 제공하는 것
- Facebook의 Haystack 디자인과 f4: Facebook의 Warm BLOB 저장 시스템에서 아이디어를 얻어 구현됨
- Blob 저장소는 O(1) 디스크 검색 과 클라우드 계층화 기능이 있음
- Filer는 디렉토리와 POSIX 속성을 지원하며, 클라우드 드라이브, DC 간 액티브-액티브 복제, Kubernetes, POSIX FUSE 마운트, S3 API, S3 게이트웨이, Hadoop, WebDAV, 암호화, 이레이저 코딩 기능등을 포함
기능
- 복제 수준, 랙 및 데이터 센터 인식 등 다양한 복제 옵션 제공.
- 마스터 서버 자동 장애 전환으로 단일 실패 지점 없음.
- 파일 MIME 유형에 따른 자동 Gzip 압축 지원.
- 데이터 삭제 또는 업데이트 후 디스크 공간 회수를 위한 자동 압축.
- 서버 추가로 총 저장 공간 증가 가능.
- 서버 추가/제거 시 데이터 재균형 없음, 관리자 명령에 의해서만 트리거됨.
- 이미지 크기 조정, ETag, Accept-Range, Last-Modified 등 지원.
- 메모리/성능 균형을 위한 in-memory/leveldb/readonly 모드 튜닝 지원.
- 사용자 정의 가능한 다중 저장 계층 및 투명한 클라우드 통합 제공.
- 따뜻한 저장소를 위한 랙 인식 10.4 이레이저 코딩으로 저장 비용 절감 및 가용성 향상.
Filer 기능
- Filer 서버는 HTTP를 통해 "일반" 디렉토리 및 파일 제공.
- 파일 TTL로 파일 메타데이터 및 실제 파일 데이터 자동 만료.
- FUSE를 통해 마운트된 filer로 파일을 직접 읽고 쓸 수 있음.
- Filer 저장소 복제로 메타 데이터 저장소의 HA 가능.
- Amazon S3 호환 API로 S3 도구를 사용하여 파일 접근 가능.
- Hadoop 호환 파일 시스템으로 Hadoop/Spark/Flink 등에서 파일 접근 가능.
- AES256-GCM 암호화 저장소로 데이터 안전하게 저장.
- 수십 TB의 대용량 파일 저장 지원.
- 클라우드 드라이브로 클라우드 저장소를 로컬 클러스터에 마운트하여 빠른 읽기 및 쓰기 지원.
Kubernetes
- Kubernetes CSI 드라이버 및 SeaweedFS 운영자 지원.
Seaweed 객체 저장소 사용 예
- 마스터 노드와 볼륨 노드의 기본 포트 및 실행 방법 안내.
- 파일 쓰기, 읽기, 삭제 방법에 대한 예시 제공.
- 랙 인식 및 데이터 센터 인식 복제, 특정 데이터 센터에 파일 키 할당 방법 설명.
아키텍처
- SeaweedFS는 파일을 청크로 나누지 않고 데이터 볼륨을 관리함.
- 마스터 서버는 볼륨에 대한 메타데이터만 관리하고, 실제 파일 메타데이터는 볼륨 서버에서 관리함.
- 파일 쓰기 및 읽기 프로세스에 대한 자세한 설명 제공.
다른 파일 시스템과의 비교
- HDFS, GlusterFS, Ceph, MooseFS, MinIO 등과 비교하여 SeaweedFS의 장점 설명.
- SeaweedFS는 작은 파일에 최적화되어 있으며, O(1) 디스크 읽기 작업으로 빠른 파일 접근을 제공함.
개발 계획
- 시스템 관리 및 확장에 대한 더 많은 도구 및 문서 제공 예정.
- 스트림 데이터 읽기 및 쓰기 지원.
- 구조화된 데이터 지원.
설치 가이드
- Golang에 익숙하지 않은 사용자를 위한 설치 가이드 제공.
디스크 관련 주제
- 하드 드라이브 및 SSD의 성능에 대한 설명.
- SeaweedFS는 SSD에 친화적인 구조를 가짐.
벤치마크
- 개인적인 비과학적 단일 기계 벤치마크 결과 제공.
- WARP를 사용하여 혼합 벤치마크 실행 방법 안내.
라이선스
- Apache License, Version 2.0에 따라 라이선스됨.
GN⁺의 의견:
- SeaweedFS는 작은 파일을 효율적으로 관리하고 빠른 파일 제공을 목표로 하는 분산 파일 시스템임. 이는 대용량 데이터를 다루는 현대의 웹 서비스에 매우 적합함.
- 다양한 저장소 및 데이터베이스와의 호환성을 통해 유연성을 제공하며, 클라우드 통합 기능으로 비용 효율적인 데이터 관리가 가능함.
- 오픈 소스 프로젝트로서 커뮤니티의 지원을 받으며 지속적으로 발전하고 있어, 기술적인 관점에서도 흥미로운 프로젝트임.
Hacker News 의견
-
JuiceFS의 언급
- 댓글에서는 Minio, Ceph, GarageFS와 같은 여러 대안들이 언급됨.
- 아직 언급되지 않은 또 다른 대안으로 JuiceFS가 있음.
- JuiceFS와 SeaweedFS를 비교한 자료가 있음.
-
SeaweedFS 사용 경험
- SeaweedFS를 사용하여 수십억 개의 중간 크기 XML 문서, 이미지 썸네일, PDF 파일 등을 저장함.
- 데이터베이스와 파일 시스템 사이의 간극을 메움.
- 문서와 운영 도구는 처음에는 조금 어색하지만, 기능이 풍부하고 잘 작동함.
- 전원 장애, 하드웨어 오류 등으로부터 데이터 복구가 가능했음.
- 오픈 소스 S3 API 블롭 스토어에 대한 간극이 놀랍다고 느낌.
-
SeaweedFS에 대한 부정적인 경험
- SeaweedFS의 CSI 드라이버를 통해 마운트된 POSIX FS 볼륨에서 Postgres가 초기화되지 않아 SeaweedFS를 사용하지 않기로 결정함.
- 완전한 POSIX FS와 S3 볼륨을 제공하고, FOSS이며, 관리, 모니터링, 재해 복구 등을 효과적으로 수행할 수 있는 SDS 시스템이 필요함.
- Ceph와 같은 시스템은 제외됨. GarageFS는 S3만 지원함.
-
SeaweedFS 개발자의 의견
- SeaweedFS는 Facebook의 Haystack 논문을 기반으로 한 블롭 스토리지 위에 구축됨.
- 아직 모든 기능이 완전히 개발되지는 않았지만, 클라우드 시대에 적합한 새로운 프로그래밍 방식을 제공함.
- 저장 공간이 필요할 때는 공간을 할당하고 파일 ID를 받아 메모리 블록을 가리키는 포인터처럼 사용함.
-
SeaweedFS 사용 사례
- 50TB 이상의 멀티플레이어 매치 녹화(리플레이)를 저장하는 데 SeaweedFS를 사용함.
- 내장된 만료 기능을 활용하며, 사용과 새로운 기능의 추가 및 마이그레이션에 문제가 없음.
-
SeaweedFS와 Min.io에 대한 의견
- S3와 같은 자체 호스팅 솔루션에 대한 경험을 물어본 결과, SeaweedFS 사용자는 Min.io를, Min.io 사용자는 SeaweedFS를 추천함.
-
SeaweedFS의 장기 사용자
- 약 25만 개의 객체를 SeaweedFS에 저장하고 있으며, 그 중 많은 부분이 Cloudflare 뒤의 콜드 스토리지임.
- SeaweedFS는 Facebook의 Haystack에 매료되어 오랫동안 사용해왔으며, 매우 안정적이고 효율적임.
-
마이크로소프트의 저장 기술 역사
- 마이크로소프트는 과거에 여러 번 파일과 데이터베이스 사이의 간극을 메우려는 시도를 했으나, 대부분 실패함.
- 이러한 기술에 대한 빌 게이츠의 관심과 그의 실망감을 언급함.
-
분산 스토리지 선택 시 고려사항
- 분산 스토리지가 정말 필요한지, 자체적으로 샤딩할 수 있는지 고려해야 함.
- 블롭을 수정해야 하는지, 읽기/수정/교체로 충분한지 확인해야 함.
- 읽기와 쓰기의 비율을 고려해야 함.
- 메타데이터 변경 빈도를 고려해야 함.
- 동시에 같은 객체에 대한 쓰기를 관리하는 방법을 고려해야 함.
- 가용성, 일관성, 속도 중 어떤 것을 중요시하는지 선택해야 함.
- 분산 스토리지의 동시 실패로부터 복구하는 방법을 고려해야 함.
- 접근 제어 방법을 고려해야 함.
-
SeaweedFS와 Min.io의 성능 비교
- 100TB 이상의 오디오 데이터를 HDD에 저렴하게 저장하기 위해 SeaweedFS와 Min.io를 테스트함.
- SeaweedFS가 해당 사용 사례에 대해 더 나은 성능을 보임.