オブジェクトの削除方法
StorageGRID は、クライアント要求に直接応答してオブジェクトを削除するか、 S3 バケットライフサイクルの終了または ILM ポリシーの要件に応じて自動的にオブジェクトを削除します。オブジェクトのさまざまな削除方法と StorageGRID による削除要求の処理方法を理解しておくと、オブジェクトをより効率的に管理できるようになります。
StorageGRID では、次のいずれかの方法でオブジェクトを削除できます。
-
同期削除: StorageGRID がクライアントの削除要求を受け取ると、すべてのオブジェクトコピーがただちに削除されます。コピーが削除されると、削除が成功したことがクライアントに通知されます。
-
オブジェクトは削除キューに登録されます。 StorageGRID が削除要求を受け取ると、オブジェクトは削除キューに登録され、削除が成功したことがクライアントにすぐに通知されます。オブジェクトコピーは、あとでバックグラウンド ILM 処理によって削除されます。
StorageGRID では、オブジェクトを削除する際に、削除のパフォーマンスを最適化し、削除のバックログを最小限に抑え、スペースを最も早く解放する方法を使用します。
次の表は、 StorageGRID がどのような場合に各メソッドを使用するかを
削除方法 | 使用時 |
---|---|
オブジェクトは削除キューに登録されます |
次の条件のいずれか * が当てはまる場合:
|
オブジェクトをただちに削除(同期削除) |
S3 / Swift クライアントが削除要求を行い、次の * すべての条件が満たされている場合:
|
S3またはSwiftクライアントが削除要求を行うと、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
NoncurrentDaysの値が経過すると、StorageGRID は古いバージョンを削除します。。NewerNoncurrentVersions
しきい値は、ILMが提供するライフサイクルルール(内のバージョンが最新でないオブジェクト)よりも優先されますNewerNoncurrentVersions
しきい値は、ILMが削除を要求した場合に保持されます。 -
* ILM * : "アクティブポリシーのクローンを作成します" 2つのILMルールを新しいドラフトポリシーに追加します。
-
最初のルール:オブジェクトの最新でないバージョンを照合するには、参照時間として「noncurrent time」を使用します。インチ "ILMルールの作成ウィザードの手順1(詳細を入力)"で、「Apply this rule to old object versions only(S3バケットでバージョン管理が有効になっている場合)?」という質問に対して* Yes *を選択します。
-
2つ目のルール:*取り込み時間*を使用して現在のバージョンと一致させます。「noncurrent time」ルールは、ポリシーの*取り込み時間*ルールの上に配置する必要があります。
-
S3削除マーカーの削除方法
バージョン管理オブジェクトが削除されると、StorageGRID はオブジェクトの現在のバージョンとして削除マーカーを作成します。バケットからゼロバイトの削除マーカーを削除するには、S3クライアントがオブジェクトのバージョンを明示的に削除する必要があります。ILM、バケットライフサイクルルール、バケット処理のDeleteオブジェクトで削除マーカーが削除されることはありません。