すべてのZRAMスワップデバイスの内容をスワップファイルに移動するには?

すべてのZRAMスワップデバイスの内容をスワップファイルに移動するには?

Debianシステムで、同じ実行セッションでRAMを解放するためにすべてのZRAMスワップデバイスコンテンツをスワップファイルに移動するにはどうすればよいですか?

  1. swapoffZRAMデータが再びRAMに漏洩する危険があるため、まずZRAMを無効にします(例:使用)。
  2. swapoffZRAMスワップデバイスの優先順位を下げるには、および順序を使用しますswapon
  3. あるいは、同様の方法を使用すると、ddスワップファイル内のデータの正しいコンテキストを維持せずにコンテンツをコピーしてデータを無駄にします。

ソリューションは、ZRAMスワップデバイスからのデータがスワップファイルに正しく転送され、システムが有効なスワップデータとして認識されることを保証し、データ損失のリスクやデータをRAMに戻さずにRAMスペースを効果的に確保する必要があります。

上記の制限を考慮すると、再起動を必要とせず、システムのパフォーマンスに大きな影響を与えずにこれを達成するための安定した方法はありますか?

答え1

zramはRAMの汎用圧縮ブロックデバイスです。

スワップとはまったく関係ありません。 (ほぼ)特定のコードは交換されません。正しい状況でのみ交換するのに便利です。

これは、他のスワップパーティションまたはスワップファイルへのzram固有の移行パスがないことを意味します。スイッチングシステム自体も、1:1スイッチングデバイスの移行を提供しません。

誰ですかしなければならないその後swapoff、カーネルは必要に応じて他のスワップデバイスを使用して間接的に移行します。あるいは、優先順位の高い別のスイッチングデバイスを追加し、時間の経過とともに優先順位の低いスイッチングデバイスが終了するのを待つこともできます。


つまり、zramにはオプションの書き込み保存機能があります。zram:選択機能 - 書き換え。これを使用して(一時的に)RAMを解放できます。しかし、すべての要求はまだzramデバイスを通過し、新しく作成されたページも最初にRAMに入ることができます。

この機能のサポートはまだ広く普及していません(カーネルで有効になっていないかサポートされてzramctlいない可能性があります)。 sysfs インターフェイスを介して手動で有効にする必要があります。試してみて、お客様のニーズに合ったことを確認できます。


zramは汎用ブロックデバイスであるため、ユニバーサルブロックデバイスの移行方法を適用できます。これにより、.dllなしでzramデバイスを完全に削除できますswapoff

たとえば、RAID 1を作成し、mdadm --replaceそれを使用してzramから物理パーティションに移動できます。 (mdadm --force許可するシングルディスクRAID 1の作成そのため、移行しないとミラーリングは発生しません。 )

たとえば、LVMをここに配置し、それを使用してpvmovezramから物理ボリュームに移動できます。

しかし、これは単にswapoffswapoff

(私はアイデアを投げています。私はそれらのどれもテストしたことがありません。)

関連情報