日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

オブジェクトの削除方法

寄稿者

StorageGRID は、クライアント要求に直接応答してオブジェクトを削除するか、 S3 バケットライフサイクルの終了または ILM ポリシーの要件に応じて自動的にオブジェクトを削除します。オブジェクトのさまざまな削除方法と StorageGRID による削除要求の処理方法を理解しておくと、オブジェクトをより効率的に管理できるようになります。

StorageGRID では、次のいずれかの方法でオブジェクトを削除できます。

  • 同期削除: StorageGRID がクライアントの削除要求を受け取ると、すべてのオブジェクトコピーがただちに削除されます。コピーが削除されると、削除が成功したことがクライアントに通知されます。

  • オブジェクトは削除キューに登録されます。 StorageGRID が削除要求を受け取ると、オブジェクトは削除キューに登録され、削除が成功したことがクライアントにすぐに通知されます。オブジェクトコピーは、あとでバックグラウンド ILM 処理によって削除されます。

StorageGRID では、オブジェクトを削除する際に、削除のパフォーマンスを最適化し、削除のバックログを最小限に抑え、スペースを最も早く解放する方法を使用します。

次の表は、 StorageGRID がどのような場合に各メソッドを使用するかを

削除方法 使用時

オブジェクトは削除キューに登録されます

次の条件のいずれか * が当てはまる場合:

  • 次のいずれかのイベントによってオブジェクトの自動削除がトリガーされた:

    • S3 バケットのライフサイクル設定の有効期限または日数に達した。

    • ILM ルールに指定された最後の期間が経過した。

  • 注: S3 オブジェクトのロックが有効になっているバケット内のオブジェクトは、リーガルホールドの対象である場合や、 retain-until date を指定したものの、まだ満たされていない場合は削除できません。

  • S3 / Swift クライアントが削除を要求し、次の条件を 1 つ以上満たしている:

    • オブジェクトの場所が一時的に使用できないなどの理由で、 30 秒以内にコピーを削除できない。

    • バックグラウンド削除キューがアイドル状態である。

オブジェクトをただちに削除(同期削除)

S3 / Swift クライアントが削除要求を行い、次の * すべての条件が満たされている場合:

  • すべてのコピーを 30 秒以内に削除できる。

  • バックグラウンド削除キューには処理するオブジェクトが含まれています。

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 要求にオブジェクトのバージョン番号を指定します( 'delete/object ? versionId=ID' )。この要求は、指定したバージョンのオブジェクトコピーだけを削除します(他のバージョンは引き続きスペースを消費します)。

  • * Bucket lifecycle *: バケットライフサイクル設定で NoncurrentVersionExpiration アクションを使用します。NoncurrentDays で指定した日数に達すると、 StorageGRID は最新でないオブジェクトバージョンのコピーをすべて完全に削除します。これらのオブジェクトバージョンはリカバリできません。

  • * ILM * : ILM ポリシーに 2 つの ILM ルールを追加します。最新でないバージョンのオブジェクトに一致する場合は、最初のルールで「 * noncurrent Time * 」を参照時間として使用します。2 つ目のルールの * 取り込み時間 * を現在のバージョンと一致させます。「 * noncurrent Time * 」ルールは、「 * Ingest Time * 」ルールの上のポリシーに含める必要があります。