Forem

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

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay