LabHub

오브젝트 스토리지와 S3 · 일관성과 버전 관리 · 실습

버저닝과 수명주기 다루기

LabHub 에서 이어서 보기

목표

버저닝을 켜고 버전이 쌓이는 과정, 삭제가 delete marker 로 표현되는 방식, 그리고 그것을 정리하는 수명주기 규칙까지 한 번에 다룬다.

왜 중요한가

버저닝은 실수 복구를 위한 안전망이지만 동시에 비용 함정입니다. 매일 같은 키에 로그를 덮어쓰는 코드에 버저닝을 켜면 1년 뒤 그 키 하나에 365개 버전이 쌓입니다. 목록에는 객체 하나로 보이는데 요금은 365배입니다. 그리고 "다 지웠는데 요금이 그대로"라는 문의의 원인이 delete marker 입니다 — 버전 ID 없이 지우면 데이터는 그대로 있고 표시만 하나 올라갑니다. 그래서 실무에서 버저닝을 켜는 결정과 수명주기 규칙을 거는 결정은 항상 함께 내려집니다. 이 실습의 7번 스텝이 그 기본 세트 세 가지를 다룹니다.

단계

1. 버킷 lab-vers 를 만들고 버저닝을 켠다. mc version info local/lab-versEnabled 가 보여야 한다.
2. local/lab-vers/doc.txt 에 서로 다른 내용을 3번 올린다. mc ls --versions local/lab-vers/doc.txt 가 3줄이어야 한다.
3. 가장 오래된 버전을 버전 ID 로 지정해 /root/vers/v1.txt 로 받는다. 내용이 첫 번째로 올린 것이어야 한다.
4. 버전 지정 없이 doc.txt 를 지운다. mc ls --versions local/lab-vers/doc.txt 가 4줄이 되고 그중 하나가 delete marker 여야 한다. /root/vers/marker.txtversions=4 has_delete_marker=true 를 적는다.
5. delete marker 를 버전 ID 로 지정해 지운다. mc cat local/lab-vers/doc.txt 가 3번째 내용을 돌려줘야 한다. /root/vers/restore.txtrestored=true 를 적는다.
6. /root/vers/versions.txtcurrent_bytes=<n>, noncurrent_bytes=<n>, total_bytes=<n> 세 줄을 적는다. total 은 두 값의 합이고 noncurrent 는 0보다 커야 한다.
7. /root/vers/lifecycle.json 에 수명주기 규칙을 담아 mc ilm rule import local/lab-vers 로 적용한다. 비현행 버전 30일 만료, 만료된 delete marker 정리, 미완료 멀티파트 7일 중단 — 세 가지 동작이 모두 들어가야 한다. 다만 MinIO 는 만료·전환 동작이 하나도 없는 규칙을 거부하므로, 중단 동작만 담은 규칙을 따로 두면 적용이 실패한다. 그 동작은 만료 규칙과 한 규칙에 합쳐 넣는다. mc ilm rule ls local/lab-vers 출력을 /root/vers/ilm.txt 에 저장한다.

참고

단계 7개

  1. 버킷 버저닝 켜기
  2. 같은 키에 세 번 써서 버전 쌓기
  3. 옛 버전 읽어 오기
  4. 삭제 후 delete marker 확인하기
  5. delete marker 를 지워 복구하기
  6. 비현행 버전 용량 계산하기
  7. 수명주기 규칙 적용하기