Wednesday, May 7, 2014

Basics of LVM


### Install LVM2
apt-get install lvm2

### Create Linux LVM partitions (8e)
fdisk -l
fdisk sdb
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd

### Physical volume (pv)
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
pvdisplay
pvreduce /dev/sdd1

### Virtual group (vg)
vgcreate VG_FILESERVER /dev/sdb1 /dev/sdc1
vgdisplay
vgscan
vgextend VG_FILESERVER /dev/sdd1
vgreduce VG_FILESERVER /dev/sdd1

### Logical volume (lv)
lvcreate --name DATA --size 5G VG_FILESERVER
lvcreate --name DATA1 --size 5G VG_FILESERVER
lvdisplay
lvrename VG_FILESERVER DATA DATA0
lvscan

### Make file systems
mkfs.ext4 /dev/VG_FILESERVER/DATA0
mkfs.ext4 /dev/VG_FILESERVER/DATA1
df -h
mkdir /mnt/DATA0
mkdir /mnt/DATA1
mount /dev/VG_FILESERVER/DATA0 /mnt/DATA0
mount /dev/VG_FILESERVER/DATA1 /mnt/DATA1
umount /mnt/DATA0
umount /mnt/DATA1

### Extend LV
lvextend -L10G /dev/VG_FILESERVER/DATA0
e2fsck -f /dev/VG_FILESERVER/DATA0
resize2fs /dev/VG_FILESERVER/DATA0
mount /dev/VG_FILESERVER/DATA0

### Shrink LV
resize2fs /dev/VG_FILESERVER/DATA0 1G
lvreduce -L1G /dev/VG_FILESERVER/DATA0

### Add new HDD and remove old
pvcreate /dev/sdd1
vgextend VG_FILESERVER /dev/sdd1
pvmove /dev/sdb1 /dev/sdd1
vgreduce VG_FILESERVER /dev/sdb1
pvremove /dev/sdb1

### Remove HDD
pvmove /dev/sdb1
vgreduce VG_FILESERVER /dev/sdb1
pvremove /dev/sdb1