I know how to create and use a swap partition but can I also use a file instead?
How can I create a swap file on a Linux system?
I know how to create and use a swap partition but can I also use a file instead?
How can I create a swap file on a Linux system?
Let's start with the basic information, you should inspect what vm.swappiness
is set, and if set wisely to a more acceptable value than 60, which is the default, you should have no problem. This command can be run as normal user:
sysctl vm.swappiness
For instance, I have 32GB RAM server with 32GB swap file with vm.swappiness
= 1. Quoting the Wikipedia:
vm.swappiness
= 1: Kernel version 3.5 and over, as well as Red Hat kernel version 2.6.32-303 and over: Minimum amount of swapping without disabling it entirely.
In this example, we create a swap file:
8GB in size,
Located in /
(the root directory).
Change these two things accordingly to your needs.
Open terminal and become root
(su
); if you have sudo
enabled, you may also do for example sudo -i
; see man sudo
for all options):
sudo -i
Allocate space for the swap file:
dd if=/dev/zero of=/swapfile bs=1G count=8
Optionally, if your system supports it, you may add status=progress
to that command line.
Note, that the size specified here in G
is in GiB (multiples of 1024).
Change permissions of the swap file, so that only root
can access it:
chmod 600 /swapfile
Make this file a swap file:
mkswap /swapfile
Enable the swap file:
swapon /swapfile
Verify, whether the swap file is in use:
cat /proc/swaps
Open a text editor you are skilled in with this file, e.g. nano
if unsure:
nano /etc/fstab
To make this swap file available after reboot, add the following line:
/swapfile none swap sw 0 0
$ sudo fallocate -l 1G /swapfile
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
Editor's note: Step 1 and Step 2 are interchangeable.
Please check the script for creating a SWAP Memory of 16GB:
#!/bin/bash
#find Free
free -h
#Checking availability space
df -h
#swap Off
sudo swapoff /swapfile
#Allocate swap
sudo fallocate -l 16G /swapfile
#correct amount of space was reserved
ls -lh /swapfile
#file only accessible to root
sudo chmod 600 /swapfile
#amount of space was reserved for the root
ls -lh /swapfile
#now mark the file as swap space
sudo mkswap /swapfile
#Swap On
sudo swapon /swapfile
#swap Show
sudo swapon --show
#statment
echo -e "\n\n Swap 16Gb done"
exit 0