We all know how important SWAP is. And how bad is without it. Especially when the RAM is not so much, and on the server appeared "voracious" process. Yes, and disk space right next to the server. And the performance needs to be restored right now ...
In this article I want to consider ways to add SWAP on AWS EC2 servers "on hot", without restarting the server.
SWAP is one of the mechanisms of virtual memory, in which individual fragments of memory (usually inactive) are moved from RAM to secondary storage (a separate partition or file), freeing up RAM for loading other active fragments of memory. SWAP is also used when organizing a sleep mode. But in the context of this article we will not consider it. More information about SWAP can be found in Wikipedia .
Consider two ways to add SWAP:
To implement this solution, we will need:
First you need to create an EBS Volume of the desired size. To do this, go to
Services -> EC2 -> Volumes in AWS Console
Specify the size we need and create EBS Volume
Waiting for EBS Volume State to become available.
Then choose our EBS Volume and Actions -> Attach Volume
And choosing the server to which we will mount the disk is completed with the preparation of the EBS Volume
Now connect to our server and execute the lsblk command
ubuntu@testinstance:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 16G 0 disk └─xvda1 202:1 0 16G 0 part / xvdf 202:80 0 8G 0 disk
We see that our EBS Volume is successfully connected as / dev / xvdf .
Now we need to format the connected EBS Volume via mkswap
NOTE : don't forget to replace / dev / xvdf with your value
ubuntu@testinstance:~$ sudo mkswap /dev/xvdf Setting up swapspace version 1, size = 8 GiB (8589930496 bytes) no label, UUID=f2fe6c31-e8c5-4c28-b00f-99205cf2b04b
And activate it
ubuntu@testinstance:~$ sudo swapon /dev/xvdf
Making changes to / etc / fstab
NOTE: don't forget to replace / dev / xvdf with your value
NOTE 2: adding entries to / etc / fstab is necessary so that after rebooting the server you do not have to reconfigure SWAP
ubuntu@testinstance:~$ echo -ne "/dev/xvdf\tswap\tswap\tdefault\t0\t0\n" | sudo tee -a /etc/fstab
Check that SWAP is activated in the system.
ubuntu@testinstance:~$ free total used free shared buff/cache available Mem: 1014648 45824 705668 3152 263156 809168 Swap: 8388604 0 8388604
To implement this solution, we will need:
But what if we don't have the ability to connect another EBS Volume to the server, but there is free space on the current EBS Volume? In this case, we can make SWAP File
First, let's see how much free space we have on the disk through df
ubuntu@testinstance:~$ df --block-size=G Filesystem 1G-blocks Used Available Use% Mounted on udev 1G 0G 1G 0% /dev tmpfs 1G 1G 1G 4% /run /dev/xvda1 16G 1G 15G 7% / tmpfs 1G 0G 1G 0% /dev/shm tmpfs 1G 0G 1G 0% /run/lock tmpfs 1G 0G 1G 0% /sys/fs/cgroup tmpfs 1G 0G 1G 0% /run/user/1000
Create a 8Gb swapfile
ubuntu@testinstance:~$ sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 8192+0 records in 8192+0 records out 8589934592 bytes (8.6 GB, 8.0 GiB) copied, 130.955 s, 65.6 MB/s
After that, convert the file for use as SWAP through mkswap
ubuntu@testinstance:~$ sudo mkswap /swapfile Setting up swapspace version 1, size = 8 GiB (8589930496 bytes) no label, UUID=5f3d0d1c-1ece-4e0d-aa58-16b093891438
Changing access rights to swapfile
ubuntu@testinstance:~$ sudo chmod 0400 /swapfile
And activate it
ubuntu@testinstance:~$ sudo swapon /swapfile
Making changes to / etc / fstab
NOTE: adding an entry to / etc / fstab is necessary so that after rebooting the server you do not have to reconfigure SWAP
ubuntu@testinstance:~$ echo -ne "/swapfile\tswap\tswap\tdefault\t0\t0\n" | sudo tee -a /etc/fstab
Check that SWAP is activated in the system.
ubuntu@testinstance:~$ free total used free shared buff/cache available Mem: 1014648 45824 705668 3152 263156 809168 Swap: 8388604 0 8388604
Source: https://habr.com/ru/post/346778/