36.3. 未使用ブロックの破棄
破棄操作に対応するブロックデバイスで破棄操作を実行するか、そのスケジュールを設定できます。ブロック破棄操作は、マウントされたファイルシステムで使用されなくなったファイルシステムブロックを基盤となるストレージに伝達します。ブロック破棄操作により、SSD はガベージコレクションルーチンを最適化でき、シンプロビジョニングされたストレージに未使用の物理ブロックを再利用するように通知できます。
要件
ファイルシステムの基礎となるブロックデバイスは、物理的な破棄操作に対応している必要があります。
/sys/block/<device>/queue/discard_max_bytes
ファイルの値がゼロではない場合は、物理的な破棄操作はサポートされます。
36.3.1. ブロック破棄操作のタイプ リンクのコピーリンクがクリップボードにコピーされました!
以下のような、さまざまな方法で破棄操作を実行できます。
- バッチ破棄
- これは、ユーザーによって明示的にトリガーされ、選択したファイルシステム内の未使用のブロックをすべて破棄します。
- オンライン破棄
-
これは、マウント時に指定され、ユーザーの介入なしにリアルタイムでトリガーされます。オンライン破棄操作は、
used
からfree
状態に移行中のブロックのみを破棄します。 - 定期的な破棄
-
systemd
サービスが定期的に実行するバッチ操作です。
すべてのタイプは、XFS ファイルシステムおよび ext4 ファイルシステムでサポートされます。
推奨事項
Red Hat は、バッチ破棄または周期破棄を使用することを推奨します。
以下の場合にのみ、オンライン破棄を使用してください。
- システムのワークロードでバッチ破棄が実行できない場合
- パフォーマンス維持にオンライン破棄操作が必要な場合
36.3.2. バッチブロック破棄の実行 リンクのコピーリンクがクリップボードにコピーされました!
バッチブロック破棄操作を実行して、マウントされたファイルシステムの未使用ブロックを破棄することができます。
前提条件
- ファイルシステムがマウントされている。
- ファイルシステムの基礎となるブロックデバイスが物理的な破棄操作に対応している。
手順
fstrim
ユーティリティーを使用します。選択したファイルシステムでのみ破棄を実行するには、次のコマンドを使用します。
fstrim mount-point
# fstrim mount-point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントされているすべてのファイルシステムで破棄を実行するには、次のコマンドを使用します。
fstrim --all
# fstrim --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
fstrim
コマンドを以下のいずれかで実行している場合は、
- 破棄操作に対応していないデバイス
- 複数のデバイスから構成され、そのデバイスの 1 つが破棄操作に対応していない論理デバイス (LVM または MD)
次のメッセージが表示されます。
fstrim /mnt/non_discard
# fstrim /mnt/non_discard
fstrim: /mnt/non_discard: the discard operation is not supported
36.3.3. オンラインブロック破棄の有効化 リンクのコピーリンクがクリップボードにコピーされました!
オンラインブロック破棄操作を実行して、サポートしているすべてのファイルシステムで未使用のブロックを自動的に破棄できます。
手順
マウント時のオンライン破棄を有効にします。
ファイルシステムを手動でマウントするには、
-o discard
マウントオプションを追加します。mount -o discard device mount-point
# mount -o discard device mount-point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ファイルシステムを永続的にマウントするには、
/etc/fstab
ファイルのマウントエントリーにdiscard
オプションを追加します。
36.3.4. storage RHEL システムロールを使用してオンラインのブロック破棄を有効にする リンクのコピーリンクがクリップボードにコピーされました!
オンラインブロック破棄オプションを使用すると、XFS ファイルシステムをマウントし、未使用のブロックを自動的に破棄できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
ファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
オンラインブロック破棄オプションが有効になっていることを確認します。
ansible managed-node-01.example.com -m command -a 'findmnt /mnt/data'
# ansible managed-node-01.example.com -m command -a 'findmnt /mnt/data'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
36.3.5. 定期的なブロック破棄の有効化 リンクのコピーリンクがクリップボードにコピーされました!
systemd
タイマーを有効にして、サポートしているすべてのファイルシステムで未使用ブロックを定期的に破棄できます。
手順
systemd
タイマーを有効にして起動します。systemctl enable --now fstrim.timer
# systemctl enable --now fstrim.timer Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer
/usr/lib/systemd/system/fstrim.timer. Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
タイマーのステータスを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow