Linux

How to Create Swap Partition in Linux

Create Swap Partition in Linux

A swap partition can be an important component of any Linux system. It provides additional memory when your system’s RAM is fully utilized. Without enough swap space, your system could slow down dramatically or even freeze when memory demands are high.

In this comprehensive guide, we will walk through the entire process of creating a swap partition on a Linux system, specifically for Ubuntu. We will cover everything from checking your current swap configuration to creating and formatting the new partition, making it permanent, and troubleshooting any issues along the way.

Whether you are setting up a new Linux install or want to add additional swap space to an existing system, this guide will provide all the necessary steps. By the end, you will have a fully configured swap partition ready to help optimize your system’s performance.

Prerequisites

Before we get started, there are a couple of requirements to complete this guide:

  • Basic knowledge of Linux and comfort using the terminal. We will be using various command line utilities.
  • Root access to an Ubuntu Linux distribution. To create partitions and modify system files, you will need to operate with root privileges.
  • Available disk space. We will be creating a new partition for swap, so you need free space on your disk.
  • Backups (recommended). When modifying disk partitions, it’s always a good idea to have backups, just in case.

As long as you meet these requirements, you are ready to begin creating your swap partition. Let’s start by looking at the current swap setup.

Checking Current Swap Information

First, we need to check if the system already has any swap space configured. This gives us an idea of the current swap situation and whether we need to add more.

Use the swapon command to see currently enabled swap areas:

sudo swapon --show

This will print out any active swap partitions or files. If nothing prints, there is no swap enabled.

To see more details on swap areas including size, use swapon with the -s flag:

sudo swapon -s

This provides more detailed output including the swap file or partition name, type of swap, size, used space, and priority.

You can also use a utility like grep to parse the output of /proc/swaps which contains similar information:

sudo grep --color=auto Swap /proc/swaps

In addition to currently enabled swaps, we also want to check any swap entries that may be configured to activate on boot via /etc/fstab.

Examine this file for any lines starting with “swap”:

sudo cat /etc/fstab

This will print lines that define permanent swap mounts. The output will include the swap area name and mount options. With this information, you can now see if any swap space is already set up, the size of any existing swap areas, and if additional swap is needed.

Creating the Swap Partition

If you have determined that additional swap space is required, the next step is to create a new swap partition.

There are a couple of ways to go about this, but we will use fdisk it to create a new primary partition for swap.

Note: This will erase any existing data on the partition, so be sure you do not overwrite another important partition. First, run fdisk against the disk you want to partition:

sudo fdisk /dev/sda

Replace /dev/sda with your actual disk device name. Inside the fdisk interface:

    1. Type p to print the partition table and identify available free space.
    2. Type n to create a new partition.
    3. Specify the partition type as Linux swap.
    4. Enter the starting and ending blocks for the size you want.
    5. Type t to set the hex code 82 for a Linux swap partition.
    6. Verify the partition table and changes look correct.
    7. Type w to write the partition table and exit.

For example:

Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    2099199    1048576   83  Linux
/dev/sda2        2099200    62914559    30411280   83  Linux

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 
First sector (20973568-62914559, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-62914559, default 62914559): 
Using default value 62914559

Command (m for help): t
Selected partition 2
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap'

Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    2099199    1048576   83  Linux
/dev/sda2        2099200    62914559    30411280   82  Linux swap

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table. 
Syncing disks.

This will create a new swap partition of the desired size. Next, we need to prepare it for usage.

Making the Swap Partition Usable

Now that we have an unformatted swap partition, we need to set it up to be used as an actual swap area. First, we format the partition with the mkswap utility:

sudo mkswap /dev/sda2

Replace /dev/sda2 with your actual swap partition.

This formats the partition with the Linux swap file system.

Next, enable the swap area with the swapon command:

sudo swapon /dev/sda2

Our new swap space is now active and ready for use!

We can verify it is enabled by checking swapon --show again and it should now be listed.

Making the Swap Permanent

Currently, our new swap partition is enabled, but it will not persist on reboot unless we add it to the /etc/fstab file. First, get the UUID of the new swap partition:

sudo blkid | grep swap

The output will provide the UUID in a format similar to:

/dev/sda2: UUID="5b6e7eb0-1e89-4127-b0b7-26a37be8fce4" TYPE="swap"

Next, add a new line to /etc/fstab with the UUID and swap mount options:

UUID=5b6e7eb0-1e89-4127-b0b7-26a37be8fce4 none swap sw 0 0

Now our swap partition will automatically mount on boot.

Test that the /etc/fstab entry works by unmounting and remounting the swap:

sudo swapoff -a
sudo swapon -a

Check it was re-enabled using swapon --show.

The last step is to enable the OS to start swapping memory when needed:

sudo sysctl vm.swappiness=10

This sets the swappiness value to 10 which is a normal level for desktop systems. We now have a permanent swap partition that will be used by Linux to optimize performance!

Troubleshooting

There are a few issues that may come up when creating and configuring a new swap partition. Here are some common problems and solutions.

  • Swap partition not enabled on boot

If your new swap area is not enabled after restarting, the /etc/fstab entry may be incorrect. Double-check check the UUID matches the output  blkid and that the mount options are correct.

  • Swap space not being used

Check the swappiness value with cat /proc/sys/vm/swappiness. If it is 0, then the system will not swap at all. Set it to a lower value like 10. Also, ensure there are no limits set in /etc/sysctl.conf.

  • Out-of-memory errors

If you are still getting out-of-memory errors after adding more swaps, the swap space may be too small for your workload. Create an additional swap partition or swap file to add more capacity.

  • Slow performance

Excessive swapping can slow down performance. Make sure the swappiness value is not too high and close resource-heavy programs to reduce memory pressure. Adding more RAM may also help reduce swap usage. Be sure to monitor swap usage with tools like top or htop to see if the new swap is being utilized as expected.

r00t

r00t is a seasoned Linux system administrator with a wealth of experience in the field. Known for his contributions to idroot.us, r00t has authored numerous tutorials and guides, helping users navigate the complexities of Linux systems. His expertise spans across various Linux distributions, including Ubuntu, CentOS, and Debian. r00t's work is characterized by his ability to simplify complex concepts, making Linux more accessible to users of all skill levels. His dedication to the Linux community and his commitment to sharing knowledge makes him a respected figure in the field.
Back to top button