lvm
for test, create some image files
dd if=/dev/zero of=file1.img bs=1M count=0 seek=5120
dd if=/dev/zero of=file2.img bs=1M count=0 seek=5120
losetup /dev/loop1 file1.img
losetup /dev/loop2 file2.img
create and remove pv
pvcreate /dev/loop1
pvs
pvdisplay
pvdisplay -m
pvremove /dev/loop1
pvmove can move extents from one pv to another
pvmove /dev/loop1
create and vemove vg
vgcreate vgname /dev/loop1
vgs
vgdisplay
vgchange -an vgname
(if you remove the disk and insert it to another system,
you can find the volume group unless you remove the volume group)
vgremove vgname
you can add/remove pv to vg
vgextend vgname /dev/loop2
vgreduce vgname /dev/loop1
create logical volume
lvcreate -L 1G -n lvname vgname
lvs
lvdisplay
mkfs -t ext4 /dev/vgname/lvname
mount /dev/vgname/lvname /mountpoint
mirror or stripe
lvcreate -L 128M -m 1 -n lvname vgname
lvcreate -L 128M -i 2 -n lvname vgname
snapshot and merge. if you don't want to merge, you can simply remove the snapshot lv
lvcreate -L 64M --snapshot /dev/vgname/lvname -n lvsnap
lvconvert --merge vgname/lvsnap
extend logical volume and filesystem
lvextend -L +512MB /dev/vgname/lvname
e2fsck -f /dev/vgname/lvname
resize2fs /dev/vgname/lvname
shrink filesystem and logical volume
e2fsck -f /dev/vgname/lvname
resize2fs /dev/vgname/lvname 500M
lvchange -an /dev/vgname/lvname
lvreduce -L -512MB /dev/vgname/lvname
lvchange -ay /dev/vgname/lvname
resize2fs /dev/vgname/lvname
remove logical volume
lvchange -an /dev/vgname/lvname
lvremove /dev/vgname/lvname
umount
fuser -vm /mountpoint
umount /mountpoint
extend pv
parted /dev/sda
parted /dev/sda print
parted /dev/sda rm 2
parted /dev/sda resizepart 1 100%
pvdisplay /dev/sda1
vgdisplay vgname
pvresize /dev/sda1
extend partition
parted /dev/sdx print
parted /dev/sdx resizepart [num] 100%
e2fsck -f /dev/sdx[num]
resize2fs /dev/sdx[num]