Linuxでスワップを無効にする最良の方法


53

カスタムコンパイルされた3.18.9カーネルを実行していますが、システムでスワップを無効にする最良の方法について疑問に思っています。違いがある場合は、initも使用します。

/etc/fstabブート時にスワップが動作/マウントしないように、スワップ行をコメント化または削除するだけで十分Support for paging of anonymous memory (swap)ですか、それとも有効になっていないことを100%確認せずにカーネルを再コンパイルする必要がありますか?

暗号化されたパーティションを実行し、ハードディスクへの偶発的な漏洩を防ぎたい。私のシステム仕様も十分に優れているため、スワップレス環境で生き残ることができます。


スワップが暗号化されないのはなぜですか?
マイケルハンプトン

@MichaelHampton最終的に何が起こるかを理解するまで、私はその時点でその必要性を感じませんでした。加えて、私のシステムはスワップが使用された時点には到達しないので、私はそれを自由に削除できると感じています。
user283167

カーネルから機能を削除します。そうしないと、誰かがUSBスティックを差し込んで、再びスワップを開始できます。
ott--

@ottユーザーは、swapon / swapoff実行可能ファイルを使用するためにスーパーユーザーアクセスを必要としませんか?念のため再度無効にするかもしれませんが、特権のないユーザーがスワップファイルを作成できるかどうかはわかりません。
user283167

実際、彼はスーパーユーザーアクセスを必要とします。しかし、サーバーを24時間365日監視していますか?
ott--

回答:


76
  1. 構成されたスワップデバイスとファイルを識別しますcat /proc/swaps
  2. ですべてのスワップデバイスとファイルをオフにしますswapoff -a
  3. で見つかった一致する参照を削除し/etc/fstabます。
  4. オプション:手順1で見つかったすべてのスワップデバイスまたはファイルを破棄して、再利用を防止します。機密情報の漏洩に関する懸念があるため、何らかの安全なワイプの実行を検討することをお勧めします。

男スワップオフ


一部のシステムでは、またはなどでinitrdアーカイブを再構築する必要があります。そうしないと、システムが起動しません。JO AhoCarlos ERに感謝します。dracut --regenerate-all --forcemkinitrdalt.os.linux.suse
Ant_222

10

スワッピングを無効にしたい場合(注:物理RAMが十分であると確信している場合でも、これはお勧めしません)、次の手順を実行します。

  1. run swapoff -a:これはすぐにスワップを無効にします
  2. からスワップエントリを削除します /etc/fstab
  3. rebootシステム。スワップがなくなった場合は、良いです。何らかの理由で、まだここにある場合は、スワップパーティションを削除する必要がありました。手順1と2を繰り返し、その後、fdiskまたはpartedを使用して(現在使用されていない)スワップパーティションを削除します。ここで細心の注意を払ってください:間違ったパーティションを削除すると悲惨な影響があります!
  4. reboot

1
十分なRAMを持っている場合でも、スワップを無効にすることが推奨されないのはなぜですか?
ロルフ

1
Linuxは積極的にスワップパーティションを使用して、キャッシュ用により多くのメモリを解放するためです。これにより、パフォーマンスを改善できます。とにかく、それは調整可能なパラメーターです。詳細については、こちらをご覧ください。さらに、スワップレスシステムでのメモリ割り当ての急増は、カーネルOOMキラーを引き起こす可能性があります。
-shodanshok

1
おかげで、これは合理的です。それでも、「十分なRAM」(例:8または16 GB)がいっぱいになると、何らかの例外的な状況(メモリリークやその他の暴走問題、DDOS攻撃などのアプリケーション)が発生する可能性が高いと考えていました。とにかくスワップさえ最終的に圧倒されるでしょう。たぶん私はあまり説得力のある議論をしていませんが、これは軽度のデスクトップ使用では起こりません。
ロルフ

9

以前は、スワップパーティションのみ/etc/fstabが自動的に使用されていましたが、systemdはそれをわずかに変更している可能性があります。あなたがする必要があるかもしれません:

systemctl mask dev-sdXX.swap

(sdXXを変更)を実際のフォーマット済みスワップパーティションに変更します。これにより、使用したくない場合にスワップパーティションを作成する理由が疑問になります。

systemdを使用していない場合は、スワップエントリを削除する/etc/fstabだけで十分です(私の知る限り)。

たぶん本当の解決策はスワップパーティションを取り除くことです。そうすればそれらは誤って使われることはありません。スワップパーティションを削除するには、fdiskを使用してパーティションタイプをスワップから別のタイプに変更し、パーティションを再フォーマットするかdd if=/dev/zero of=/dev/old-swap-partition、次を使用 して、ゼロに設定して使用を禁止します。

systemdでスワップパーティションの使用を設定するもご覧ください。


私はまだopenRC経由でinitを使用しています。意図的にsystemdをインストールから削除しました。スワップの質問に関しては、cryptsetup / luksを使用してext4にフォーマットされた暗号化ファイルをファイルシステムの上にマウントすることを決定するまで、通常のインストールを行っていました。initを使用しているときにスワップを無効にする方法に触れてくれたら、ありがたいです。
user283167

0

私が見たときに/ etc / fstabに Raspbian上のファイルを私が言ったコメントを見ます

a swapfile is not a swap partition, no line here
  use dphys-swapfile swap[on|off] for that

ただし、事前に構成されたスワップファイルを完全に無効にするには、これはまったく問題なく機能します。

swapoff -a
chmod -x /etc/init.d/dphys-swapfile
reboot

このソリューションは少し速くて汚いように見えますが、次の方法で再度有効にすることができます。

chmod +x /etc/init.d/dphys-swapfile
reboot
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.