In this article, we will explain swap space, and learn how to create swap space using a swap file in Linux: this is important in case we don’t have a swap partition created on the hard disk.
Swap space/partition is space on a disk created for use by the operating system when memory has been fully utilized. It can be used as virtual memory for the system; it can either be a partition or a file on a disk.
When the kernel runs out of memory, it can move idle/inactive processes into swap creating room for active processes in the working memory. This is memory management that involves swapping sections of memory to and from virtual memory.
Suggested Read: 8 Useful Commands to Monitor Swap Space Usage in Linux
With that said, below are the steps we can follow to create a swap space using a file.
How to Create and Enable Swap in Linux
1. In this example, we will create a swap file of size 2GB using the dd command as follows. Note that bs=1024 means read and write up to 1024 bytes at a time and count = (1024 x 2048)MB size of the file.
# dd if=/dev/zero of=/mnt/swapfile bs=1024 count=2097152
Alternatively, use the fallocate command as follows.
# fallocate --length 2GiB /mnt/swapfile
And then set the appropriate permissions on the file; make it readable only by root user as follows.
# chmod 600 /mnt/swapfile
2. Now setup the file for swap space with the mkwap command.
# mkswap /mnt/swapfile
3. Next, enable the swap file and add it to the system as a swap file.
# swapon /mnt/swapfile
4. Afterwards, enable the swap file to be mounted at boot time. Edit the /etc/fstab file and add the following line in it.
/mnt/swapfile swap swap defaults 0 0
In the line above, each field means:
- /mnt/swapfile – device/file name
- swap – defines device mount point
- swap – specifies the file-system type
- defaults – describes the mount options
- 0 – specifies the option to be used by the dump program
- 0 – specifies the fsck command option
6. To set how often the swap file can be used by the kernel, open the /etc/sysctl.conf file and add the line below.
Note that the default value of how frequent swap space can be used is 60 (maximum value is 100). The higher the number, the more frequent swap space utilization by the kernel. When the value is set to 0, the swap file will only be used if the operating system has fully utilized memory.
vm.swappiness=10
6. Now verify the swap file was created using the swapon command.
# swapon -s OR # free OR # cat /proc/swaps
We can optionally reboot the system to effect the above changes using the following command.
# reboot
Remember to also read through these useful Linux memory management guides:
- How to Clear RAM Memory Cache, Buffer and Swap Space on Linux
- 10 ‘free’ Commands to Check Memory Usage in Linux
- Smem – Reports Memory Consumption Per-Process and Per-User Basis in Linux
- Find Top Running Processes by Highest Memory and CPU Usage in Linux
That’s It! If you have any issues, use the feedback form below to send us any questions or important additional ideas to this topic.
Really helped me out because I forgot to create a swap partition on my OpenSUSE install…
Thank you for this amazing article, it helped me to create a Swap file in Linux.
@mohamed
Great! Many thanks for the feedback.
mkswap /mnt/swapfile
step is missing i guess. I am able to create swap after only this step.Sample Output
Quoted:
I’d like to add another detail. In this line one may choose to use other units to make things more simple:
You can turn it into:
This means that the block size is 1 MB, so count=512 means “I need 512 megs”, there is no need to do any other calculations.
@oldgaro
Thanks for the useful tip, it’s really handy.