スワップを永久にオフにするにはどうすればよいですか?


64

スワップを使用するとシステムがすべて遅くなり、オフにするとすべてがスムーズになります。3.5 GBのRAMがあります。

sudo swapoff -aターミナルに入ることでスワップをオフにする方法は知っていますが、それは現在のセッションのためだけです。リブート後にスワップが自動的にオンに戻るためです。スワップを永久にオフにする方法はありますか?


2
私の知る限り、スワップは冬眠に使用されます。Just sayin '
ダンマン14年

1
はい、できますが、それでも使用できます。システムが休止状態になったときにスワップパーティションをマウントし、戻ったときにマウントを解除する小さなスクリプトがあります。その間、スワップファイルはアクティブである必要はありません。
animaletdesequia 14年

/etc/rc.local にswapoff -aを入れて、それを忘れてください...;)
user264467 14

1
@ user264467:再起動するたびに無効にするだけでスワップを有効のままにしておくのは直観に反しますが、永続的に無効にする方がずっときれいです。
空手犬

回答:


119

より安全なアプローチを提案できますか?スワップがクラッシュからあなたを救うことができるとき、あなたは決して知りません。スワップは実際にコンピューターの速度を低下させますが、RAMをすべて消費するプログラムを使用している場合、スワップ機能を使用するとハードリブートから節約できます。コンピューターがスワッピングを開始すると、問題のアプリケーションに気付き、強制終了できます。

そのため、スワップを完全に無効にする代わりに、OSのスワップが非常にまれであることを確認してください。これは、のvm.swappiness設定によって制御され/etc/sysctl.confます。Ubuntuのデフォルト設定は60、ほとんどの状況では多すぎるため、RAMがまだ使用可能であってもスワップを開始することを正しく覚えている場合です。この値を小さくすると、緊急時のみに使用しながら、スワップの安全ラインを維持することができます。そのため、ファイルを開きます。

sudo nano /etc/sysctl.conf

そして、次の行を追加します:

vm.swappiness=10

それでも多すぎる場合は、10を1に変更します。再起動後、絶対に必要な場合にのみスワップし、簡単に忘れることができます。


スワップピンの交換が大好きで、何年もやっていない。念押し有難う。sudo upvote turdon!
ダースエグレギアス14年

16
「より安全なアプローチ」引数に追加するだけです。スワップがなく、システムのメモリが不足すると、Linux OOM(メモリ不足)キラーが呼び出されます。これにより、「不良」スコアに基づいてプロセスが選択され、...アプリケーションがその変更を保存したり、クリーンアップしたりすることなく、プロセスを強制終了(終了、終了)します。したがって、スワップをオフにして重要なプロセスがOOMキラーの目に悪いスコアを付けた場合、作業を失うリスクが非常によく発生します。したがって、メモリが不足することはない確信している場合にのみ、スワップをオフにしてください。
リード14年

5
@Reidが指摘するに値するのは、明らかに、スワップスペースを使い果たした場合にもまったく同じことが起こります。
o0 '。

11
これは実際には質問に答えません。スワップを完全に無効にすることは、16GBまたは32GBのRAMを搭載したシステムで非常に意味があります。メモリを消費するアプリケーションの場合、数GBの余分なスワップは効果がありませんが、大量のスワップ(20 GBなど)は多くのハードドライブ/ SSDスペースを占有します。また、32GBのRAMで冬眠するの 楽しいことではありません
jmiserez 14年

7
一部のセットアップでは、物理RAMを使い果たしてスワップを開始するとすぐに、システムは「泥を吸い」始め、使用できなくなります。はい、理論上は侵入者を捕まえて殺すことができますが、UIのフォーカスを変更するのに20分以上かかり、SSHを介してパスワードプロンプトを取得するのにさらに時間がかかる場合、OOMingが最良のオプションになります(ハードに続いて再起動してから、問題を解決してください。
BCS 14

46

/ etc / fstabでスワップを参照している行を見つけてコメントします。私のようなもの:

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

このファイルはgeditで編集できます。念のため、最初にバックアップします。

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

スワップがある行の先頭に#を追加して、コンピューターを再起動するだけです。

または

/etc/fstabファイル内のスワップエントリをコメントアウトするコマンドラインの方法を試してください。

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

入力するとこれが得られますgksu gedit /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1 /host/ubuntu/disks/swap.disk none swap loop,sw 0 0
アレックスリー

1
だから、彼が言っていることをしてください。「スワップ」を参照する最初の行をコメント化します。:P
cHao 14年

13

fstabからエントリを削除する(または行の前に#を使用してコメントする)だけで、再起動します。「スワップ」という単語が含まれている行を探します。

sudo nano /etc/fstab

10
これも機能しますが、変更を元に戻したい場合に備えて、行を完全に削除するよりもコメントする方が良いと思います。
animaletdesequia

1
投稿を編集しました。
mdalacu 14年

11

間違った.. systemdがドライブ上でSWAPパーティションを見つけると、とにかくそれを自動マウントします。systemdについて誰も言及していないのは奇妙です。とにかく、ソリューションは非常に簡単です。スワップを永続的に無効にするには、以下を行う必要があります。

  1. スワップオフ-a
  2. / etc / fstabを編集し、スワップエントリがあればコメントします。
  3. 実行:sudo systemctl mask dev-sdXX.swap(XXはスワップパーティションです。また、他のドライブにスワップパーティションがある場合、マウントされないように、可能なすべてのパーティションに対して行うと便利です)

ピースアウト。


勝利のための3番!
oneklc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.