この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

ファイルシステムをトリムする

Longhornは、Longhornボリューム内のファイルシステムのトリムをサポートしています。トリムは、ファイルシステムの削除されたファイルによって無駄になったスペースを回収します。

  • スナップショット内の削除されたファイルのトリムは、有効なスナップショットが不変であるため、ファイルシステムには影響を与えません。しかし、ファイルシステムは、スナップショットに関連付けられたブロックをトリムしたことを記憶します。このため、削除済みとマークされたスナップショットを再度トリムしようとする前に、ファイルシステムをアンマウントして再マウントする必要があるかもしれません。

  • ファイルシステムのトリミング中に自動スナップショット削除を許可する場合は、マウントオプション`discard`を注意して使用してください。`discard`は頻繁にスナップショット削除を引き起こし、バックアップ作成などの操作を中断します。

前提条件

  • Longhornのバージョンはv1.4.0以上でなければなりません。

  • Longhornボリューム内には、EXT4やXFSのようなトリム可能なファイルシステムがあります。

  • ボリュームはトリムの前に、マウントポイントにアタッチされてマウントされています。

Longhornボリューム内のファイルシステムをトリムする

Longhorn UIまたは`fstrim`コマンドを使用して、Longhornボリュームをトリムできます。

Longhorn UIから

アタッチされたボリュームに対して、ボリューム操作`Trim Filesystem`を直接クリックできます。

その後、Longhornは*最善を尽くして*マウントポイントを特定し、`fstrim <the mount point>`を実行します。 何か問題がある場合やファイルシステムが存在しない場合、UIはエラーを返します。

シェルコマンド経由

`fstrim`を使用する場合、ボリュームのマウントポイントを特定し、その後コマンド`fstrim <the mount point>`を実行する必要があります。

  • RWOボリューム:マウントポイントは、ワークロードのポッドまたはボリュームが手動でアタッチされたノードのいずれかです。

  • RWXボリューム:マウントポイントはボリュームの共有マネージャーポッドです。共有マネージャーポッドにはNFSサーバーが含まれており、通常は`share-manager-<volume name>`という名前です。

RWXボリュームをトリムするには、次の手順を実行します:

  1. ボリュームの共有マネージャーポッド内でシェルを開きます。

     kubectl -n longhorn-system exec -it <the share manager pod> -- bash
  2. NFSサーバーの作業ディレクトリを特定します(例:/export/<volume name>)。

     mount | grep <volume name>
     /dev/longhorn/<volume name> on /export/<volume name> type ext4 (rw,relatime)
  3. 作業ディレクトリをトリムします。

     fstrim /export/<volume name>

定期的にファイルシステムをトリムします。

ファイルシステムを定期的にトリムするために、RecurringJobを設定できます。

ファイルシステムトリム中にスナップショットを自動的に削除する

設計上、Longhornボリュームの有効なスナップショットは不変であるため、ファイルシステムトリム機能は次のものでのみ使用できます:

  • ボリュームヘッド

  • システムによって作成された、または削除としてマークされた直前の連続したスナップショットチェーン

ボリュームによって消費される実際のスペースのほとんどが有効なスナップショットに関連付けられている場合、トリム操作はあまり効果的ではありません。

グローバル設定:"ファイルシステムトリム中にスナップショットを削除する"

Longhornが最大限のスペースを自動的に回収することを望む場合、設定_ファイルシステムトリム中にスナップショットを削除するを有効にできます。 このグローバル設定が有効になると、最新のスナップショットと直前の連続したスナップショットチェーンが自動的に削除としてマークされ、Longhornはできるだけ多くのスナップショットのためにスペースを回収できるようになります。ただし、この設定は、意図的に作成したスナップショットの削除(および最終的な消去)を引き起こす可能性があります。

ボリューム仕様フィールド "UnmapMarkSnapChainRemoved"

ボリュームごとのフィールド volume.Spec.UnmapMarkSnapChainRemoved が、上記のグローバル設定を上書きします。

このボリューム特有の設定のオプションは、「無効」、「有効」、および「無視」です。値が「無視」の場合、グローバル設定が適用されます。

この設定は、StorageClass で構成でき、その StorageClass を使用して作成されたすべてのボリュームに値が適用されます。

既知の問題と制限

ボリュームの再構築

設計上、Longhorn はボリュームヘッドおよび削除としてマークされた直前の連続したスナップショットのブロックをアンマップします。これらのスナップショットの一部は、ボリュームの再構築中に別のレプリカに移動される可能性があるため、Longhorn は再構築が進行中の影響を受けたボリュームのファイルシステムをトリムできません。

再構築には時間がかかる可能性があるため、Longhorn はファイルシステムに I/O エラーを返す代わりに、再構築中は単にブロックをアンマップしません。この動作は特に VM ワークロードに利益をもたらし、トリムの完了を試みる際にエラーが返されると反応が悪くなります。詳細については、 Issue #7103 を参照してください。

再構築中に開始されたトリム操作は効果がありません。同じマウントされたボリュームに対する将来のトリム操作も、ファイルシステムがどのブロックをトリムしたかを記憶しているため、効果がない可能性があります。トリム操作を再度開始する前に、ファイルシステムをアンマウントして再マウントする必要があるかもしれません。

ボリュームの拡張

Longhorn はボリュームの拡張中にファイルシステムをトリムできません。拡張は迅速に行われるため、問題が発生するたびに Longhorn は I/O エラーを返します。ファイルシステムはブロックがトリムされなかったことを認識し、再マウントなしで再試行できます。

暗号化されたボリューム

  • デフォルトでは、TRIM コマンドはデバイスマッパーによって有効になっていません。詳細については このドキュメントを確認できます。

  • 暗号化されたLonghornボリュームをトリムしたい場合は、次の手順を実行できます:

    1. ボリュームが接続されているノードホストに入ります。

    2. 暗号化されたボリュームのためにフラグ`discards`を有効にします。パスフレーズは対応するシークレットに記録されています:

        cryptsetup --allow-discards --persistent refresh <Longhorn volume name>
    3. Longhorn UIを直接使用してボリュームをトリムするか、`/dev/mapper/<volume name>`の*マウントポイント*に対して`fstrim`を手動で実行します。