オブジェクトの削除方法
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 の動作に従います。
オブジェクトがバージョン管理されている場合、オブジェクトの削除要求ではオブジェクトの現在のバージョンは削除されず、スペースも解放されません。代わりに、オブジェクトの削除要求では、オブジェクトの現在のバージョンとしてゼロバイトの削除マーカーが作成され、以前のバージョンのオブジェクトが「noncurrent」になります。オブジェクト削除マーカーが最新バージョンであり、最新でないバージョンがない場合、オブジェクト削除マーカーは期限切れのオブジェクト削除マーカーになります。
オブジェクトが削除されていなくても、 StorageGRID は現在のバージョンのオブジェクトが使用できなくなったかのように動作します。そのオブジェクトに対する要求は 404 NotFound を返します。ただし、最新でないオブジェクトデータは削除されていないため、最新でないバージョンのオブジェクトを指定する要求は成功します。
バージョン管理オブジェクトを削除するときに領域を解放したり、削除マーカーを削除したりするには、次のいずれかを使用します。
-
* S3クライアント要求*:S3 DELETE Object要求にオブジェクトのバージョンIDを指定し(`DELETE /object?versionId=ID`ます)。この要求は、指定したバージョンのオブジェクトコピーだけを削除します(他のバージョンは引き続きスペースを消費します)。
-
バケットライフサイクル:バケットライフサイクル設定のアクションを使用します
NoncurrentVersionExpiration
。NoncurrentDays で指定した日数に達すると、 StorageGRID は最新でないオブジェクトバージョンのコピーをすべて完全に削除します。これらのオブジェクトバージョンはリカバリできません。バケットライフサイクル設定のアクションは、
NewerNoncurrentVersions`バージョン管理されたS3バケットに保持する最新でないバージョンの数を指定します。指定した数よりも最新でないバージョンが多い場合は `NewerNoncurrentVersions`StorageGRID、NoncurrentDaysの値が経過すると古いバージョンが削除されます。しきい値は `NewerNoncurrentVersions
、ILMが提供するライフサイクルルールよりも優先されます。つまり、ILMが削除を要求した場合、しきい値内のバージョンが最新でないオブジェクトが `NewerNoncurrentVersions`保持されます。期限切れのオブジェクト削除マーカーを削除するには、、
Days
、またはのDate`いずれかのタグを指定したアクションを `ExpiredObjectDeleteMarker`使用します `Expiration
。 -
* ILM *:"アクティブポリシーのクローンを作成する"2つのILMルールを新しいポリシーに追加します。
-
最初のルール:[Reference Time]に「noncurrent time」を使用して最新でないバージョンのオブジェクトを照合します。で"ILMルールの作成ウィザードの手順1(詳細を入力)"、「Apply this rule to older object versions only(in S3 bucket with versioning enabled)?」という質問に対して* Yes *を選択します。
-
2つ目のルール:*取り込み時間*を使用して現在のバージョンと一致させます。「noncurrent time」ルールは、ポリシーの「取り込み時間」ルールの上に表示する必要があります。
期限切れのオブジェクト削除マーカーを削除するには、取り込み時間*ルールを使用して現在の削除マーカーと一致させます。削除マーカーは、 Time Period * of * Days *が経過し、現在の削除メーカーが期限切れになった場合にのみ削除されます(最新でないバージョンはありません)。
-
-
バケット内のオブジェクトを削除:テナントマネージャを使用して、"すべてのオブジェクトバージョンを削除"バケットから削除マーカーを含めます。
バージョン管理オブジェクトが削除されると、StorageGRIDはオブジェクトの現在のバージョンとしてゼロバイトの削除マーカーを作成します。バージョン管理されたバケットを削除する前に、すべてのオブジェクトと削除マーカーを削除する必要があります。
-
StorageGRID 11.7以前で作成された削除マーカーは、S3クライアント要求でのみ削除できます。ILM、バケットライフサイクルルール、またはバケット処理のDeleteオブジェクトでは削除されません。
-
StorageGRID 11.8以降で作成されたバケットの削除マーカーは、ILM、バケットライフサイクルルール、バケット処理のオブジェクトの削除、またはS3クライアントの明示的な削除によって削除できます。