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.

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.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

6 thoughts on “How To Create a Linux Swap File”

  1. 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
    
    Reply
  2. 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.

    Reply

Leave a Reply to rabitu171 Cancel reply

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.