How to add a swap file on Ubuntu 16.04

Into one of my posts (How to install Ghost on Ubuntu 16.04) I mentioned that error Killedt:iconv-lite → gunz may occur because of using npm on VPS instance with low RAM. I've got such error while installing Ghost on VPS instance with 512MB of RAM. That happened because npm run out of memory and Linux OOM killer started to kill processed to get memory back to the system. Such problem could be resolved by increasing RAM from 512MB to 1GB or by creating a swap file.
In this tutorial I will describe how to add a swap file on Ubuntu 16.04.

Create a file for swapping

We'll store the swap file in /var/swap/ folder. So let's create required folders first.

sudo mkdir -p /var/swap

Now let's create a swap file

cd /var/swap
sudo touch swap.img
sudo chmod 600 swap.img

We created a file which will be used for swapping and restricted file's permissions to read and write only for file's owner (root in that case).

Swap file size

According to some sources it's recommended to create a swap with size 2X of instance RAM. But in case of Ghost 512Mb of RAM should be enough.
Lets change file's size to 512MB

sudo dd if=/dev/zero of=/var/swap/swap.img bs=1024k count=512

The output will look like

512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 1.03334 s, 520 MB/s

We are using a dd utility which fills a swap file with zeroes to required size (in our case it's 512Mb) with blocks size equal to 1024k. Creating swap file with such parameters should not take too long.

Set up a swap area

Our file for swapping is ready. Now we need to set up a swap area on our created file.

sudo mkswap /var/swap/swap.img

Our swap area is ready for use. Now let's enable it

sudo swapon /var/swap/swap.img

swapon is an utility which permanently enables swap. After system reboot it will be disabled. To make swap constantly enabled we should add the following line into the file /etc/fstab

# Swap file
/var/swap/swap.img    none    swap    sw    0    0

/etc/fstab is a config file which contains information about how file systems and devices will be mounted and used during system boot.

Alexey Bogdanov

Read more posts by this author.

Subscribe to Development notes

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!