StorageGRID가 오브젝트 및 삭제 마커를 삭제하는 방법
StorageGRID는 클라이언트 요청에 직접 응답하여 오브젝트를 삭제하거나, S3 버킷 수명 주기 만료 또는 ILM 정책 요구 사항에 따라 자동으로 오브젝트를 삭제할 수 있습니다. 오브젝트를 삭제하는 다양한 방법, StorageGRID의 삭제 요청 처리 방식, 그리고 만료된 삭제 마커를 삭제하는 방법을 이해하면 오브젝트를 더욱 효율적으로 관리할 수 있습니다.
StorageGRID는 다음 두 가지 방법 중 하나를 사용하여 오브젝트를 삭제할 수 있습니다.
-
동기식 삭제: StorageGRID가 클라이언트의 삭제 요청을 수신하면 모든 오브젝트 복사본을 즉시 제거합니다. 복사본이 제거된 후 클라이언트에게 삭제가 성공했음을 알립니다.
-
오브젝트는 삭제 대기열에 추가됩니다: StorageGRID가 삭제 요청을 수신하면 해당 오브젝트는 삭제 대기열에 추가되고 클라이언트에 삭제가 성공적으로 완료되었다는 알림이 즉시 전송됩니다. 오브젝트 복사본은 백그라운드 ILM 처리 과정을 통해 나중에 제거됩니다.
오브젝트를 삭제할 때 StorageGRID는 삭제 성능을 최적화하고 잠재적인 삭제 백로그를 최소화하며 공간을 가장 빠르게 확보하는 방법을 사용합니다.
이 표에는 StorageGRID에서 각 방법을 사용하는 경우가 요약되어 있습니다.
| 삭제 수행 방법 | 사용 시 |
|---|---|
오브젝트는 삭제 대기열에 추가됩니다 |
다음 조건 중 * 어느 * 가 참일 경우:
|
객체가 즉시 제거됩니다(동기식 삭제). |
S3 클라이언트가 삭제 요청을 하고 다음 조건 중 * 모든 * 가 충족되는 경우:
|
S3 클라이언트가 삭제 요청을 하면 StorageGRID는 삭제 큐에 개체를 추가하는 것으로 시작합니다. 그런 다음 동기식 삭제 수행 으로 전환됩니다. 백그라운드 삭제 큐에 처리할 개체가 있는지 확인함으로써 StorageGRID는 특히 동시 접속 수가 적은 클라이언트의 경우 삭제 작업을 보다 효율적으로 처리할 수 있으며 클라이언트 삭제 백로그를 방지할 수 있습니다.
객체를 삭제하는 데 필요한 시간입니다
StorageGRID에서 객체를 삭제하는 방법은 시스템이 수행하는 방식에 영향을 미칠 수 있습니다.
-
StorageGRID가 동기 삭제를 수행할 때 결과를 클라이언트에 반환하는 데 StorageGRID가 최대 30초가 걸릴 수 있습니다. 즉, StorageGRID에서 삭제할 개체를 큐에 대기할 때보다 복사본이 실제로 더 빠르게 제거되더라도 삭제가 더 느리게 진행되는 것처럼 보일 수 있습니다.
-
대량 삭제 시 삭제 성능을 면밀히 모니터링하는 경우, 일정 개수의 오브젝트가 삭제된 후 삭제 속도가 느려지는 것처럼 보일 수 있습니다. 이러한 변화는 StorageGRID가 삭제를 위해 오브젝트를 큐에 대기시키는 방식에서 동기식 삭제 방식으로 전환하면서 발생합니다. 삭제 속도가 느려진 것처럼 보이는 것은 오브젝트 복사본이 더 느리게 제거된다는 의미가 아닙니다. 오히려 평균적으로 공간이 더 빠르게 확보되고 있음을 나타냅니다.
많은 수의 개체를 삭제하는 경우 우선 순위가 공간을 빠르게 확보하는 것이라면 클라이언트 요청을 사용하여 ILM 또는 다른 방법을 사용하여 개체를 삭제하지 않고 개체를 삭제하는 것이 좋습니다. 일반적으로 StorageGRID에서는 동기 삭제를 사용할 수 있으므로 클라이언트에서 삭제할 때 공간이 더 빠르게 확보됩니다.
개체를 삭제한 후 공간을 확보하는 데 필요한 시간은 다음과 같은 여러 요소에 따라 달라집니다.
-
오브젝트 복사본이 동기식으로 제거되는지, 아니면 나중에 제거를 위해 대기하는지(클라이언트 삭제 요청) 여부를 나타냅니다.
-
클라이언트 삭제 및 기타 방법 모두에 대해 개체 복사본이 제거용으로 대기될 때 그리드 내의 개체 수 또는 그리드 리소스의 사용 가능성 등의 기타 요소
S3 버전 오브젝트 삭제 방법
S3 버킷에 버전 관리가 활성화된 경우, StorageGRID는 S3 클라이언트, S3 버킷 수명 주기 만료 또는 ILM 정책 요구 사항에서 오브젝트 삭제 요청에 응답할 때 Amazon S3의 동작을 따릅니다.
|
|
스토리지 공간을 확보하기 위해 오브젝트를 삭제하는 것은 영구적이며 복구할 수 없습니다. |
StorageGRID가 버전 ID를 지정하는 오브젝트 삭제 요청(S3 클라이언트 요청 등)과 지정하지 않는 요청을 처리하는 방식을 이해하는 것이 중요합니다. 버전 ID가 없는 오브젝트 삭제 요청은 현재 버전의 오브젝트를 삭제하지 않으며 스토리지 공간을 확보하지 않습니다. 대신, 오브젝트의 현재 버전으로 0바이트 삭제 표시를 생성하여 이전 버전의 오브젝트를 "비현재" 상태로 만듭니다. 비현재 오브젝트는 버전 ID를 사용하여 식별됩니다.
오브젝트가 스토리지에서 제거되지 않았더라도 StorageGRID는 해당 오브젝트의 현재 버전을 더 이상 사용할 수 없는 것처럼 동작합니다. 해당 오브젝트에 대한 요청은 404 NotFound를 반환합니다. 하지만 현재 버전이 아닌 오브젝트 데이터는 제거되지 않았으므로, 현재 버전이 아닌 오브젝트의 버전 ID를 지정하는 요청은 성공할 수 있습니다.
오브젝트 버전 관리가 일시 중단된 버킷의 오브젝트에 대해 버전 ID 없이 오브젝트 삭제 요청을 보내면 StorageGRID는 해당 오브젝트에 대해 null `versionId`이 있는 삭제 마커를 생성합니다. 오브젝트 하나의 null 버전만 가질 수 있으므로, 이로써 이전의 null 버전이 대체되어 영구적으로 삭제됩니다.
클라이언트가 "가지 버킷"에서 버전 ID가 있는 객체 버전을 삭제하면 StorageGRID는 해당 객체 버전의 존재를 숨기지만 브랜치 버킷에 삭제 표시를 생성하지 않습니다. 클라이언트가 버전 ID가 없는 객체를 브랜치 버킷에서 삭제하면 StorageGRID는 표준 S3 동작에 따라 브랜치 버킷에 삭제 표시를 생성합니다.
오브젝트 데이터는 비활성 버전으로 유지되므로 버전 관리 버킷에서 오브젝트를 삭제해도 일반적으로 스토리지 공간이 확보되지 않습니다. 유지된 비활성 오브젝트 버전을 영구적으로 제거하고 공간을 확보하려면 다음 옵션 중 하나를 사용하십시오.
-
S3 클라이언트 요청: S3 DELETE Object 요청에서 오브젝트 버전 ID를 지정하십시오 (
DELETE /object?versionId=ID). 이 요청은 지정된 버전 ID에 해당하는 오브젝트 복사본만 제거합니다. 여러 개의 비최신 버전이 있는 경우, 원하는 만큼 각 비최신 버전에 대해 이 과정을 반복하십시오. -
버킷 수명 주기: 버킷 수명 주기 구성에서
NoncurrentVersionExpiration작업을 사용합니다. 지정된 NoncurrentDays 일수가 경과하면 StorageGRID는 현재 사용되지 않는 객체 버전의 모든 복사본을 영구적으로 삭제합니다.`NewerNoncurrentVersions`버킷 수명 주기 구성의 작업은 버전 S3 버킷에 보존되는 비최신 버전 수를 지정합니다. 지정된 것보다 더 많은 비최신 버전이 있으면 `NewerNoncurrentVersions` StorageGRID는 NoncurrentDays 값이 경과되었을 때 이전 버전을 제거합니다. `NewerNoncurrentVersions`임계값은 ILM에서 제공하는 수명주기 규칙을 재정의합니다. 즉, ILM이 삭제를 요청할 경우 임계값 내에 버전이 있는 현재 개체가 `NewerNoncurrentVersions` 보존됩니다.
-
ILM: "비활성 시간"을 참조 시간으로 사용하고 이전 오브젝트 버전에만 적용되는 ILM 규칙을 구성합니다. 지정된 보존 기간이 만료되면 StorageGRID는 일치하는 비활성 오브젝트 버전을 제거합니다. "ILM 규칙 생성 마법사의 1단계(세부 정보 입력"에서 "이전 오브젝트 버전에만 이 규칙을 적용하시겠습니까?(버전 관리가 활성화된 S3 버킷에서)"라는 질문에 *예*를 선택하십시오.
-
버킷의 오브젝트 삭제: 테넌트 관리자를 사용하여 "모든 개체 버전을 삭제합니다".
S3 버전 관리 만료 삭제 표시가 삭제되는 방법
S3 버킷에 버전 관리가 활성화된 경우, 오브젝트 삭제 요청은 현재 버전의 오브젝트를 삭제하지 않으며 스토리지 공간을 확보하지 않습니다. 대신, 오브젝트 삭제 요청은 현재 버전의 오브젝트로서 0바이트 삭제 마커를 생성하며, 이로 인해 이전 버전의 오브젝트가 "비현재" 상태가 됩니다.
삭제 마커는 현재 버전이고 이전 버전이 없을 때 만료된 삭제 마커가 됩니다. 만료된 삭제 마커에는 오브젝트 데이터가 포함되어 있지 않지만 버킷 목록 및 메트릭에 표시되며 버킷 삭제를 방지합니다.
만료된 삭제 마커를 삭제하도록 StorageGRID를 구성하는 방법은 버킷이 장기 사용(버전 관리 활성화 또는 일시 중단)을 위한 것인지 아니면 삭제를 위해 준비 중인지에 따라 다릅니다.
-
기존 버킷에서 만료된 삭제 마커 자동 정리: 오브젝트 버전을 유지하면서 (버전 관리가 활성화된) 버킷에서 만료된 삭제 마커를 자동으로 제거하려면
Expiration작업 및ExpiredObjectDeleteMarker구성으로 버킷 수명 주기 규칙을 구성해야 합니다. 이 작업은 만료된 삭제 마커에만 적용됩니다. 삭제 마커가 만료되면 "버킷 수명 주기 규칙을 사용하여 만료된 오브젝트 삭제 표시를 제거하는 예"에 표시된 것처럼 자동으로 제거됩니다.ILM 정책은 현재 오브젝트 버전과 만료된 삭제 마커를 구분할 수 없습니다. 오브젝트 버전을 유지하면서 만료된 삭제 마커만 제거하려면 ILM 정책 대신 버킷 수명 주기에서 `ExpiredObjectDeleteMarker`을 사용하십시오. 오브젝트 버전 관리가 일시 중단된 버킷의 오브젝트에 대해 버전 ID 없이 삭제 요청을 보내면 StorageGRID는 해당 오브젝트에 대해 버전 ID가
NULL`인 삭제 마커를 생성합니다. 오브젝트는 null 버전을 하나만 가질 수 있으므로 이 마커는 이전 `NULL버전 ID를 대체하고 영구적으로 삭제합니다. 만료된 null 버전 삭제 마커를 삭제하려면 `ExpiredObjectDeleteMarker`을 버킷 수명 주기에서 사용해야 합니다. "버전 관리를 일시 중단한 후 현재 버전이 아닌 버전과 만료된 삭제 표시를 삭제하는 예시"에 나와 있는 것처럼. -
버킷 삭제 준비: 버킷을 삭제하려는데 버킷의 모든 콘텐츠가 더 이상 필요하지 않지만 만료된 마커로 인해 삭제가 방지되는 경우, 테넌트 관리자를 사용하여 "삭제 마커, 현재 버전 및 비현재 버전을 포함하여 모든 오브젝트 버전을 제거합니다.", 버킷에서 삭제를 준비합니다.
버킷에서 삭제 마커를 제거하는 방법은 StorageGRID 버전에 따라 다릅니다.
-
StorageGRID 11.8 이상에서 생성된 버킷의 삭제 마커는 ILM, 버킷 라이프사이클 규칙, 버킷 작업의 오브젝트 삭제 또는 명시적 S3 클라이언트 삭제로 제거할 수 있습니다.
-
StorageGRID 11.7 이하 버전에서 생성된 삭제 마커는 S3 클라이언트 요청을 통해서만 제거할 수 있습니다. ILM, 버킷 수명 주기 규칙 또는 버킷 내 오브젝트 삭제 작업으로는 제거되지 않습니다.