5.5. 破棄操作の高速化
VDO は、システム上のすべての VDO デバイスの DISCARD (TRIM) セクターの最大許容サイズを設定します。デフォルトのサイズは 8 セクターで、1 つの 4-KiB ブロックに相当します。DISCARD サイズを増やすと、破棄操作の速度が大幅に向上します。ただし、破棄のパフォーマンス向上は、他の書き込み操作の速度維持とトレードオフの関係にあります。
最適な DISCARD サイズは、ストレージスタックによって異なります。DISCARD セクターが非常に大きい場合でも非常に小さい場合でも、パフォーマンスが低下する可能性があります。さまざまな値で実験を行い、満足のいく結果が得られる値を見つけてください。
ローカルファイルシステムを保存する VDO ボリュームの場合、デフォルト設定である 8 セクターの DISCARD サイズを使用するのが最適です。SCSI ターゲットとして機能する VDO ボリュームの場合、2048 セクター (1 MB の破棄に相当) など、適度に大きな DISCARD サイズが最適に機能します。最大 DISCARD サイズは 10240 セクター (5 MB の破棄に相当) を超えないようにすることを推奨します。サイズを選択するときは、8 の倍数であることを確認してください。8 セクターより小さい場合、VDO は破棄を効果的に処理できない可能性があります。
手順
DISCARD セクターの新しい最大サイズを設定します。
# echo <number-of-sectors> > /sys/kvdo/max_discard_sectors
<number-of-sectors>
はセクタ数に置き換えます。この設定は再起動するまで維持されます。オプション: DISCARD セクターへの変更を再起動後も永続的に保持するには、カスタム
systemd
サービスを作成します。次の内容で新しい
/etc/systemd/system/max_discard_sectors.service
ファイルを作成します。[Unit] Description=Set maximum DISCARD sector [Service] ExecStart=/usr/bin/echo <number-of-sectors> > /sys/kvdo/max_discard_sectors [Install] WantedBy=multi-user.target
<number-of-sectors>
はセクタ数に置き換えます。- ファイルを保存して終了します。
サービスファイルをリロードします。
# systemctl daemon-reload
新しいサービスを有効にします。
# systemctl enable max_discard_sectors.service
検証
オプション: スケーリングガバナーの変更を永続化した場合は、
max_discard_sectors.service
が有効になっているかどうかを確認します。# systemctl is-enabled max_discard_sectors.service