How To Create a Linux Swap File

In this article, we will explain swap space, and learn how to create swap space using a swap file in Linux: this is important in case we don’t have a swap partition created on the hard disk.

Swap space/partition is space on a disk created for use by the operating system when memory has been fully utilized. It can be used as virtual memory for the system; it can either be a partition or a file on a disk.

When the kernel runs out of memory, it can move idle/inactive processes into swap creating room for active processes in the working memory. This is memory management that involves swapping sections of memory to and from virtual memory.

Suggested Read: 8 Useful Commands to Monitor Swap Space Usage in Linux

With that said, below are the steps we can follow to create a swap space using a file.

How to Create and Enable Swap in Linux

1. In this example, we will create a swap file of size 2GB using the dd command as follows. Note that bs=1024 means read and write up to 1024 bytes at a time and count = (1024 x 2048)MB size of the file.

# dd if=/dev/zero of=/mnt/swapfile bs=1024 count=2097152

Alternatively, use the fallocate command as follows.

# fallocate --length 2GiB /mnt/swapfile

And then set the appropriate permissions on the file; make it readable only by root user as follows.

# chmod 600 /mnt/swapfile

2. Now setup the file for swap space with the mkwap command.

# mkswap /mnt/swapfile

3. Next, enable the swap file and add it to the system as a swap file.

# swapon /mnt/swapfile

4. Afterwards, enable the swap file to be mounted at boot time. Edit the /etc/fstab file and add the following line in it.

/mnt/swapfile swap swap defaults 0 0

In the line above, each field means:

  • /mnt/swapfile – device/file name
  • swap – defines device mount point
  • swap – specifies the file-system type
  • defaults – describes the mount options
  • 0 – specifies the option to be used by the dump program
  • 0 – specifies the fsck command option

6. To set how often the swap file can be used by the kernel, open the /etc/sysctl.conf file and add the line below.

Note that the default value of how frequent swap space can be used is 60 (maximum value is 100). The higher the number, the more frequent swap space utilization by the kernel. When the value is set to 0, the swap file will only be used if the operating system has fully utilized memory.

vm.swappiness=10

6. Now verify the swap file was created using the swapon command.

# swapon  -s
OR
# free
OR
# cat  /proc/swaps
Check Swap Space in Linux

Check Swap Space in Linux

We can optionally reboot the system to effect the above changes using the following command.

# reboot

Remember to also read through these useful Linux memory management guides:

  1. How to Clear RAM Memory Cache, Buffer and Swap Space on Linux
  2. 10 ‘free’ Commands to Check Memory Usage in Linux
  3. Smem – Reports Memory Consumption Per-Process and Per-User Basis in Linux
  4. Find Top Running Processes by Highest Memory and CPU Usage in Linux

That’s It! If you have any issues, use the feedback form below to send us any questions or important additional ideas to this topic.

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Aaron Kili

Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

3 Responses

  1. Nityanand Shet says:

    mkswap /mnt/swapfile step is missing i guess. I am able to create swap after only this step.

    # swapoff -v /swapfile
    # chmod 600 /mnt/swapfile
    # swapon /mnt/swapfile
    # swapon: /mnt/swapfile: read swap header failed: Invalid argument
    # mkswap /mnt/swapfile 
    # swapon /mnt/swapfile
    # free  -m
    
    Sample Output
                  total        used        free      shared  buff/cache   available
    Mem:          15883        2337        9955          16        3591       13206
    Swap:          2047           0        2047
    
  2. oldgaro says:

    Quoted:

    I’d like to add another detail. In this line one may choose to use other units to make things more simple:

    # dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
    

    You can turn it into:

    # dd if=/dev/zero of=/swapfile1 bs=1M count=512
    

    This means that the block size is 1 MB, so count=512 means “I need 512 megs”, there is no need to do any other calculations.

Got something to say? Join the discussion.

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.