79

I am running a custom compiled 3.18.9 kernel and I am wondering about the best way to disable swap on the system. I also use init if it makes a difference.

Is it enough to comment or remove the swap line in /etc/fstab to prevent swap from working/mounting at boot or should I recompile the kernel without Support for paging of anonymous memory (swap) to be 100% sure it does not get enabled?

I run encrypted partitions and want to prevent accidental leakage to the hard disk. My system specifications are also great enough that I can survive in a swap-less environment.

Peter Mortensen
  • 2,309
  • 5
  • 23
  • 24
user283167
  • 793
  • 1
  • 6
  • 7
  • Why isn't your swap encrypted? – Michael Hampton Apr 22 '15 at 18:46
  • @MichaelHampton I didn't see a need at the point in time until I realized what was eventually going to happen. Plus my system doesn't reach a point in any time that the swap was used, so I feel I am free to remove it. – user283167 Apr 22 '15 at 19:09
  • I'd remove the feature from the kernel then. Otherwise someone can plug an USB-stick and start swapping to it again. – ott-- Apr 22 '15 at 21:03
  • @ott Doesn't the user require super user access to use the swapon/swapoff executable? I might disable it again just in case, but I am uncertain a unprivileged user can create swap files. – user283167 Apr 22 '15 at 21:32
  • Indeed, he needs super user access, which he could with an exploit e.g.. But are you watching your server 24/7? – ott-- Apr 22 '15 at 21:44
  • @ott-- this is for a laptop so I will be in control of it 24/7. If someone has gotten physical access to it or managed to exploit it to gain access to my unprivileged users there would be worse problems than worrying about a swap file being created. Thanks for the clarification though! – user283167 Apr 22 '15 at 21:52

7 Answers7

118
  1. Identify configured swap devices and files with cat /proc/swaps.
  2. Turn off all swap devices and files with swapoff -a.
  3. Remove any matching reference found in /etc/fstab.
  4. Optional: Destroy any swap devices or files found in step 1 to prevent their reuse. Due to your concerns about leaking sensitive information, you may wish to consider performing some sort of secure wipe.

man swapoff

Aaron Copley
  • 12,205
  • 5
  • 45
  • 67
15

It used to be that only swap partitions in /etc/fstab were used automatically, however, systemd may be changing that slightly. You might need to do:

systemctl mask dev-sdXX.swap

(change sdXX) to your real formatted swap partition, which, begs the question of why you have a swap partition if you don't want it used...

If you are not using systemd, then, removing the swap entries from /etc/fstab should be sufficient (as far as I know).

Maybe the real solution is to get rid of the swap partitions, so they won't be used accidentally. To remove the swap partitions, I would use fdisk to change the partition type from swap to something else, and then reformat the partition or use: dd if=/dev/zero of=/dev/old-swap-partition in order to zero it out and prevent its use.

See also Set up use of swap partition with systemd.

Peter Mortensen
  • 2,309
  • 5
  • 23
  • 24
Gregor
  • 446
  • 2
  • 10
  • 1
    I still use init via openRC, I purposefully purged systemd from the install. And as for the swap question, I was doing a regular install until I made the decision to use cryptsetup/luks to mount encrypted files formatted to ext4 over top of my filesystem. If you could be so kind to touch upon the way to disable swap when using init I would appreciate it. – user283167 Apr 22 '15 at 19:14
  • Also, it could be `systemctl mask swapfile.swap`. – dess Jan 28 '20 at 15:49
12

If you are really sure you want to disable swapping (note: this is not recommended, even where you are pretty sure that physical RAM is more than enough), follow these steps:

  1. run swapoff -a: this will immediately disable swap
  2. remove any swap entry from /etc/fstab
  3. reboot the system. If the swap is gone, good. If, for some reason, it is still here, you had to remove the swap partition. Repeat steps 1 and 2 and, after that, use fdisk or parted to remove the (now unused) swap partition. Use great care here: removing the wrong partition will have disastrous effects!
  4. reboot
Tom Klino
  • 581
  • 1
  • 6
  • 14
shodanshok
  • 42,723
  • 6
  • 92
  • 154
  • 1
    Why is it not recommended to disable swap even if you have enough ram? – Rolf May 06 '18 at 11:24
  • 1
    Because Linux proactively uses the swap partition to free more memory for caching. This can improve performance. Anyway, it is a tunable parameter. For more information, read [here](https://en.wikipedia.org/wiki/Swappiness). Moreover, an improvvise surge in memory allocation in a swapless system can trigger the kernel OOM killer. – shodanshok May 06 '18 at 22:03
  • 3
    Thanks, this is reasonable. Nevertheless, I was thinking that if "enough ram" (eg: 8 or 16 GB) is full then it is likely some kind of exceptional situation (application with a memory leak or some other runaway issue, DDOS attack, etc.) in which case even swap would eventually be overwhelmed anyway. Maybe I'm not making a very convincing argument however this should not happen in light-ish desktop use. – Rolf May 08 '18 at 16:23
  • 1
    What about SSD drives wearing out due to use of swap? – Peter Mortensen Jan 31 '20 at 02:46
  • @PeterMortensen while possible, it seems an highly unlikely outcome, especially if using a quality TLC drive. – shodanshok Jan 31 '20 at 06:44
6

On Raspbian 10 (Buster), the clean answer would be:

To disable it until the next reboot, as stated in */etc/fstab*:

sudo /sbin/dphys-swapfile swapoff

To disable swap on boot:

sudo systemctl disable dphys-swapfile

(It turns out I couldn't find that information anywhere...)

Peter Mortensen
  • 2,309
  • 5
  • 23
  • 24
2

On my Linux Mint box (version 19.3 (Tricia), based on Ubuntu 18.04 (Bionic Beaver)) without a swap partition or without any swap at all, systemctl reported that swapfile.swap failed during every start. It could be disabled with the command:

sudo systemctl disable swapfile.swap

The swapfile.swap is a 'special' part of systemd, which you can read about in man, using the man systemd.special command.

Peter Mortensen
  • 2,309
  • 5
  • 23
  • 24
piotao
  • 121
  • 4
0

I know this is probably not the right answer for THIS question, but to be complete: If you just want to prevent starting swapping on SOME devices at boot, without removing them from fstab, you can add noauto as a flag after sw (sw,noauto).

Camion
  • 101
0

When I view the /etc/fstab file on Raspbian I see a comment saying

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

But to completely disable the preconfigured swap file this works perfectly fine:

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

This solution looks a bit quick and dirty to me, however, you can simply reenable it with:

chmod +x /etc/init.d/dphys-swapfile
reboot
Ilka
  • 1
  • 2