Resize LVM without data loss
Solution 1
You have to shrink the ext4 filesystem before to reduce the logical volume size. You have to unmount the root partition so in order to shrink the filesystem you have to boot the server with a USB/DVD Linux iso and execute the rescue mode.
Example: https://www.thegeekdiary.com/centos-rhel-how-to-shrink-lvm-root-file-system/
Solution 2
From the link offered by NoNoNo above, the resize2fs
+ lvreduce
commands can be done in one liner, which I think is best. Especially because the lvreduce
will otherwise spit out a really bad warning.
BEFORE RUNNING THOSE INSTRUCTIONS, MAKE SURE TO BACKUP YOU IMPORTANT DATA.
The instructions can be resumed to:
-
boot on a live CD/DVD (Linux or GParted Live)
-
make sure your root partition is not mounted
umount /dev/[partition-name]
-
make sure LVM is up (probably not required, at least on GParted Live)
vgchange -ay
-
clean up
e2fsck -f /dev/[volumegroup]/[logicalvolume]
Repeat until no more errors occur to increase chances that things will work as expected while resizing the file system.
-
reduce partition
lvresize --resizefs -L [newlvsize] /dev/[volumegroup]/[logicalvolume]
Because of the
--resizefs
thelvresize
will take a long time (assuming you have a large partition, my 1.8Tb took about 5 hours to reduce to about 1.1Tb). You should be getting some feedback in your console.Note: The LVM environment offers three commands to resize:
lvresize
,lvreduce
, andlvextend
. The resize let you change the size (bigger or smaller), the reduce only allows smaller sizes (i.e. at most X Gb) and the extend only allows larger sizes (i.e. at least X Gb).
Related videos on Youtube
erdys
Updated on September 18, 2022Comments
-
erdys over 1 year
I have Cloud Linux Serwer with LVM with two disk (40 + 50). For today, I do not need a second drive and I would like to unplug it by keeping LVM for the future.
# vgdisplay --- Volume group --- VG Name system System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 20 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 89.75 GiB PE Size 4.00 MiB Total PE 22977 Alloc PE / Size 22977 / 89.75 GiB Free PE / Size 0 / 0 VG UUID QkkfoN-Ftor-suCL-VF4J-huV2-lhWp-9K5cMx # df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/system-root ext4 88G 21G 63G 25% / none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup udev devtmpfs 485M 4.0K 485M 1% /dev tmpfs tmpfs 100M 412K 99M 1% /run none tmpfs 5.0M 0 5.0M 0% /run/lock none tmpfs 496M 0 496M 0% /run/shm none tmpfs 100M 0 100M 0% /run/user /dev/vda1 ext2 236M 98M 127M 44% /boot # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 253:0 0 40G 0 disk ├─vda1 253:1 0 243M 0 part /boot ├─vda2 253:2 0 1K 0 part └─vda5 253:5 0 39.8G 0 part ├─system-root (dm-0) 252:0 0 88.8G 0 lvm / └─system-swap_1 (dm-1) 252:1 0 1G 0 lvm [SWAP] vdb 253:16 0 50G 0 disk └─vdb1 253:17 0 50G 0 part └─system-root (dm-0) 252:0 0 88.8G 0 lvm / # pvdisplay --maps --- Physical volume --- PV Name /dev/vda5 VG Name system PV Size 39.76 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 10178 Free PE 0 Allocated PE 10178 PV UUID aUQpTn-xi1T-ygwu-emIh-I2CT-w2tp-cRUNjl --- Physical Segments --- Physical extent 0 to 9921: Logical volume /dev/system/root Logical extents 0 to 9921 Physical extent 9922 to 10177: Logical volume /dev/system/swap_1 Logical extents 0 to 255 --- Physical volume --- PV Name /dev/vdb1 VG Name system PV Size 50.00 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 12799 Free PE 0 Allocated PE 12799 PV UUID 5IbHi7-bS0j-ZDEQ-pPfY-BGW4-PAk0-pEV8VH --- Physical Segments --- Physical extent 0 to 12798: Logical volume /dev/system/root Logical extents 9922 to 22720
And now if he wants to use command lvresize
# lvresize --size -50G /dev/mapper/system-root WARNING: Reducing active and open logical volume to 38.75 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.)
The system warns me about the loss of data. How can I reduce space by disconnecting the disk without losing data?
-
Sridhar Sarnobat about 2 yearsHow is this lossless? Like you say, lvreduce will tell you you will lose your data (which indeed happens).
-
Alexis Wilke about 2 yearsIt worked for me when I used the command. I get a warning in some cases and then it resizes as expected. One problem could be if the final disk size was smaller than what is already on the drive. One possibility is that none of my data was on the part that got removed from the disk...