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?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityI myself have on several machines a swap file on mdadm
RAID, therefore there's a bit of overhead. But anyway, if you adjust vm.swappiness
wisely to a more acceptable value than 60, which is the default, you should have no problem.
For instance, I have 32GB RAM server with 32GB swap file on RAID6 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 /raid1/
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=/raid1/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 /raid1/swapfile
Make this file a swap file:
mkswap /raid1/swapfile
Enable the swap file:
swapon /raid1/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:
/raid1/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.