Backblaze S3 문제: 삭제 후 업로드 중복

저는 S3 스토리지로 Backblaze를 사용 중이며, 고아 업로드 정리 설정이 켜져 있습니다. 문제는 고아 업로드가 삭제되는 대신 0바이트의 중복 파일이 생성된다는 점입니다.
아래 예를 참고하세요. **(2)**는 동일한 이름의 파일 수를 나타냅니다. 폴더를 확장하면 원래 파일이 여전히 존재하는 것을 볼 수 있으며, 0바이트 파일도 함께 있습니다. 비슷한 문제를 겪으신 분 계신가요? Backblaze의 문제인지, 아니면 설정 문제인지요? 감사합니다.

Discourse는 S3 API를 사용하며, AWS S3에서 정상적으로 작동하므로 이 문제는 Backblaze 측에서 해결해야 할 사항으로 남겨두었습니다. Backblaze의 지원팀에 문의해 보시는 것이 좋겠습니다. 업로드용 객체 스토리지 사용 (S3 & 클론) 문서에 이 문제에 대한 참고 사항을 추가하겠습니다.

생략호가 0바이트 파일의 이름이 잘려 나갔음을 시사합니다. 전체 파일 이름은 무엇인가요? 해당 버킷에 파일 수명 주기가 설정되어 있고, 그 파일이 그들이 부르는 바와 같은 "hide marker"일 것이라고 추정합니다.

수명 주기가 만료되면 두 버전 모두 사라져야 합니다.

잘린 부분은 “숨김” 상태입니다. 말씀이 맞으신 것 같습니다. 중복된 파일들은 모두 최근에 업로드된 것들인 것 같습니다. 잠시 기다려 보다가 사라지는지 확인해 보겠습니다. 감사합니다.

안녕하세요,
문제가 해결되었는지 알려주실 수 있을까요?
마지막 게시글 이후 1년이 넘게 지났으니, 이제 괜찮은 것 같길 바랍니다… :slight_smile:

해결되지 않은 문제가 아직 남아 있습니다. 방금 BackBlaze에서 고아 파일을 수동으로 모두 삭제했습니다. 정기적으로 스토리지를 정리하는 것 자체가 하나의 작업이므로, 이 시점에서 S3로 이전하는 것이 좋겠다고 생각합니다.

경험에 대한 업데이트를 공유합니다…
무료 B2 계정(즉, 10GB)을 사용 중이며 결제 수단을 등록하지 않았습니다.

백업 파일은 순환되며, ‘숨김’ 파일은 며칠 후에 영구적으로 삭제됩니다. 저는 동시에 최대 7개의 파일만 보유하고 있습니다(Discourse는 최대 5개의 일일 백업 순환을 지원합니다). 각 백업 파일의 크기가 약 500MB를 넘지 않기 때문에, 저는 유료 서비스를 구매하거나 ‘고아’ 파일을 수동으로 삭제해 본 적이 없습니다.

이 문제에 대해 변화가 있었나요? 누군가 Backblaze 지원에 이 문제를 문의해 보았나요?

하지만 문제는 'Uploads’에 있는 것 같습니다!!
'Backups’는 관리할 파일이 그렇게 많지 않기 때문입니다. 수동으로라도 충분히 관리할 수 있습니다.

이 문제가 계속되는 것 같습니다.

@Falco 님, Discourse가 고아 객체를 정리하기 위해 어떤 S3 작업을 수행하는지 자세히 설명해 주시겠어요?

감사합니다. 여기에는 copy_to_tombstone가 관련되어 있는 것 같습니다. 톰스톤(tombstone)과 고아 파일(orphaned files)에 대한 문서를 찾지 못해, 포럼에서 읽은 내용을 바탕으로 작동 방식을 추측할 수밖에 없습니다. 제가 틀렸다면 지적해 주십시오:

  1. 고아 파일이 식별되면(고아 업로드 격리 기간 시간), 톰스톤 폴더로 복사됩니다(copy_object).
  2. 그 후 delete_object로 삭제됩니다(또는 삭제되어야 합니다).
  3. 해당 시점이 되면(삭제된 업로드 정화 기간 일) 톰스톤 폴더에서 삭제됩니다.

이것이 맞습니까?

Backblaze에서 확인한 바로는, 실제로 톰스톤 폴더로 복사되는 것으로 보입니다. 다만 삭제되지 않고, 대신 빈 숨김 버전이 생성됩니다.

그래서 지원팀에 문의했고, 고아(orphan) 파일 문제에 대한 해결책이 있는 것 같습니다. Backblaze 지원팀에서 이렇게 답변했습니다:

여기에는 여러 가지 상황이 복합적으로 작용하고 있습니다. 고객님의 계정을 확인해 본 결과, 버킷의 라이프사이클 규칙이 모든 파일 유지(Keep all files) 로 설정되어 있습니다. 라이프사이클 규칙을 파일의 마지막 버전만 유지(Keep only the last version of the file) 로 변경하면, 숨겨진 파일은 숨겨진 지 24시간 후에 삭제되어 저장 공간이 확보됩니다.

여기에 한 가지 더 추가할 점이 있습니다. S3 호환 서비스를 사용하는 경우, 객체 삭제(object delete)가 호출되면 해당 객체는 숨겨집니다. 그리고 이후 버킷의 라이프사이클 규칙에 따라 삭제되거나 숨겨진 상태로 유지됩니다. 고객님의 경우, 모든 파일 유지 규칙 때문에 파일이 숨겨진 상태로 남아 삭제가 되지 않는 것입니다.

객체 삭제 호출 시 객체가 실제로 삭제되려면, 삭제 호출과 함께 파일 버전 ID를 제공해야 합니다. 하지만 파일이 단순히 숨겨지는 경우 통합(integration)이 이를 수행하지 않는다고 생각합니다.

이러한 파일들이 버킷에서 삭제되려면 Backblaze 계정에 로그인하여 해당 버킷으로 이동한 뒤, 라이프사이클 설정을 파일의 마지막 버전만 유지(Keep only the last version of the file). 로 업데이트해야 합니다. 이렇게 하면 숨겨진 파일이 24시간 후 버킷에서 삭제됩니다.

기본적으로 Backblaze는 새로 생성된 버킷에 대해 “모든 파일 유지” 라이프사이클 규칙을 설정합니다. 아마도 이것이 모든 사용자가 고아 파일 문제로 어려움을 겪는 이유일 것입니다. 라이프사이클 규칙을 "파일의 마지막 버전만 유지"로 변경하면, 파일이 숨겨진 후 24시간이 지나면 고아 파일이 삭제됩니다.

이것이 이 스레드에서 언급할 가치가 있을 것 같습니다:

좋은 발견이네요! 위키에 수정해 주실 수 있나요?

위키인 줄 몰랐어요. 수정했습니다.