第16章 未使用ブロックの破棄

破棄操作に対応するブロックデバイスで破棄操作を実行するか、そのスケジュールを設定できます。

16.1. ブロックの破棄操作

ブロック破棄操作では、マウントされたファイルシステムで使用されていないブロックを破棄します。これは以下に役立ちます。

  • ソリッドステートドライブ (SSD)
  • シンプロビジョニングされたストレージ

要件

ファイルシステムの基礎となるブロックデバイスは、物理的な破棄操作に対応している必要があります。

/sys/block/device/queue/discard_max_bytes ファイルの値がゼロではない場合は、物理的な破棄操作に対応しています。

16.2. ブロック破棄操作のタイプ

以下のような、さまざまな方法で破棄操作を実行できます。

バッチ破棄
ユーザーが明示的に実行します。選択したファイルシステムのすべての未使用ブロックを破棄します。
オンライン破棄
マウント時に指定されます。ユーザーによる介入なしでリアルタイムで実行されます。オンライン破棄操作は、使用中から空きに移行しているブロックのみを破棄します。
定期的な破棄
systemd サービスが定期的に実行するバッチ操作です。

すべてのタイプは、XFS ファイルシステム、ext4 ファイルシステム、および VDO で対応されています。

推奨事項

Red Hat は、バッチ破棄または周期破棄を使用することを推奨します。

以下の場合にのみ、オンライン破棄を使用してください。

  • システムのワークロードでバッチ破棄が実行できない場合
  • パフォーマンス維持にオンライン破棄操作が必要な場合

16.3. バッチブロック破棄の実行

この手順では、バッチによるブロック破棄操作を実行し、マウントされたファイルシステムの未使用ブロックを破棄します。

前提条件

  • ファイルシステムがマウントされている。
  • ファイルシステムの基礎となるブロックデバイスが物理的な破棄操作に対応している。

手順

  • fstrim ユーティリティーを使用します。

    • 選択したファイルシステムでのみ破棄を実行するには、次のコマンドを使用します。

      # fstrim mount-point
    • マウントされているすべてのファイルシステムで破棄を実行するには、次のコマンドを使用します。

      # fstrim --all

fstrim コマンドを以下のいずれかで実行している場合は、

  • 破棄操作に対応していないデバイス
  • 複数のデバイスから構成され、そのデバイスの 1 つが破棄操作に対応していない論理デバイス (LVM または MD)

次のメッセージが表示されます。

# fstrim /mnt/non_discard

fstrim: /mnt/non_discard: the discard operation is not supported

関連情報

  • man ページの fstrim(8)

16.4. オンラインブロック破棄の有効化

この手順は、サポートされるすべてのファイルシステムで、未使用のブロックを自動的に破棄するオンラインブロック破棄操作を有効にします。

手順

  • マウント時のオンライン破棄を有効にします。

    • ファイルシステムを手動でマウントするには、-o discard マウントオプションを追加します。

      # mount -o discard device mount-point
    • ファイルシステムを永続的にマウントするには、/etc/fstab ファイルのマウントエントリーに discard オプションを追加します。

関連情報

  • man ページの mount(8)
  • man ページの fstab(5)

16.5. RHEL システムロールを使用したオンラインのブロック破棄の有効化

本セクションでは、storage ロールを使用してオンラインのブロック破棄を有効にする方法を説明します。

前提条件

  • storage ロールを含む Ansible Playbook がある。

このような Playbook を適用する方法は、「ロールの適用」を参照してください。

16.5.1. オンラインのブロック破棄を有効にする Ansible Playbook の例

本セクションでは、Ansible Playbook の例を紹介します。この Playbook では、storage ロールを適用して、オンラインのブロック破棄を有効にして XFS ファイルシステムをマウントします。

例16.1 /mnt/data/ でのオンラインのブロック破棄を有効にする Playbook

---
- hosts: all
  vars:
    storage_volumes:
      - name: barefs
        type: disk
        disks:
          - sdb
        fs_type: xfs
        mount_point: /mnt/data
        mount_options: discard
  roles:
    - rhel-system-roles.storage

関連情報

  • storage システムロールで使用されるパラメーターの詳細は、/usr/share/ansible/roles/rhel-system-roles.storage/README.md ファイルを参照してください。

16.5.2. 関連情報

16.6. 定期的なブロック破棄の有効化

この手順では、対応するすべてのファイルシステムで、未使用のブロックを定期的に破棄する systemd タイマーを有効にします。

手順

  • systemd タイマーを有効にして起動します。

    # systemctl enable --now fstrim.timer

このページには機械翻訳が使用されている場合があります (詳細はこちら)。