Home/How to Add Swap on Ubuntu

How to Add Swap on Ubuntu

Swap space in Linux is used when the amount of physical memory (RAM) is full. If the system needs more memory resources and the RAM is full, inactive pages in memory are moved to the swap space. While swap space can help machines with a small amount of RAM, it should not be considered a replacement for more RAM. Swap space is located on hard drives, which have a slower access time than physical memory.

Swap space can be a dedicated swap partition, a swap file, or a combination of swap partitions and swap files. On our cloud servers, we don’t have swap activated by default because we have very generous memory in all of our servers.

You can add swap to your server if you require, however, we would recommend that you upgrade your server if you need additional resources. The upgrade process is seamless and only requires a short server restart to adjust your disk storage.

Check Swap Status

It’s good practice to make sure that there isn’t a swap partition or file that was activated previously. Some specific applications such as cPanel create a swap file on your behalf, so it’s important to check that there isn’t an existing one. You can run this command to view the status of your swap.

# swapon -s
Filename                Type        Size    Used    Priority

If you see output similar to the one above with nothing listed under file name, it means that the server has no swap running on it. If you see any entries, it means that there is an existing swap defined on your machine.

Determine Swap File Size

There is usually a lot of different opinions on deciding on the amount of swap to setup on your server, ranging from people saying to use the same amount of memory to those mentioning to use twice the amount of memory. However, we find that it should be decided based on how much disk space and memory you have, so let’s start by checking how much disk space we have.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  1.8G   36G   5% /
udev            489M  4.0K  489M   1% /dev
tmpfs           199M  244K  199M   1% /run
none            5.0M  8.0K  5.0M   1% /run/lock
none            498M     0  498M   0% /run/shm
/dev/vdb        416K  416K     0 100% /configdrive

We see that we have 36 gigabytes available in our primary file system. This server also has 1GB of memory, therefore, we can comfortably run twice the size of the memory (so 2GB swap in this case). Please note that if you have a large server (8GB or more), you most likely don’t need any more than 8GB of swap. For this example, we’ll decide on a 2GB swap.

Create and Enable Swap

We will need a blank file, the size of our swap. We can use the dd Linux tool to create that blank file. Afterwards, we will update the permissions to secure the swap file. The following command will Let’s also take this moment to appreciate how fast our SSDs write to disk! Feel free to post how fast your server can run this command in the comments.

# dd if=/dev/zero of=/swap bs=1M count=2048 oflag=direct
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 2.40066 s, 894 MB/s
# chown root:root /swap
# chmod 0600 /swap

The command above will write zero’s to a file named /swap, the size of 2048MB (2 gigabytes). The size is determine by multiplying the block size and count (2048 blocks of 1 megabyte = 2048 megabytes). The oflag=direct flag means to write directly to disk and not buffer/cache anything to memory, which means the numbers above are straight-to-disk speeds.

The next step is to configure the file as a swap file and enable it inside the operating system, we can do this with the following two simple commands:

# mkswap /swap
# swapon /swap

When we run the mkswap command, it should output some information about the configuration of the swap file similar to the following:

Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=5c9e1ecf-6b5c-4825-918e-a52da8ec0394

Once you’ve ran the above commands, you should be able to check your swap status as we’ve shown above, but this time, you’ll see the new swap file that we created. You can check it the following way and the output should be similar to the one below:

# swapon -s
Filename                Type        Size    Used    Priority
/swap                                   file        2097148 0   -1

Swap File Persistence

We have manually enabled the swap file, however, if you reboot the server, you will see that the swap file will disappear. This is due to the fact that it needs to be mounted on each boot. We can do this by adding the following lines to the /etc/fstab file.

# echo "/swap none swap sw 0 0" >> /etc/fstab

Once you add that, when your server boots again, it will automatically mount the swap file we created at /swap as the swap for machine. Your Ubuntu server should now start taking advantage of the swap right away. You can check the status of your swap by typing the following command:

# free -m
             total       used       free     shared    buffers     cached
Mem:           994        119        875          0         27         32
-/+ buffers/cache:         59        935
Swap:         2047          0       2047

As you see, this server has 1 gigabyte of memory, 2 gigabytes of swap, however, as the server does not have any big processes running on it, it is not currently using the swap.

Sign up now to get a free cloud strategy session with our experts.

Spend 30 minutes with our experts to listen to your business challenges and discuss how to design, migrate and/or architect your cloud solution to help you meet your objectives.

Sign Up Now
December 30th, 2013|0 Comments