オブジェクトの削除方法
StorageGRID は、クライアント要求に直接応答して、または S3 バケットのライフサイクルの有効期限や ILM ポリシーの要件の結果として自動的にオブジェクトを削除できます。オブジェクトを削除するさまざまな方法と、 StorageGRID が削除要求を処理する方法を理解することで、オブジェクトをより効率的に管理できるようになります。
StorageGRID、次の 2 つの方法のいずれかを使用してオブジェクトを削除できます。
-
同期削除: 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 はオブジェクトの現在のバージョンが使用できなくなったかのように動作します。そのオブジェクトへのリクエストは 404 NotFound を返します。ただし、非現在のオブジェクト データは削除されていないため、オブジェクトの非現在のバージョンを指定する要求は成功する可能性があります。
バージョン管理されたオブジェクトを削除するときにスペースを解放したり、削除マーカーを削除したりするには、次のいずれかを使用します。
-
S3クライアントリクエスト: S3 DELETE ObjectリクエストでオブジェクトバージョンIDを指定します(
DELETE /object?versionId=ID
)。このリクエストでは、指定されたバージョンのオブジェクト コピーのみが削除されることに注意してください (他のバージョンは引き続きスペースを占有します)。 -
バケットライフサイクル: `NoncurrentVersionExpiration`バケットのライフサイクル構成におけるアクション。指定された NoncurrentDays の数に達すると、 StorageGRID は非現在のオブジェクト バージョンのすべてのコピーを永久に削除します。これらのオブジェクト バージョンは回復できません。
その
NewerNoncurrentVersions`バケットライフサイクル設定のアクションは、バージョン管理された S3 バケットに保持される非現在のバージョンの数を指定します。非現行バージョンが `NewerNoncurrentVersions`指定すると、 StorageGRID はNoncurrentDays 値が経過すると古いバージョンを削除します。その `NewerNoncurrentVersions`しきい値はILMが提供するライフサイクルルールをオーバーライドします。つまり、 `NewerNoncurrentVersions
ILM が削除を要求した場合、しきい値は保持されます。期限切れのオブジェクト削除マーカーを削除するには、
Expiration`次のいずれかのタグが付いたアクション: `ExpiredObjectDeleteMarker
、Days
、 またはDate
。 -
ILM:"アクティブなポリシーを複製する"新しいポリシーに 2 つの ILM ルールを追加します。
-
最初のルール: オブジェクトの非現在のバージョンと一致させるために、「非現在の時間」を参照時間として使用します。で"ILMルールの作成ウィザードのステップ1(詳細の入力)"で、「このルールを古いオブジェクト バージョンにのみ適用しますか (バージョン管理が有効になっている S3 バケット内)?」という質問に対して [はい] を選択します。
-
2 番目のルール: 現在のバージョンと一致するように Ingest time を使用します。 「非現在の時刻」ルールは、ポリシー内の 取り込み時刻 ルールの上に表示する必要があります。
期限切れのオブジェクト削除マーカーを削除するには、現在の削除マーカーと一致する Ingest time ルールを使用します。削除マーカーは、*期間*の*日数*が経過し、現在の削除マーカーの有効期限が切れた場合にのみ削除されます (現在のバージョン以外のバージョンはありません)。
-
-
バケット内のオブジェクトを削除する: テナントマネージャを使用して"すべてのオブジェクトバージョンを削除"バケットから、削除マーカーを含むすべてのデータを削除します。
バージョン管理されたオブジェクトが削除されると、 StorageGRID はオブジェクトの現在のバージョンとしてゼロバイトの削除マーカーを作成します。バージョン管理されたバケットを削除する前に、すべてのオブジェクトと削除マーカーを削除する必要があります。
-
StorageGRID 11.7 以前で作成された削除マーカーは、S3 クライアント リクエストを通じてのみ削除でき、ILM、バケット ライフサイクル ルール、またはバケット内のオブジェクトの削除操作では削除されません。
-
StorageGRID 11.8 以降で作成されたバケットからの削除マーカーは、ILM、バケットライフサイクルルール、バケット操作内のオブジェクトの削除、または明示的な S3 クライアントの削除によって削除できます。