私のホームサーバーにはProxmoxがインストールされています。インストール中に小さなデフォルトのスワップパーティションを作成しましたが、サーバーに192 GBのRAMがインストールされているため、これが必要だとは思いませんでした。しかし、驚くべきことに、時々スワップが使用されます。システムにまだ60 GB以上の空きメモリがあり、数百メガバイトのスワップスペースしか使用していない場合、これはまれではありません。さらに、実験のためにスワップを無効にすることにしました。その結果、一部の仮想マシンは時々シャットダウンしますが、監視ツールはシステムに十分なリソースがあることを報告します。私は、多くの調整を必要としない非常に簡単な設定を実行したので、ハイパーバイザーへのスワップが非常に重要であることに気づきました。
今、良い質問は正しいスワップ設定を作成する方法です。
私のシステムには4つのNVME SSDがあります。これを使用してZFSプールを作成し、高速ストレージ要件に基づいて結果プールを使用する予定です。 ZFSを使用してスワップを作成する方法についていくつかのアイデアがありますが、これは誤った決定のようです。 ZFS は書き込み中にメモリを割り当てるため、エラーが発生する可能性があります。
別のアイデアは、NVMEを複数のパーティションに分割することです。 1つはスワップ用の小さなパーティション、もう1つはZFSデータ用の大規模パーティションです。私は実験をしました。各ドライブに16GBのスワップパーティションを作成し、各ドライブに残りのスペースを使用してZFSプールを作成しました。その後、4つのスワップパーティションを使用するようにカーネルを設定しました。すべてが期待どおりに機能しましたが、カーネルはSSDの1つだけをスワップ用に使用し、他のSSDはあまり利用されていないことを観察し始めました。
それでは、この状況で複数のSSD間の負荷バランスをどのように調整できますか?
答え1
スワップディスクを襲う必要はありません。これは役に立たないだけでなく有害かもしれません。
各ディスクの zfs から別々のパーティションを作成し、すべてスワップパーティションとして使用できます。異なる優先順位を指定すると、各項目がいっぱいになると次の項目が使用され始めます。おそらくそれらすべてに同じ優先順位を与える必要があります。これにより、急襲することなく並列に使用されます。
zfs からスワップファイルを作成でき、zfs は並列アクセスを処理します。しかし、過去にはクラッシュレベルのバグがあり、一部のzfsバージョンのドキュメントではスワップファイルがサポートされていないと述べています。また、zfsが冗長RAIDを使用している場合は無駄になる可能性があります。
より良いzfsの代替案は、このコマンドを使用してスワップボリュームを作成することですzfs create -V
。これは、必要に応じてスワップボリュームのサイズを変更でき、スワップとzfsがディスクを配置して競合するのではなく、zfsがI / Oを完全に管理できるため、別々のスワップパーティションよりも優れています。また、明示的な zfs スワップボリュームには、RAM を確保するためにスワップページを格納するためにキャッシュに RAM を使用する問題はありません。
また、見ることができますhttps://askubuntu.com/questions/228149/zfs-partition-as-swap