DEV Community

Eric F 🇺🇦
Eric F 🇺🇦

Posted on • Edited on

3

Adding a swapfile in #Linux

I usually go with a swapfile instead of a swap partition. So, during installation I don't create that partition, and instead I add the swapfile later.

So, here's how I do it.

First, I do everything as su:

~$ su -
Password:
~# 
Enter fullscreen mode Exit fullscreen mode

 

Create the directory and the swapfile. I prefer the path /var/vm/. Others may prefer /var/swap/. To create the swapfile - you can use dd, or fallocate if you prefer that one. I use dd.

The size of the swapfile may vary on your needs. I usually go with quite a big one, so in case I want to hibernate - there will be enough room. So, on an old laptop with 3G of RAM - I'll go with 4G.

~# mkdir /var/vm && cd /var/vm
vm# dd if=/dev/zero of=./swapfile0 bs=1M count=4096 status=progress 
4237295616 bytes (4,2 GB, 3,9 GiB) copied, 45 s, 94,2 MB/s
4096+0 records in
4096+0 records out
4294967296 bytes (4,3 GB, 4,0 GiB) copied, 45,6187 s, 94,1 MB/s
Enter fullscreen mode Exit fullscreen mode

 

And set the permissions to 600:

vm# chmod 600 swapfile0
vm# ls -l swapfile0
total 4194304
-rw-------. 1 root root 4294967296  5 jan 03.14 swapfile0
Enter fullscreen mode Exit fullscreen mode

 

Then make it an actual swapfile, turn the swap on, and check the status.

vm# mkswap swapfile0
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=<unique hash string>
vm# swapon swapfile0
vm# swapon -s
Filename            Type        Size    Used    Priority
/var/vm/swapfile0   file        4194300 0       -2
Enter fullscreen mode Exit fullscreen mode

 

To make it mount on boot, we need to add it to /etc/fstab. So, with your favorite editor (eg. vim, vi, nano, etc)…

vm# vim /etc/fstab
Enter fullscreen mode Exit fullscreen mode

 

And add these lines to the end of the file:

# Swapfile0
/var/vm/swapfile0   none    swap    defaults    0 0
Enter fullscreen mode Exit fullscreen mode

Using the free command will get you information on how much swap you have and are using.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          2,9Gi       1,3Gi       493Mi       140Mi       1,1Gi       1,3Gi
Swap:         4,0Gi       132Mi       3,9Gi
Enter fullscreen mode Exit fullscreen mode

SELinux

To make sure it works fine with SELinux, we need to set the correct context to the file: 'swap_t'.

~# semanage fcontext -a -t swapfile_t '/var/vm/swapfile0'
~# restorecon /var/vm/swapfile0 
~# ls -lZ /var/vm/
total 4194304
-rw-------. 1 root root unconfined_u:object_r:swapfile_t:s0 4294967296  5 jan 03.17 swapfile0
Enter fullscreen mode Exit fullscreen mode

Tuning

To tune the cache so it doesn't swap too much, you can add these settings to sysctl.conf. In some systems/distros, you can add them directly there. In others you make an xtra file that will be sourced.

On my Rocky Linux system, I use an xtra file, like this:

~# vim /etc/sysctl.d/90-swappiness.conf
Enter fullscreen mode Exit fullscreen mode

 

Then add this content:

#
# /etc/sysctl.d/90-swappiness.conf
#
# Description:
#     sysctl.conf settings for swap
#

vm.swappiness=10
vm.vfs_cache_pressure=40

vm.dirty_background_ratio=10
vm.dirty_ratio=15 
Enter fullscreen mode Exit fullscreen mode

 

Now all is good. :)


// Happy hacking… 👍

· Eric

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay