How to create swap in Linux

Creating a swap space in Linux involves allocating a dedicated area on your storage device (usually a hard drive or SSD) that can be used as virtual memory. This helps to supplement the physical RAM, allowing the system to manage memory more efficiently. Here’s how you can create a swap space:

Note: Creating a swap space may require administrative privileges (root access). Be cautious while manipulating disk partitions.

Step 1: Check for Existing Swap

Before creating a new swap space, check if your system already has an existing swap partition or swap file.

To check existing swap usage, you can use the free or swapon command:

free -h
swapon --show

Step 2: Create a Swap File:

If your system doesn’t have a swap partition and you want to create a swap file instead, follow these steps:

  • Determine the desired size for your swap file. It’s recommended to have a swap space equal to or slightly larger than your system’s physical RAM. For instance, if you have 4GB of RAM, you might create a 4GB swap file.
  • Create an empty file using the dd command. Adjust the size according to your needs:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
  • Secure the swap file’s permissions:
sudo chmod 600 /swapfile
  • Set up the swap file using the mkswap command:
sudo mkswap /swapfile
  • Enable the swap file for immediate use:
sudo swapon /swapfile
  • To make the swap file activation permanent, add an entry to your /etc/fstab file:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Step 3: Create a Swap Partition

If you want to create a dedicated swap partition, you can follow these steps:

  • Use a partitioning tool like fdisk or parted to create a new partition. The partition type should be set to “Linux swap” (Type ID 82).
  • Format the partition as swap using the mkswap command:
sudo mkswap /dev/sdXN
  • Activate the swap partition:
sudo swapon /dev/sdXN
  • To make the swap partition activation permanent, add an entry to your /etc/fstab file:
echo '/dev/sdXN none swap sw 0 0' | sudo tee -a /etc/fstab

Replace /dev/sdXN with the actual device and partition number you’re using for the swap.

Step 4: Adjust Swap Settings

You can adjust the behavior of swap space using the swappiness value. A lower value (e.g., 10) makes the system avoid using swap as much as possible, while a higher value (e.g., 60) makes the system use swap more aggressively. Edit the /etc/sysctl.conf file to set the vm.swappiness value:

sudo nano /etc/sysctl.conf
  • Add the following line to the file:
vm.swappiness=10
  • Save the file and apply the changes using:
sudo sysctl -p

Remember that swap space can help your system handle memory-intensive tasks but isn’t a substitute for having sufficient physical RAM. If your system frequently relies on swap space, you might want to consider upgrading your RAM.


I have already created a bash shell script for automatically creating swap. You can use this script across various Linux distributions.

#!/bin/bash

echo "Welcome to kblinux.com!"
read -p "Enter the desired swap size (in GB): " swap_size

# Check if the user entered a valid number
re='^[0-9]+$'
if ! [[ $swap_size =~ $re ]]; then
    echo "Error: You need to enter a positive integer!"
    exit 1
fi

# Create swap with the entered size
echo "Creating swap with a size of $swap_size GB..."
sudo dd if=/dev/zero of=/swapfile bs=1G count=$swap_size
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Add swap to /etc/fstab for automatic activation after reboot
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab

echo "Swap has been successfully created and activated!"
echo "Swap information:"
free -h

echo "Thank you for using the script!"
Knowledge Base Linux
Knowledge Base Linux

Kblinux is an abbreviation for the phrase "Knowledge Base Linux." The website shares instructional articles related to the Linux system. I hope my small blog will reach many people who share the same passion for Linux.

Articles: 40

KbLinux

Typically replies within a day

Hello, Welcome to the site. Please click below button for chatting me through Telegram.