How To Add Swap Space on Ubuntu 22.04
Introduction One way to guard against out-of-memory errors in applications is to add some swap space to your server. In this guide, we will cover how to add a swap file to an Ubuntu 22.04 server.
What is Swap?
Swap is a portion of hard drive storage that has been set aside for the operating system to temporarily store data that it can no longer hold in RAM. This lets you increase the amount of information that your server can keep in its working memory, with some caveats. The swap space on the hard drive will be used mainly when there is no longer sufficient space in RAM to hold in-use application data.
The information written to disk will be significantly slower than information kept in RAM, but the operating system will prefer to keep running application data in memory and use swap for the older data. Overall, having swap space as a fallback for when your system’s RAM is depleted can be a good safety net against out-of-memory exceptions on systems with non-SSD storage available.
Step 1 – Checking the System for Swap Information
Before we begin, we can check if the system already has some swap space available. It is possible to have multiple swap files or swap partitions, but generally one should be enough.
We can see if the system has any configured swap by typing:
sudo swapon --showIf you don’t get back any output, this means your system does not have swap space available currently.
You can verify that there is no active swap using the free utility:
free -hAs you can see in the Swap row of the output, no swap is active on the system.
Step 2 – Checking Available Space on the Hard Drive Partition
Before we create our swap file, we’ll check our current disk usage to make sure we have enough space. Do this by entering:
df -hOutput
Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 932K 98M 1% /run
/dev/vda1 25G 1.4G 23G 7% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
/dev/loop0 55M 55M 0 100% /snap/core18/1705
/dev/loop1 69M 69M 0 100% /snap/lxd/14804
/dev/loop2 28M 28M 0 100% /snap/snapd/7264
tmpfs 99M 0 99M 0% /run/user/1000Step 3 – Creating a Swap File
Now that we know our available hard drive space, we can create a swap file on our filesystem. We will allocate a file of the size that we want called swapfile in our root (/) directory.
The best way of creating a swap file is with the fallocate program. This command instantly creates a file of the specified size.
Since the server in our example has 1G of RAM, we will create a 1G file in this guide. Adjust this to meet the needs of your own server:
sudo fallocate -l 1G /swapfile-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfileOur file has been created with the correct amount of space set aside.
Step 4 – Enabling the Swap File
Now that we have a file of the correct size available, we need to actually turn this into swap space.
First, we need to lock down the permissions of the file so that only users with root privileges can read the contents. This prevents normal users from being able to access the file, which would have significant security implications.
Make the file only accessible to root by typing:
sudo chmod 600 /swapfileverify the permissions change by typing:
ls -lh /swapfileOutput
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfileAs you can see, only the root user has the read and write flags enabled.
We can now mark the file as swap space by typing:
sudo mkswap /swapfilesudo swapon /swapfileVerify that the swap is available by typing:
sudo swapon --showOutput
NAME TYPE SIZE USED PRIO
/swapfile file 1.0G 0B -2We can check the output of the free utility again to corroborate our findings:
free -hOutput
total used free shared buff/cache available
Mem: 985M 220M 511M 13M 253M 647M
Swap: 1.0G 0B 1.0GOur swap has been set up successfully and our operating system will begin to use it as necessary.
Step 5 – Making the Swap File Permanent
Our recent changes have enabled the swap file for the current session. However, if we reboot, the server will not retain the swap settings automatically. We can change this by adding the swap file to our /etc/fstab file.
Back up the /etc/fstab file in case anything goes wrong:
sudo cp /etc/fstab /etc/fstab.bakAdd the swap file information to the end of your /etc/fstab file by typing:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabNext we’ll review some settings we can update to tune our swap space.
Conclusion
Following the steps in this guide will give you some breathing room in cases that would otherwise lead to out-of-memory exceptions. Swap space can be incredibly useful in avoiding some of these common problems.
If you are running into OOM (out of memory) errors, or if you find that your system is unable to use the applications you need, the best solution is to optimize your application configurations or upgrade your server.