This tutorial focuses on how to create swap space on Debian 10 via a swap file or a swap partition on your hard drive.
On a Linux system, it is very common to run out of memory, because you run too many programs, or because you run programs that are consuming too much memory.
As a consequence, if your RAM is full, you won’t be able to launch new programs on your computer.
You will have to manually shut down programs or tweak them to consume less memory.
There is however another way to virtually increase your memory : by using swap space.
In this tutorial, we are going to see how you can add swap space on Debian 10, either by creating a swap file or by creating a disk partition dedicated to swap.
Looking to add swap space on CentOS 8?
What is Swap Space on Debian?
Swap space is a space allocated to handle additional programs running when your RAM memory is full.
Let’s say that you have 4 GBs of RAM on your computer, and that 3 programs are already taking 3.5 GBs out of the 4 available.
If you are trying to run a program that is taking 1 GB on normal usage, you won’t be able to do it as you don’t have the space necessary for the program.
You could buy some RAM (which is expensive), or you could choose to create some swap space on your host.
When running your 1 GB program, your operating system (Linux here) will “move” or “swap” one of the programs to a dedicated part of your hard drive (your swap partition) and run your 1 GB program on the newly allocated space.
As you can imagine, the OS can switch programs from swap to RAM and vice versa.
The threshold to determine when programs should be switched from RAM to Swap is called the swappiness, but configuring ths swappiness will be reserved for another tutorial.
Now that you have some basics on what the swap space is and how the swap space works on Linux, let’s see on you can create some swap space on Debian 10.
Prerequisites
Sudo privileges
In order to add swap space on Debian 10 Buster, you need to have sudo privileges on your host.
Make sure this is the case by running the following command
$ sudo -v
If you are not getting any errors messages, you are good to go.
Checking existing swap partitions
In order to see existing swap partitions available on your host, run the following command
$ sudo swapon --show
If a partition is already existing, you should get at least one line as a result.
As you can see, I already own a swap partition on my sda drive of size 8 GB.
As the current memory on my computer is sufficient, my host is not using swap at the moment.
If no swap spaces are configured on your system, this is the output that you should expect.
Add Swap Space with a swap file
The first method to add swap space on Debian is to use a dedicated swap file.
Many tutorials are not specifying this detail, but swap files cannot contain any holes at all.
It means that you should not use the cp command to create your swap file.
It is also not recommended to use the fallocate commands on file systems that support preallocated files such as XFS and ext4.
As a consequence, you are going to use the dd command in order to add swap space on Debian.
In this case, we are going to create a 2 GB swap file.
Note : there are no performance improvements in using a swap file rather than creating a file partition. Swap files are just easier to manage because the file size can be easily adjusted. Changing the partition size for swap can be trickier than changing the file size.
a – Create a swapfile using dd
To add swap space, run the following command
$ sudo dd if=/dev/zero of=swapfile bs=1MiB count=$((2*2014))
Make sure that your swap file was created by issuing the following command.
$ ls -l swapfile
b – Secure your swapfile with permissions
Swap files are only used by the operating system for memory optimization purposes.
As a consequence, it should not be modified by any users except for the root user.
Change the file permissions of your swapfile.
$ sudo chmod 600 /swapfile
c – Enable your swapfile
Now that your swapfile is secure, it is time to activate your swap space.
To enable swap space on Debian 10, run the following command.
$ sudo mkswap /swapfile
This is going to set the file as a swap file, setting the correct headers for the swapon binary.
Now that the swapspace is correctly set, you can enable it.
$ sudo swapon /swapfile
To verify that your swap space is active, you can run the initial command with the –show flag.
$ sudo swapon --show
d – Make your swap space permanent
Similarly to the creation of filesystems, changes won’t be made permanent if you don’t append some changes to the fstab file.
If you leave it this way, your swap space will be erased at the next host reboot.
To make your swap space permanent, edit the /etc/fstab file and paste the following changes.
$ cd /etc/
$ sudo nano fstab
/swapfile none swap defaults 0 0
This configuration specifies that :
- /swapfile: the name of the “swap filesystem” we are creating;
- none: there is mount point for this filesystem
- swap: the filesystem type used
- defaults: the filesystem options, set as default for this example
- 0: the dump option for the filesystem, as well as the pass option.
Save your file, and restart your changes to make sure that the changes are still effective.
$ sudo reboot
$ sudo swapon --show
Congratulations!
You successfully created swap space on Debian 10 using a swap file.
Add Swap Space with a swap partition
Another way to add swap space on Debian is to create a dedicated swap partition.
If you run the initial Debian 10 installation, there is a high chance that some swap partition is already created on your system.
However for this tutorial, we are going to start from scratch and create our own swap partition.
a – Create a swap space partition with fdisk
To have a look at the existing partitions on your host, run the following command
$ sudo fdisk -l
As you can see, I already own a ext4 primary partition and a second partition that is not currently used.
We are going to add a swap partition as an extended or logical partition on sda.
Run the fdisk utility, and create a new partition on the hard drive that you want (sda in my case)
$ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.30.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Run the “n” command to add a new partition to your disk.
Note : if your host is running out of primary partitions, you can add swap space within an extended partition.
All space for primary partitions is in use
Adding logical partition 5
First sector (48291898-65062911, default 48291840):
You can leave the first sector option as default by just pressing Enter.
On the next prompt, specify the size of your swap partition. In this case, I am going to use 2 GiB again.
Last sector, +/-sectors or +/-size{K,M,G,T,P} : +2G
Created a new partition 5 of type 'Linux' and of size 2 GiB.
As you can see, partitions are created with the Linux partition type by default.
This is not what we want, since we want to have a swap partition on our drive.
To change the partition type, run the “t” command in fdisk.
Command (m for help): t
Partition number (1,2,5, default 5): 5
Hex code (type L to list all codes): 82
On Linux, swap partitions have the partition type ID 82 in fdisk.
Hit Enter, and make sure that your partition type was correctly changed.
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Don’t forget to write your changes to disk as fdisk does not directly write to disk unless you ask it do it.
To write on disk, run the “w” command in fdisk.
The partition table has been altered
Syncing disks.
Make sure that your swap partition was correctly added by running the fdisk command again.
Now that your swap partition is created, it is time to enable it on our Debian 10 host.
b – Enabling your swap partition
First, make sure to run the mkswap for the swap headers to be correctly set on your partition.
$ sudo mkswap /dev/sda5
Now that your headers are set, run the swapon command.
$ sudo swapon /dev/sda5
Similarly to the other method, make sure that your swap space was correctly created.
$ sudo swapon --show
c – Make your swap space permanent
In order to make your swap space permanent, it needs to be added to the fstab file.
First of all, get the UUID for your newly created partition.
$ sudo blkid
Copy the UUID value, and edit your fstab to append the following changes.
$ sudo nano /etc/fstab
UUID=4c46c5af-3530-486b-aabe-abca2543edca none swap defaults 0 0
Save your file, and restart your system to make sure that your changes are permanent.
$ sudo reboot
$ sudo swapon --show
Congratulations, you correctly created a swap partition using fdisk on Debian 10 Buster.
Remove swap partition on Debian
Removing swap partitions on Debian is pretty straightforward : first you need to use the command “swapoff” on the swap partition you are trying to remove.
If you are not sure about your current existing partitions, run a simple “blkid” command.
$ blkid
$ sudo swapon /dev/sda5
Finally, edit your fstab and remove the entry associated with the swap partition.
$ sudo nano fstab
UUID=4c46c5af-3530-486b-aabe-abca2543edca none swap defaults 0 0 <--- To be removed.
Troubleshooting
When adding swap space on Debian 10 Buster, you may run into the following error.
swapon: /swapfile: read swap header failed.
This error is happening when you don’t run the mkswap command before running the swapon command.
As a reminder, mkswap sets the header for the file or the partition to be used as swap space.
If you forget to run the mkswap command, Linux won’t be able to assign it as swap space on your host.
Location of swap file on Linux
By default, swap files are located into the “/proc/swaps” directory of your system.
~$ cat /proc/swaps
Filename Type Size Used Priority
/swapfile file 1025101 0 -1
From there, you know that your swap file is located at your root directory.
Another way to get the location of your swap file is to inspect the fstab file.
$ cat /etc/fstab
/swapfile none swap sw 0 0
Conclusion
Today, you learnt that there are two ways to add swap space on a Debian 10 host, by creating a swap file or by creating a swap partition with fdisk.
We have many more tutorials on Linux administration on devconnected, so make sure to check them by clicking on the image just below.
2 comments
sudo dd if=/dev/zero of=swapfile bs=1MiB count=$((2*2014)) creates an 4 GB file, not 2 GB as you did write (“In this case, we are going to create a 2 GB swap file.”)
Indeed, thank you for the remark!