Linux Links‎ > ‎


Four-step Process to Add Swap File

  • Creating a file the size you want.
  • Formatting that file to create a swapping device.
  • Adding the swap to the running system.
  • Making the change permanent.

'INFO: This will not work on btrfs-filesystems at the moment. See man swapon.'

For Adding a 512 MiB swap

  • Creating a file for 512 MiB size you want:

We will create a /mnt/512MiB.swap swap file and set the permissions so that users cannot read it directly.

sudo fallocate -l 512m /mnt/512MiB.swap
sudo chmod 600 /mnt/512MiB.swap

fallocate length suffixes are: k, m, g, t, p, e (See man fallocate).

By default your swap file may be created world readable. We set the 600 mode permissions in order to prevent users from being able to read potentially sensitive information from the swap file.

If fallocate fails with "fallocate failed: Operation not supported" as it currently does on my Maverick machine, you can do this the old way, again 512 mebibytes:

sudo dd if=/dev/zero of=/mnt/512MiB.swap bs=1024 count=524288
sudo chmod 600 /mnt/512MiB.swap
  • Formatting that file to create a swapping device:

sudo mkswap /mnt/512MiB.swap
  • Adding the swap to the running system:

sudo swapon /mnt/512MiB.swap

The additional swap is now available and can be seen by "cat /proc/meminfo"

  • Making the change permanent:

Edit the /etc/fstab:

gksudo gedit /etc/fstab

Add this line at the end of the file:

/mnt/512MiB.swap  none  swap  sw  0 0

Save. After the next reboot the swap will be used automatically.

Example of making a swap file

This is an example of making and using a swap file on a computer with no swap partition.

user@computer:~$ sudo fallocate -l 512m /mnt/512MiB.swap

user@computer:~$ sudo mkswap /mnt/512MiB.swap
Setting up swapspace version 1, size = 536866 kB
no label, UUID=dd6a01c8-93f0-41e0-9b7a-306956d8821b
user@computer:~$ sudo swapon /mnt/512MiB.swap
user@computer:~$ cat /proc/meminfo
MemTotal:       499496 kB
MemFree:          9156 kB
Buffers:          4748 kB
Cached:         233140 kB
SwapCached:        724 kB
Active:         254432 kB
Inactive:       157920 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       499496 kB
LowFree:          9156 kB
SwapTotal:      524280 kB
SwapFree:       523556 kB
Dirty:             128 kB
Writeback:           0 kB
Mapped:         243420 kB
Slab:            20672 kB
CommitLimit:    774028 kB
Committed_AS:   648680 kB
PageTables:       2224 kB
VmallocTotal:   524280 kB
VmallocUsed:      5708 kB
VmallocChunk:   518176 kB
user@computer:~$ gksudo gedit /etc/fstab
user@computer:~$ free
             total       used       free     shared    buffers     cached
Mem:        499496     479488      20008          0       8256     215892
-/+ buffers/cache:     255340     244156
Swap:       524280       3856     520424
#####Then, after running a few more programs...
user@computer:~$ free
             total       used       free     shared    buffers     cached
Mem:        499496     492768       6728          0       1240     142336
-/+ buffers/cache:     349192     150304
Swap:       524280      53384     470896

#####Next, reboot to make sure it will work consistently.
user@computer:~$ free
             total       used       free     shared    buffers     cached
Mem:        499496     493136       6360          0       7528     174700
-/+ buffers/cache:     310908     188588
Swap:       524280      17148     507132

Undoing your changes :

Undoing basically follows the same process in reverse.

gksudo gedit /etc/fstab

Remove the line

/mnt/512MiB.swap  none  swap  sw  0 0

Remove the swap from the running system and remove the swap file.

sudo swapoff /mnt/512MiB.swap && sudo rm /mnt/512MiB.swap

No need to reboot.