Skip to content

Instantly share code, notes, and snippets.

@troyfontaine
Last active September 17, 2024 19:33
Show Gist options
  • Save troyfontaine/87091bd6a5c68f45dd62ced3d12bc377 to your computer and use it in GitHub Desktop.
Save troyfontaine/87091bd6a5c68f45dd62ced3d12bc377 to your computer and use it in GitHub Desktop.
Resize root partition (or how to remove the default /home partition) on CentOS 7 online

Resize root partition (or how to remove the default /home partition) on CentOS 7 online

This process requires that you are able to ssh OR log in locally using the root user account and that no services be running as users out of /home on the target machine.

The examples are from a default installation with no customization-you NEED to know what you're working with for volumes/partitions to not horribly break things.

By default, CentOS 7 uses XFS for the file system and Logical Volume Manager (LVM), creating 3 partitions: /,/home and swap.

NOTE: If you want to be sure that nothing is writing to /home you can either modify the host to boot into single-user mode OR try to use the systemctl isolate runlevel1.target command to switch (not tested! should work).

Step 1 - Copy /home Contents

To backup the contents of /home, do the following:

mkdir /temp
cp -a /home /temp/

Once that is finished at your back at the prompt, you can proceed to step 2.

Step 2 - Unmount the /home directory

umount -fl /home

Step 3 - Note the size of the home LVM volume

We run the lvs command to display the attributes of the LVM volumes

lvs

Sample output:

  LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home cl -wi-a----- 406.94g
  root cl -wi-ao----  50.00g
  swap cl -wi-ao----   7.81g

Step 4 - Remove the home LVM volume

lvremove /dev/cl/home

Step 5 - Resize the root LVM volume

Based on the output of lvs above, I can safely extend the root LVM by 406GiB.

lvextend -L+406G /dev/cl/root

Step 6 - Resize the root partition

xfs_growfs /dev/mapper/cl-root

Step 7 - Copy the /home contents back into the /home directory

cp -a /temp/home /

Step 8 - Remove the temporary location

rm -rf /temp

Step 9 - Remove the entry from /etc/fstab

Using your preferred text editor, ensure you open /etc/fstab and remove the line for /dev/mapper/cl-home.

Step 10 - Don't miss this!

Run the following command to sync systemd with the changes.

dracut --regenerate-all --force
@RJR-ReinaldoJr
Copy link

RJR-ReinaldoJr commented Jun 12, 2024

Thank you, Perfect! It's working for Rocky9.

@totaltrash
Copy link

Really helpful, thank you.

Anyone stuck with /home contains a filesystem in use, I had the same issue and couldn't ssh in as root. What I did was:

  1. copy home to temp
  2. unmount /home
  3. copy /temp/home to /home
  4. edit /etc/fstab - remove /home
  5. dracut --regenerate-all -f (wasn't sure if to do this now or later, so did both)
  6. reboot - now /home should be accessed from the / volume, leaving you free to...
  7. lvremove home volume
  8. dracut --regenerate-all -f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment