If the default installation has swap on, you will see it from block device list:
[root@server /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 500G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 499G 0 part ├─centos-root 253:0 0 50G 0 lvm / ├─centos-swap 253:1 0 7.9G 0 lvm [SWAP] └─centos-home 253:2 0 441.1G 0 lvm /home sr0 11:0 1 1024M 0 rom [root@server /]# free -h total used free shared buff/cache available Mem: 7.6G 217M 7.2G 11M 206M 7.2G Swap: 7.9G 0B 7.9G
Many installations require swap to be off for performance reasons (although some advocate turning off swappiness of the application, instead of removing swap partition from operating system, which is a separate topic). This can be turned off by a simple command:
Then if you run free command after rebooting, you will see the Swap is set to 0G. Great. But lsblk and df commands still shows the space being used by swap. This disk space is not being used at all.
[root@c7v-vitvcast02 ~]# free -m total used free shared buff/cache available Mem: 7802 237 7380 11 185 7333 Swap: 0 0 0 [root@c7v-vitvcast02 ~]# lvdisplay --- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID 7zHtvT-zGYn-sNBc-JRlT-nTfU-O9hN-r07y3J LV Write Access read/write LV Creation host, time localhost, 2018-04-07 10:03:21 -0500 LV Status available # open 0 LV Size <7.88 GiB Current LE 2016 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/centos/home LV Name home VG Name centos LV UUID 4XMTa7-uR44-qH0u-Oag4-PDyK-Z1BC-3oUSiz LV Write Access read/write LV Creation host, time localhost, 2018-04-07 10:03:22 -0500 LV Status available # open 0 LV Size <441.12 GiB Current LE 112926 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID tkMCM4-cWxV-FaAC-hgJx-r1vS-DiY5-fyZvjt LV Write Access read/write LV Creation host, time localhost, 2018-04-07 10:03:22 -0500 LV Status available # open 1 LV Size 50.00 GiB Current LE 12800 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
We can then remove the line for swap from /etc/fstab, this will keep the OS from mounting it upon reboot. However, the logical volume for swap is there, as a partition that’s not exposed.
If you need to reclaim space from swap partition, delete the logical volume:
lvremove /dev/centos/swap Do you really want to remove active logical volume centos/swap? [y/n]: y Logical volume "swap" successfully removed
Now, using command lvdisplay or lvs, the swap space is not displayed anymore. So I rebooted the server in the hopes that the swap space is not being presented and everything is hunky-dory. But no… the server doesn’t boot up at all. It took a long time at the splash screen only to enter dracut, where /boot isn’t present.
On further reading, this is because the grub file is still referencing /dev/centos/swap somewhere. I need to somehow get to the grub file and fix that before it can reboot again. Specifically, I pressed “e” at the menu, which gave me an opportunity to edit grub file. From there I removed section for swap. Then I saved it with “Ctrl + X” (as suggested on the screen) so the OS booted into normal mode. Alternatively, I entered single user mode in order to get to the point I can edit the grub file.
Once booted, I have to make change to the actual grub file at /boot/grub2/grub.cfg so the change persists. In the file, locate the lines starting with linux16 and remove the section “rd.lvm.lv=centos/swap”. There are two appearances of this section on my machine. Then the server will boot just normally.
In summary, the clean way to turn off swap on CentOS involves the following steps:
- turn off swap
- Remove swap mount from /etc/fstab (and umount)
- remove the logical volume for swap
- remove reference to swap from grub
Out of those steps, 3 and 4 are needed to reclaim swap spaces. They must be done together. If you rebooted the server before step 4. The server will not be able to boot complaining about missing swap.