LVM: Reduce root PV/VG

LVM: Reduce root PV/VG

# Tested on RHEL 6 & 7

# *** I recommend to backup all important data before carrying out an operation like the
# one described here.

# I carried out my RHEL installation without being careful about disk partitioning. Now I
# don't have any space to create an additional Volume Group on system disk (I don' have
# any other available disks) and, the worst, there's a lot of wasted GBs as my system disk
# is about 136GB and I'm only using some 18GB for the OS filesystems:

pvs
     PV         VG     Fmt  Attr PSize   PFree
     /dev/sda2  rootvg lvm2 a--  135.72g 117.72g

lvs
     LV      VG     Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
     lv_home rootvg -wi-ao---- 2.00g
     lv_opt  rootvg -wi-ao---- 2.00g
     lv_root rootvg -wi-ao---- 1.00g
     lv_swap rootvg -wi-ao---- 4.00g
     lv_tmp  rootvg -wi-ao---- 2.00g
     lv_usr  rootvg -wi-ao---- 4.00g
     lv_var  rootvg -wi-ao---- 3.00g


# I decided to reduce root Volume Group down to 32GB in order to free up some disk space


# This is the current partitioning

  /boot (ext4)                          rootvg
|--------------|-----------------------------------------------------------|
 <-- 256 MB --> <---- rest of the disk, some 136 GB ---------------------->



# And what I'd like to have

  /boot (ext4)       rootvg                      free space
|--------------|-----------------|-----------------------------------------|
 <-- 256 MB --> <---- 32 GB ----> <--------------- ~100 GB --------------->


# First of all, I check that all the existing volumes are in contiguous disk areas; at
# least, that there is enough free space at the end of the physical volume as to reduce
# it to the wished size. In my case everything seems good to do the required operations.
# Otherwise we should have done some "move" operations on the logical volumes.

lvm pvdisplay --maps
     --- Physical volume ---
     PV Name               /dev/sda2
     VG Name               rootvg
     PV Size               135.72 GiB / not usable 3.00 MiB
     Allocatable           yes
     PE Size               32.00 MiB
     Total PE              4343
     Free PE               3767
     Allocated PE          576
     PV UUID               tNLp0a-Hucs-Ic53-9PXH-6C1z-YRGX-t5eqy6

     --- Physical Segments ---
     Physical extent 0 to 31:
       Logical volume      /dev/rootvg/lv_root
       Logical extents     0 to 31
     Physical extent 32 to 159:
       Logical volume      /dev/rootvg/lv_usr
       Logical extents     0 to 127
     Physical extent 160 to 223:
       Logical volume      /dev/rootvg/lv_opt
       Logical extents     0 to 63
     Physical extent 224 to 287:
       Logical volume      /dev/rootvg/lv_home
       Logical extents     0 to 63
     Physical extent 288 to 383:
       Logical volume      /dev/rootvg/lv_var
       Logical extents     0 to 95
     Physical extent 384 to 447:
       Logical volume      /dev/rootvg/lv_tmp
       Logical extents     0 to 63
     Physical extent 448 to 575:
       Logical volume      /dev/rootvg/lv_swap
       Logical extents     0 to 127
     Physical extent 576 to 4342:                         <-----
       FREE


# Let's reduce the physical volume

pvresize --setphysicalvolumesize 32G /dev/sda2
     Physical volume "/dev/sda2" changed
     1 physical volume(s) resized / 0 physical volume(s) not resized

pvs
     PV         VG     Fmt  Attr PSize  PFree
     /dev/sda2  rootvg lvm2 a--  31.97g 13.97g

# and, then, the partition that contains the physical volume (regarding cylinders
# boundaries, I did my calculations before)

fdisk /dev/sda

   WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
            switch off the mode (command 'c') and change display units to
            sectors (command 'u').

   Command (m for help): p

   Disk /dev/sda: 146.0 GB, 145999527936 bytes
   255 heads, 63 sectors/track, 17750 cylinders
   Units = cylinders of 16065 * 512 = 8225280 bytes
   Sector size (logical/physical): 512 bytes / 512 bytes
   I/O size (minimum/optimal): 512 bytes / 512 bytes
   Disk identifier: 0x0007a6a0

      Device Boot      Start         End      Blocks   Id  System
   /dev/sda1   *           1          33      262144   83  Linux
   Partition 1 does not end on cylinder boundary.
   /dev/sda2              33       17751   142314496   8e  Linux LVM

   Command (m for help): d
   Partition number (1-4): 2

   Command (m for help): n
   Command action
      e   extended
      p   primary partition (1-4)
   p
   Partition number (1-4): 2
   First cylinder (33-17750, default 33):
   Using default value 33
   Last cylinder, +cylinders or +size{K,M,G} (33-17750, default 17750): 4211

   Command (m for help): p

   Disk /dev/sda: 146.0 GB, 145999527936 bytes
   255 heads, 63 sectors/track, 17750 cylinders
   Units = cylinders of 16065 * 512 = 8225280 bytes
   Sector size (logical/physical): 512 bytes / 512 bytes
   I/O size (minimum/optimal): 512 bytes / 512 bytes
   Disk identifier: 0x0007a6a0

      Device Boot      Start         End      Blocks   Id  System
   /dev/sda1   *           1          33      262144   83  Linux
   Partition 1 does not end on cylinder boundary.
   /dev/sda2              33        4211    33561689+  83  Linux

   Command (m for help): w
   The partition table has been altered!

   Calling ioctl() to re-read partition table.



# Reboot, to load the new partition table

shutdown -r now

# And, finally, resize physical volume to match partition size

pvresize /dev/sda2
     Physical volume "/dev/sda2" changed
     1 physical volume(s) resized / 0 physical volume(s) not resized

pvs
     PV         VG     Fmt  Attr PSize  PFree
     /dev/sda2  rootvg lvm2 a--  32.00g 14.00g
0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
LUKS dm-crypt/Device encryption GUIDE
Viewed 2177 times since Fri, Jul 13, 2018
SSL HowTo: Decode CSR
Viewed 4893 times since Mon, Feb 18, 2019
debian How to check Debian CVE status using python script
Viewed 3498 times since Sun, Sep 23, 2018
PROCESSOR AND MEMORY INFORMATION
Viewed 5475 times since Sat, Jun 2, 2018
Linux How to reset a root password on Fedora
Viewed 2453 times since Sun, Dec 6, 2020
20 Linux Command Tips and Tricks That Will Save You A Lot of Time linux
Viewed 4616 times since Thu, Apr 18, 2019
RHEL: Enabling standard ftp/telnet
Viewed 3329 times since Sun, May 27, 2018
SSH ProxyCommand example: Going through one host to reach another server
Viewed 13469 times since Tue, Aug 6, 2019
15 Linux Yum Command Examples – Install, Uninstall, Update Packages
Viewed 3249 times since Thu, Oct 25, 2018
Linux - How to monitor memory usage
Viewed 2985 times since Fri, Jun 8, 2018