SCSI UNMAPのサポート
Oracle Cloud Infrastructure Block Volumeでは、SCSI UNMAPコマンドをブート・ボリュームとブロック・ボリュームの両方に送信して未使用の領域を再利用するようにアプリケーションを構成できます。これにより、バックアップ・サイズが大幅に削減され、バックアップのリストアおよびボリュームのクローン時間が短縮されます。SCSI UNMAPコマンドは、未使用の領域を再利用するためにSSDドライブに送信できるTRIMコマンドに似ています。
SCSI UNMAPコマンドを送信して、アプリケーションまたはファイル・システムによって削除または使用されなくなったブロックを破棄して解放するようにストレージ・サブシステムに指示します。このコマンドを送信しない場合、ストレージ・サブシステムはブロックが使用されなくなったことを認識せず、すべてのバックアップにこれらのブロックを含め、新しいボリュームへのクローンを作成します。ストレージ・サブシステムがブロックのUNMAPコマンドを受信すると、対応するブロックは破棄されて解放されるため、今後のバックアップおよびクローンから除外されます。
ブロック・ボリュームUNMAP機能は、SCSI UNMAPコマンドを使用して実装されます。UNMAPは、ISCSIと準仮想化ボリューム・アタッチメント・タイプの両方でサポートされています。
UNMAPは非決定的なコマンドであり、このコマンドを使用するときに、要求されたすべてのブロックがただちに破棄されるという保証はありません。デバイス上のブロックの破棄にかかる時間は、次の要因によって異なります。
ファイル・システム上の未使用ブロック数。未使用のブロックが多いデバイスのUNMAPは、完了するまでに時間がかかります。
ブロック・ボリューム用に構成されたパフォーマンス・レベル(VPU/GB設定)。
ファイル・システムの場合は、ゲスト・ファイル・システムの実装によって異なり、ファイル・システムからファイル・システムによって異なります。
2023年6月14日より前にアタッチされたボリュームのUNMAPの有効化
すべての新規アタッチメントについて、UNMAPはブート・ボリュームとブロック・ボリュームの両方に対してデフォルトで有効になっています。2023年6月14日より前にアタッチされたボリュームの場合、次のコマンドを使用してUNMAPがすでに有効かどうかを確認し、有効でない場合は推奨アクションを実行して有効にします。
UNMAPが有効化されているかどうかの確認
UNMAPの有効化
ボリュームのUNMAP機能を有効にするには、ボリュームのアタッチメント・タイプに応じて次のいずれかのアクションを実行します。これらのアクションは、すべてのオペレーティングシステムに適用されます。
-
iSCSIアタッチメント: iSCSIコマンドを使用してログアウトし、再度ログインします。
-
準仮想化アタッチメント: インスタンスをデタッチしてからボリュームに再アタッチします。
ファイル・システムでのUNMAPの使用
ファイル・システムによって削除済または未使用のブロックを破棄するようにUNMAPコマンドを発行するようにファイル・システムを構成できます。これにより、ボリューム・バックアップのサイズが削減されます。
Linux
UNMAPを手動で発行するコマンド
fstrim
コマンドを実行して、UNMAPコマンドをバックエンドに発行し、ファイル・システムによって削除または未使用のブロックを破棄して解放します。
UNMAPを定期的に発行するコマンド
systemctl timerを有効にして、ファイルシステムのUNMAPコマンドfstrim
を定期的に実行できます。タイマーは、週に1回、すべてのマウント・ポイントに対してfstrim
コマンドを自動的に実行します。
タイマーを有効にするには:
sudo systemctl enable fstrim.timer
タイマーのステータスを確認するには:
sudo systemctl status fstrim.timer
オンライン・ブロック破棄を有効にするコマンド
ファイル・システムのマウント・オプションを指定して、ブロックが削除された場合や使用されなくなった場合に、廃棄コマンドをただちに発行できます。これにより、ファイルが削除されるか、ファイル・サイズが削減されると、UNMAPコマンドがバックエンド・ストレージ・システムに即時に送信されます。UNMAPを有効にすることでバックエンド・デバイスにパフォーマンスへの影響がなくても、ファイル・システムでパフォーマンスの問題が発生することがわかっているため、このオプションには注意が必要です。
オンライン・ブロック破棄を指定するマウント・コマンド:
mount –o discard <device_path> <mount_point>
/etc/fstab
ファイルを更新して、マウント・オプションにdiscard
を追加できます。次に例を示します:
UUID="94c5aade-8bb1-4d55-ad0c-388bb8aa716a" /data1 xfs defaults,noatime,discard 0 2
Windows
インスタンスのコマンド・ウィンドウから、次のコマンドを実行してUNMAPを有効にします(まだ有効になっていない場合)。
fsutil behavior set DisableDeleteNotify 0
パフォーマンスへの影響なし
UNMAPコマンドを使用した場合、ボリュームのパフォーマンスには影響しません。保証されたIOPSおよびスループットは影響を受けません。ただし、UNMAPコマンドの処理にかかる時間は、ボリュームに対して構成されたパフォーマンス・レベルによって異なります。
たとえば、「バランス」、「より高いパフォーマンス」または「超High Performance」レベルに構成されているボリュームと比較して、「低いコスト」パフォーマンス・レベルに構成されているボリュームで実行すると、fstrim
の完了に時間がかかります。