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 동작을 따릅니다.
객체에 버전 관리 기능이 있는 경우, 객체 삭제 요청은 현재 버전의 객체를 삭제하거나 공간을 확보하지 않습니다. 대신, 객체 삭제 요청은 객체의 현재 버전으로 0바이트 삭제 마커를 생성하여 이전 버전의 객체를 "비최신" 상태로 만듭니다. 객체 삭제 마커는 현재 버전이고 비최신 버전이 없을 때 만료된 객체 삭제 마커가 됩니다.
객체가 삭제되지 않았더라도 StorageGRID는 해당 객체의 현재 버전을 더 이상 사용할 수 없는 것처럼 동작합니다. 해당 객체에 대한 요청은 404 NotFound를 반환합니다. 하지만 현재 버전이 아닌 객체 데이터가 삭제되지 않았기 때문에, 현재 버전이 아닌 객체를 지정하는 요청은 성공할 수 있습니다.
클라이언트가 "브랜치 버킷"에서 버전 ID가 있는 객체 버전을 삭제하면 StorageGRID는 해당 객체 버전의 존재를 숨기지만 브랜치 버킷에 삭제 표시를 생성하지 않습니다. 클라이언트가 버전 ID가 없는 객체를 브랜치 버킷에서 삭제하면 StorageGRID는 표준 S3 동작에 따라 브랜치 버킷에 삭제 표시를 생성합니다.
버전 관리되는 개체를 삭제할 때 공간을 확보하거나 삭제 표시를 제거하려면 다음 중 하나를 사용하십시오.
-
S3 클라이언트 요청: S3 DELETE Object 요청에서 객체 버전 ID를 지정하십시오 (
DELETE /object?versionId=ID). 이 요청은 지정된 버전의 객체 복사본만 제거하며, 다른 버전은 여전히 공간을 차지한다는 점에 유의하십시오. -
버킷 수명 주기: 버킷 수명 주기 구성에서
NoncurrentVersionExpiration작업을 사용합니다. 지정된 NoncurrentDays 일수가 경과하면 StorageGRID는 현재 사용되지 않는 객체 버전의 모든 복사본을 영구적으로 삭제합니다. 이러한 객체 버전은 복구할 수 없습니다.버킷 수명 주기 구성의
NewerNoncurrentVersions작업은 버전이 지정된 S3 버킷에 보존할 비활성 버전의 수를 지정합니다. 비활성 버전이NewerNoncurrentVersions`에서 지정한 수보다 많으면 NoncurrentDays 값이 경과할 때 StorageGRID가 이전 버전을 삭제합니다. `NewerNoncurrentVersions임계값은 ILM에서 제공하는 수명 주기 규칙을 재정의하므로, ILM에서 삭제를 요청하더라도NewerNoncurrentVersions임계값 내의 버전을 가진 비활성 객체는 보존됩니다.만료된 객체 삭제 표시를 제거하려면
Expiration작업을 다음 태그 중 하나와 함께 사용하십시오:ExpiredObjectDeleteMarker,Days, 또는Date. -
ILM: "활성 정책 복제" 새 정책에 ILM 규칙 두 개를 추가합니다.
-
첫 번째 규칙: 객체의 이전 버전을 일치시키기 위한 참조 시간으로 "Noncurrent time"을 사용합니다. "ILM 규칙 생성 마법사의 1단계(세부 정보 입력)"에서 "버전 관리가 활성화된 S3 버킷에서 이 규칙을 이전 객체 버전에만 적용하시겠습니까?"라는 질문에 *예*를 선택합니다.
-
두 번째 규칙: 수집 시간*을 현재 버전과 일치시키는 데 사용합니다. "Noncurrent time" 규칙은 정책에서 *수집 시간 규칙보다 위에 위치해야 합니다.
만료된 객체 삭제 표시를 제거하려면 현재 삭제 표시와 일치하는 수집 시간 규칙을 사용하십시오. 삭제 표시는 *일*의 *기간*이 경과하고 현재 삭제 표시가 만료된 경우에만 제거됩니다(현재 버전이 아닌 다른 버전이 없는 경우).
-
-
버킷에서 객체 삭제: 테넌트 관리자를 사용하여 삭제 마커를 포함한 객체를 버킷에서 "모든 객체 버전 삭제" 삭제할 수 있습니다.
버전이 지정된 객체를 삭제하면 StorageGRID는 해당 객체의 현재 버전으로 0바이트 크기의 삭제 마커를 생성합니다. 버전이 지정된 버킷을 삭제하려면 모든 객체와 삭제 마커를 제거해야 합니다.
-
StorageGRID 11.7 이하 버전에서 생성된 삭제 마커는 S3 클라이언트 요청을 통해서만 제거할 수 있으며, ILM, 버킷 수명 주기 규칙 또는 버킷 내 객체 삭제 작업으로는 제거되지 않습니다.
-
StorageGRID 11.8 이상에서 생성된 버킷의 삭제 마커는 ILM, 버킷 수명 주기 규칙, 버킷 내 객체 삭제 작업 또는 명시적인 S3 클라이언트 삭제를 통해 제거할 수 있습니다.