# SeaweedFS - 블롭, 객체, 파일 및 데이터레이크를 위한 빠른 분산 스토리지 시스템

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=13184](https://news.hada.io/topic?id=13184)
- GeekNews Markdown: [https://news.hada.io/topic/13184.md](https://news.hada.io/topic/13184.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-02-03T22:35:21+09:00
- Updated: 2024-02-03T22:35:21+09:00
- Original source: [github.com/seaweedfs](https://github.com/seaweedfs/seaweedfs)
- Points: 9
- Comments: 1

## Topic Body

- 단순하고 확장성이 뛰어난 분산 파일 시스템  
- 목표는 수십억 개의 파일을 저장하고 빠르게 제공하는 것  
- 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는 작은 파일을 효율적으로 관리하고 빠른 파일 제공을 목표로 하는 분산 파일 시스템임. 이는 대용량 데이터를 다루는 현대의 웹 서비스에 매우 적합함.  
- 다양한 저장소 및 데이터베이스와의 호환성을 통해 유연성을 제공하며, 클라우드 통합 기능으로 비용 효율적인 데이터 관리가 가능함.  
- 오픈 소스 프로젝트로서 커뮤니티의 지원을 받으며 지속적으로 발전하고 있어, 기술적인 관점에서도 흥미로운 프로젝트임.

## Comments



### Comment 22796

- Author: neo
- Created: 2024-02-03T22:35:21+09:00
- Points: 2

###### [Hacker News 의견](https://news.ycombinator.com/item?id=39235593) 
- **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가 해당 사용 사례에 대해 더 나은 성능을 보임.
