Menu Close
Settings Close

Language and Page Formatting Options

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

30.4.9. 空き領域の管理

VDO はシンプロビジョニングのブロックストレージターゲットであるため、VDO が使用する物理領域は、ストレージのユーザーに提示されるボリュームのサイズと異なる場合があります。インテグレーターとシステム管理者は、この格差を利用してストレージコストを節約できますが、書き込まれたデータが期待される重複排除率を達成しない場合は、ストレージスペースが予期せず不足しないように注意する必要があります。
論理ブロック (仮想ストレージ) の数が物理ブロック (実際のストレージ) の数を超えると、ファイルシステムおよびアプリケーションで領域が予想外に不足する可能性があります。このため、VDO を使用するストレージシステムは、ストレージ管理者に、VDO の空きプールのサイズを監視する方法で提供する必要があります。この空きプールのサイズは、vdostats ユーティリティーを使用して決定できます。詳細は、「vdostats」 を参照してください。このユーティリティーのデフォルト出力は、Linux df ユーティリティーと同様の形式で、実行中の VDO ボリュームすべての情報を一覧表示します。以下に例を示します。
Device              1K-blocks   Used        Available   Use%
/dev/mapper/my_vdo  211812352   105906176   105906176     50%
VDO ボリュームの物理ストレージ領域が不足しそうになると、VDO は、システムログに、以下のような警告を出力します。
Oct  2 17:13:39 system lvm[13863]: Monitoring VDO pool my_vdo.
Oct  2 17:27:39 system lvm[13863]: WARNING: VDO pool my_vdo is now 80.69% full.
Oct  2 17:28:19 system lvm[13863]: WARNING: VDO pool my_vdo is now 85.25% full.
Oct  2 17:29:39 system lvm[13863]: WARNING: VDO pool my_vdo is now 90.64% full.
Oct  2 17:30:29 system lvm[13863]: WARNING: VDO pool my_vdo is now 96.07% full.
VDO の空きプールのサイズが特定のレベルを下回った場合、ストレージ管理者はデータの削除 (削除されたデータが重複しない限り領域を確保)、物理ストレージの追加、または LUN の削除を行うことで対応できます。
重要
VDO ボリュームで物理領域を監視し、領域不足を回避します。物理ブロックが不足すると、VDO ボリュームに最近書き込まれたデータや、未承認のデータが失われることがあります。

ファイルシステムの領域の回収

ファイルシステムが、DISCARDTRIM、または UNMAP コマンドを使用してブロックが空いていることを通知しない限り、VDO はスペースを回収できません。DISCARDTRIM、または UNMAP を使用しないファイルシステムの空き領域は、バイナリーゼロで設定されるファイルを格納してからそのファイルを削除することで、手動で回収できます。
ファイルシステムは、通常、次の 2 つの方法のいずれかで DISCARD 要求を発行するように設定できます。
リアルタイム廃棄 (オンライン廃棄またはインライン廃棄)
リアルタイムの破棄が有効になっていると、ユーザーがファイルを削除し、領域を解放するたびに、ファイルシステムはブロックレイヤーに REQ_DISCARD 要求を送信します。VDO はこの要求を受け取り、ブロックが共有されていないことを前提として、空きプールに領域を戻します。
オンライン破棄をサポートするファイルシステムの場合、マウント時に discard オプションを設定することで有効にできます。
バッチ破棄
バッチ破棄は、ユーザーが開始する操作であり、ファイルシステムが未使用のブロックをブロックレイヤー (VDO) に通知します。これは、ファイルシステムに FITRIM と呼ばれるioctlリクエストを送信することによって実現されます。
fstrim ユーティリティー (cron など) を使用して、このioctlをファイルシステムに送信できます。
discard 機能の詳細は、「未使用ブロックの破棄」 を参照してください。

ファイルシステムがない場合の領域の確保

ストレージがファイルシステムなしでブロックストレージのターゲットとして使用されている場合は、空き領域を管理することもできます。たとえば、単一の VDO ボリュームは、その上に論理ボリュームマネージャー (LVM) をインストールすることにより、複数のサブボリュームに分割できます。ボリュームのプロビジョニングを解除する前に、blkdiscard コマンドを使用して、その論理ボリュームが以前使用していた領域を解放できます。LVM は、REQ_DISCARD コマンドに対応し、領域を解放するために適切な論理ブロックアドレスで VDO に要求を転送します。他のボリュームマネージャーを使用している場合は、REQ_DISCARD もサポートする必要があります。または同じように、SCSI デバイスの場合は UNMAP、ATA デバイスの場合は TRIM をサポートします。

ファイバーチャネルまたはイーサネットネットワーク上の領域の確保

VDO ボリューム (またはボリュームの一部) は、LIO または SCST などの SCSI ターゲットフレームワークを使用して、ファイバーチャネルストレージファブリックまたはイーサネットネットワークのホストにプロビジョニングすることもできます。SCSI イニシエーターは、UNMAP コマンドを使用して、シンプロビジョニングされたストレージターゲットの領域を解放できますが、SCSI ターゲットフレームワークは、このコマンドのサポートをアドバタイズするように設定する必要があります。通常、これはこのボリュームで シンプロビジョニング を有効にすることで行われます。UNMAP に対応するかどうかは、Linux ベースの SCSI イニシエーターで確認できます。
# sg_vpd --page=0xb0 /dev/device
出力で、"Maximum unmap LBA count" の値がゼロより大きいことを確認します。