LabHub

오브젝트 스토리지와 S3 · SeaweedFS — 작은 파일이 많을 때의 선택 · 실습

같은 워크로드를 두 스토리지에 넣고 비교하기

LabHub 에서 이어서 보기

목표

동일한 코퍼스를 파일시스템, S3 호환 스토리지, SeaweedFS 세 곳에 넣고 개수·시간·지연을 직접 재어, 스토리지 선택을 취향이 아니라 숫자로 하는 법을 익힌다.

왜 중요한가

스토리지 선택은 벤치마크 표를 옮겨 적는 것으로 결정되지 않습니다. 같은 제품이 워크로드에 따라 최선이 되기도 하고 최악이 되기도 하기 때문입니다. 4KiB 파일 2,000개에서 갈리는 차이가 200MiB 파일 하나에서는 사라지고, 그 반대도 있습니다. 이 실습은 그 사실을 스스로 측정해 확인하게 합니다. 특히 4번 스텝에서 파일 2,000개가 볼륨 파일 몇 개에 담기는지를 직접 세어 보면, "소파일에 강하다"는 문장이 구체적인 구조 이야기로 바뀝니다. 마지막 결정표는 나중에 실제 선택을 할 때 그대로 꺼내 쓸 수 있는 형태로 만듭니다.

단계

1. /root/cmp/corpus/ 아래에 4096바이트 파일 2,000개를 만든다. 이름은 f0000.bin 부터 f1999.bin 이다.
2. /root/cmp/fs.txtfiles=2000, data_bytes=8192000, disk_kb=<du -sk 결과> 세 줄을 적는다. disk_kb 는 데이터 크기보다 커야 한다.
3. 버킷 lab-cmp 를 만들어 코퍼스를 통째로 올리고 /root/cmp/s3.txtobjects=2000 seconds=<소수> 를 적는다.
4. 같은 코퍼스를 SeaweedFS 파일러의 /cmp/ 아래에 넣고 /root/cmp/sw.txtfiles=2000 dat_files=<n> seconds=<소수> 를 적는다. dat_files 는 20 이하여야 한다.
5. 무작위 100개를 각 저장소에서 읽어 /root/cmp/latency.csvstore,avg_ms 헤더와 fs, s3, seaweedfs 세 행을 적는다.
6. 200MiB 파일 하나를 세 저장소에 넣고 읽어 /root/cmp/bigfile.csvstore,put_ms,get_ms 헤더와 세 행을 적는다.
7. /root/cmp/decision.md 에 마크다운 표를 쓴다. 행 제목은 소파일 대량, 대용량 소수, S3 API 필요, 운영 인력 네 개이고 추천 열이 있어야 한다.

참고

단계 7개

  1. 비교용 코퍼스 만들기
  2. 파일시스템에 넣고 메타데이터 비용 재기
  3. S3 에 넣고 소요 시간 재기
  4. SeaweedFS 에 넣고 볼륨 파일 수 재기
  5. 무작위 읽기 지연 비교하기
  6. 큰 파일 하나로도 같은 비교 하기
  7. 선택 기준표 쓰기