Archlinuxでスワップを永久に無効にする方法は?

Archlinuxでスワップを永久に無効にする方法は?

私のラップトップとデスクトップにArchlinux x86_64がインストールされています。インストール時にfdiskを使用してスワップパーティションを作成しますsudo swapon /dev/sda3

sysctl vm.swappinessただし、に設定しても0システムメモリが半分しか使用されていない場合、システムはまだスワップパーティションに書き込んでいるため、大きなファイルをどこかにコピー/移動してシステムの速度を非常に遅くします。この場合はoff swapを使用しましたsudo swapoff /dev/sda3

最近は通常、起動後にスワップをオフにし、スワップが本当に必要なときにアクティブにします(そしてRAMの使用量を監視し、必要に応じてスワップをオンにするRubyスクリプトがあります)。次回の起動時にスワップが再び有効になります。問題の交換アイテムはありません/etc/fstab

デバイスを削除せずにスワップデバイスを永久に無効にする方法はありますか?

答え1

これ建築ウィキペディアArchlinuxでのスワッピングはsystemdによって管理されることに言及し、スワッピングを担当するsystemdデバイスをブロックして自動アクティベーションを無効にする方法について説明しました。したがって、Archlinuxでは、次のことを達成する必要があります。

  1. 特定のスワップを使用して#swapoff -aスワップを無効にするか、特定のデバイス/ファイル名を渡します。現在、スワップは無効になっていますが、次回の起動時に自動的に再度有効になり、有効になります。
  2. 自動スワップを有効にしないようにするには、systemdデバイスを使用してswapを見つけます#systemctl --type swap。見つかった各*.swapユニットに対してを使用してマスクされます#systemctl mask <unit_name>

systemctl unmask <unit_name>以前に保護されたデバイスを実行し、Open Swapを使用してプロセスをキャンセルするだけですswapon

これは、次の2つのArchwiki記事から抜粋されました。

答え2

/lib/systemd/system/turnswapoff.service次の内容を含むファイルを生成して、systemdにこれを行うように要求できます。

[Unit]
Description=Turn swap off 

[Service]
ExecStart=/sbin/swapoff -a

[Install]
WantedBy=multi-user.target

起動時に実行されていることを確認してください。sudo systemctl enable turnswapoff

場所ではswapoffない可能性があります/sbin/swapoff。確認してwhich swapoff必要に応じて変更してください

関連情報