I'll refine this later, just need to capture what I had to do this morning...
OK, I needed room on `/` to accommodate mongoDB journaling files. I have debian 7 (Wheezy) running in a virtual machine with a separate /home partition.
To get the space I needed I planned to take 5Gb from /home and add it to /.
So, as root, show me my Physical Volume:
root@rev0:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name rev0
PV Size 89.76 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 22978
Free PE 0
Allocated PE 22978
PV UUID KBuU17-GOD4-8ckZ-EaJG-aurI-9ufl-oeUCNy
Show me my Logical Volumes at a high level using
lvs:
root@rev0:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
home rev0 -wi-ao-- 77.19g
root rev0 -wi-ao-- 4.31g
swap_1 rev0 -wi-ao-- 3.25g
Reduce the size of my /home LV using
lvreduce (-5G = reduce by 5Gb):
NOTE: the LV path (/dev/rev0/home) can be found with the lvdisplay command which is illustrated below.)
root@rev0:~# lvreduce -L-5G /dev/rev0/home
WARNING: Reducing active and open logical volume to 72.19 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce home? [y/n]: y
Reducing logical volume home to 72.19 GiB
Logical volume home successfully resized
Now add the newly available disk to root (/) using
lvextend (conversely +5G here means grow by 5Gb):
root@rev0:~# lvextend -L+5G /dev/rev0/root
Extending logical volume root to 14.31 GiB
Logical volume root successfully resized
GOTCHA! Now here's what got me the first go round, the LV has now increased in size but the file system there remains at it's previous size. So we need to grow the file system to fit the LV using
resize2fs:
root@rev0:~# resize2fs /dev/rev0/root
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/rev0/root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/rev0/root to 3751936 (4k) blocks.
The filesystem on /dev/rev0/root is now 3751936 blocks long.
And when this is all done we can see the 5Gb shift from
home to
root:
root@rev0:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
home rev0 -wi-ao-- 72.19g
root rev0 -wi-ao-- 14.31g
swap_1 rev0 -wi-ao-- 3.25g
Or the more verbose:
root@rev0:~# lvdisplay
--- Logical volume ---
LV Path /dev/rev0/root
LV Name root
VG Name rev0
LV UUID PA6izC-GU9D-eG9C-Ji9v-8avn-u7ng-dsLlPc
LV Write Access read/write
LV Creation host, time rev0, 2014-08-07 07:40:00 -0500
LV Status available
# open 1
LV Size 14.31 GiB
Current LE 3664
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Path /dev/rev0/swap_1
***Swap omitted here***
--- Logical volume ---
LV Path /dev/rev0/home
LV Name home
VG Name rev0
LV UUID 0omdas-WNXb-17Sc-cfpZ-gRV0-i2G5-tHPV7L
LV Write Access read/write
LV Creation host, time rev0, 2014-08-07 07:40:00 -0500
LV Status available
# open 1
LV Size 72.19 GiB
Current LE 18481
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:2
And now I have sufficient space on root for my journaling files. Again, this was done fast and in a pinch, but it got the job done and may help others in a similar circumstance...
This should work for all flavors of *nix set up with LVM2.
FIN