StorageGRIDによるオブジェクトの削除方法
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 は、削除リクエストへの応答時に Amazon S3 の動作に従います。これらのリクエストが S3 クライアントからのもの、S3 バケットのライフサイクルの有効期限切れ、または ILM ポリシーの要件によるものかを問わず。
オブジェクトがバージョン管理されている場合、オブジェクトの削除要求はオブジェクトの現在のバージョンを削除せず、空き容量も確保しません。その代わりに、オブジェクト削除要求は、オブジェクトの現在のバージョンとしてゼロバイトの削除マーカーを作成し、それによってオブジェクトの以前のバージョンは「非現行」となります。オブジェクト削除マーカーは、それが現在のバージョンであり、かつ非現行のバージョンが存在しない場合、期限切れのオブジェクト削除マーカーになります。
オブジェクトが削除されていないにもかかわらず、StorageGRID はオブジェクトの現在のバージョンが利用できなくなったかのように動作します。そのオブジェクトへのリクエストは 404 NotFound を返します。ただし、非現行のオブジェクトデータは削除されていないため、オブジェクトの非現行バージョンを指定したリクエストは成功する場合があります。
クライアントがバージョン ID を持つオブジェクトバージョンを"ブランチバケット"から削除すると、StorageGRID はオブジェクトバージョンの存在を隠蔽しますが、ブランチバケットに削除マーカーは作成されません。クライアントがブランチバケットからバージョン ID のないオブジェクトを削除した場合、StorageGRID は標準の S3 動作に従って、ブランチバケットに削除マーカーを作成します。
バージョン管理されたオブジェクトを削除する際に空き容量を確保するため、または削除マーカーを削除するには、次のいずれかの方法を使用してください。
-
S3クライアントリクエスト:S3 DELETEオブジェクトリクエストでオブジェクトバージョンIDを指定します(
DELETE /object?versionId=ID)。このリクエストは、指定されたバージョンのオブジェクトコピーのみを削除することに注意してください(他のバージョンは引き続き容量を占有します)。 -
バケットのライフサイクル:バケットライフサイクル設定の `NoncurrentVersionExpiration`アクションを使用します。指定した NoncurrentDays の数に達すると、StorageGRID は最新でないオブジェクトバージョンのすべてのコピーを完全に削除します。これらのオブジェクトバージョンは復元できません。
バケットライフサイクル設定の `NewerNoncurrentVersions`アクションは、バージョン管理されたS3バケットに保持される非現行バージョンの数を指定します。非現行バージョンの数が `NewerNoncurrentVersions`で指定された数より多い場合、NoncurrentDaysの値が経過すると、StorageGRIDは古いバージョンを削除します。 `NewerNoncurrentVersions`のしきい値は、ILMが提供するライフサイクルルールを上書きします。つまり、バージョンが `NewerNoncurrentVersions`のしきい値内にある非現行オブジェクトは、ILMが削除を要求した場合でも保持されます。
期限切れのオブジェクト削除マーカーを削除するには、
Expiration`アクションに以下のタグのいずれかを使用します: `ExpiredObjectDeleteMarker、Days、またはDate。 -
ILM: "有効なポリシーを複製する" 新しいポリシーに2つのILMルールを追加します:
-
第一のルール:オブジェクトの非現行バージョンと一致させるために、「非現行時間」を基準時間として使用します。"ILMルール作成ウィザードのステップ1(詳細の入力)"で、「このルールを古いオブジェクトバージョンのみに適用しますか(バージョン管理が有効になっている S3 バケット内)?」という質問に対して「はい」を選択してください。
-
2つ目のルール:*取り込み時間*を使用して、現在のバージョンと一致させます。「非現行時間」ルールは、ポリシー内で*取り込み時間*ルールより上に記述する必要があります。
期限切れのオブジェクト削除マーカーを削除するには、*取り込み時間*ルールを使用して現在の削除マーカーに一致させます。削除マーカーは、*日数*の*期間*が経過し、現在の削除マーカーの有効期限が切れた場合(非現行バージョンが存在しない場合)にのみ削除されます。
-
-
バケット内のオブジェクトを削除する: テナントマネージャーを使用して、削除マーカーを含む"すべてのオブジェクトバージョンを削除する"をバケットから削除します。
バージョン管理されたオブジェクトが削除されると、StorageGRID はオブジェクトの現在のバージョンとして、ゼロバイトの削除マーカーを作成します。バージョン管理されたバケットを削除するには、まずすべてのオブジェクトと削除マーカーを削除する必要があります。
-
StorageGRID 11.7 以前で作成された削除マーカーは、S3 クライアントリクエストによってのみ削除できます。ILM、バケットライフサイクルルール、またはバケット内のオブジェクトの削除操作では削除されません。
-
StorageGRID 11.8 以降で作成されたバケットの削除マーカーは、ILM、バケットライフサイクルルール、バケット内のオブジェクトの削除操作、または明示的な S3 クライアントの削除によって削除できます。