Greg Chapple

Engineering leader, software developer, and CTO of Propylon

github twitter keybase instagram email
Creating Linux Swap Files
Feb 19, 2018
2 minutes read

Following on from my last post I’ve been migrating more services into EC2 from my current hosting provider. Another task I found myself needing to do was creating swap files for my EC2 instances. This was another task for which I had completely forgotten the step.

For my use case, I needed to create a 1GiB swap file. To create the file I first tried to use fallocate:

$ fallocate -l 1G /mnt/swapfile

I found out later that on XFS fallocate has some issues creating files without holes/gaps, so these files don’t work as swap files. Instead, I used dd:

$ dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=1024

This will create a 1024MiB (or 1 GiB) file at /mnt/swapfile. The next step is to set the correct permissions:

$ chmod 600 /mnt/swapfile

Then, we format the file as a swap file:

$ mkswap /mnt/swapfile

After this we can mount it as swap!

$ swapon /mnt/swapfile

We can verify that the swap has been added successfully using swapon -s which produces something like:

Filename				Type		Size	Used	Priority
/mnt/swapfile                          	file	1048572	0	-1

The final step is to ensure that the swap is added on boot. To do this we need to add an entry to /etc/fstab:

/mnt/swapfile	none	swap	sw		0   0

With that in place, the swap will be added after each reboot so you won’t need to manually run swapon every time.

Tags: linux devops

Back to posts