How to add a Swap File in Linux

There might be situations when you need extra swap space to improve your Linux server/desktop system performance. How do you add a swap file to Linux system using command line options without creating a new partitions? Or is it even possible. Well in answer for the second question..Yes, its possible. and as for the question on how it is done, come lets find out 🙂

In Linux, as in most other Unix-like operating systems, it is common to use a whole partition of a hard disk for swapping. You can add swap file as a dedicated partition which is the usual way we do it or use following instructions below to create a swap file.

You need to use the dd command to create swap file. The mkswap command is used to set up a Linux swap area on a device or in a file.

Step #1: Login as the Root User

Open a terminal window (select Applications > Accessories > Terminal) or login to remote server using the ssh client. Switch to the root user by typing su - (or sudo -s) and entering the root password, when prompted:

$ su –

OR

sudo -s

Step #2: Create Storage File

Type the following command to create 512MB swap file (1024 * 512MB = 524288 block size):

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

Sample outputs:


524288+0 records in


524288+0 records out


536870912 bytes (537 MB) copied, 3.23347 s, 166 MB/s


Where,

  1. if=/dev/zero : Read from /dev/zero file. /dev/zero is a special file in that provides as many null characters to build storage file called /swapfile1.
  2. of=/swapfile1 : Read from /dev/zero write storage file to /swapfile1.
  3. bs=1024 : Read and write 1024 BYTES bytes at a time.
  4. count=524288 : Copy only 523288 BLOCKS input blocks

Step #3: Secure swap file

Setup correct file permission for security reasons, enter

# chown root:root /swapfile1

# chmod 0600 /swapfile1

The reason we set the permissions 600 is self explanatory. A world-readable swap file is a huge local vulnerability which should not be the permissions to be given for a swap partition. The above commands make sure only root user can read and write to the file.

Step #4: Set up a Linux swap area

Type the following command to set up a Linux swap area in a file:

# mkswap /swapfile1

Sample outputs:


Setting up swapspace version 1, size = 524284 KiB


no label, UUID=0e5e7c60-bbba-4089-a76c-2bb29c0f0839


Step #5: Enabling the swap file

Finally, activate /swapfile1 swap space immediately, enter:


# swapon /swapfile1


Step #6: Update /etc/fstab file

To activate /swapfile1 after Linux system reboot, add entry to /etc/fstab file. Open this file using a text editor such as vi:


# vi /etc/fstab


Append the following line:


/swapfile1 none swap sw 0 0


Save and close the file. Next time Linux comes up after reboot, it enables the new swap file for you automatically.

How do I verify swap is activated or not?

Simply use the free command:


$ free -m



total used free shared buffers cached


Mem: 1876 1798 77 0 119 1440


-/+ buffers/cache: 237 1638


Swap: 4607 0 4607


How can I display swap usage summary on Linux?

Type the following swapon command:


# swapon -s



Filename Type Size Used Priority


/dev/sda6 partition 4194296 0 0


/swapfile1 file 524280 0 -1


How do I set swappiness on a Linux server?

The syntax is:


# sysctl vm.swappiness=VALUE

# sysctl vm.swappiness=20


OR


# echo VALUE > /proc/sys/vm/swappiness

# echo 30 > /proc/sys/vm/swappiness


The value which is specified in /proc/sys/vm/swappiness file controls how aggressively the kernel will swap memory pages. Specifying a heigher value increase its agressiveness. The default value is 60. To make changes permanent add the following line to/etc/sysctl.conf:


echo ‘vm.swappiness=30’ >> /etc/sysctl.conf


 

You may also like...

Leave a Reply

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.