This article covers the basics of Linux LVM: initialise physical partitions, create a volume group, create logical volumes in a newly created volume group, build and mount filesystems, add to fstab for automount on boot.
The Plan
Below is the LVM schema we’re going to use for this article.
Installation
We’re working with Ubuntu Saucy Salamander today:
# cat /etc/issue Ubuntu 13.10 \n \l
Install LVM suite:
# apt-get update && apt-get install lvm2
We have the partitions prepared (types set to 0x8e):
# fdisk -l 2>/dev/null | grep dev.*LVM /dev/xvdg1 2048 20971519 10484736 8e Linux LVM /dev/xvdh1 2048 41943039 20970496 8e Linux LVM /dev/xvdi1 2048 62914559 31456256 8e Linux LVM
Configuration
Initialise Physical Volumes for LVM
Initialise the partitions for use by LVM:
# pvcreate /dev/xvdg1 /dev/xvdh1 /dev/xvdi1 Physical volume "/dev/xvdg1" successfully created Physical volume "/dev/xvdh1" successfully created Physical volume "/dev/xvdi1" successfully created
Check attributes of physical volumes:
# pvdisplay "/dev/xvdg1" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/xvdg1 VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID kcRHJq-zPTP-0Vld-J3Ut-AAYl-MY62-J0R0Dq "/dev/xvdh1" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/xvdh1 VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID LWHp3K-9IwJ-WfYC-Jr6X-TeTw-yyRm-MMaIS5 "/dev/xvdi1" is a new physical volume of "30.00 GiB" --- NEW Physical volume --- PV Name /dev/xvdi1 VG Name PV Size 30.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID wQ2CwT-EiRp-uHEq-epjd-v49t-3o0e-nkrmb4
Create Volume Group
We will use proftpd named volume group:
# vgcreate proftpd /dev/xvdg1 /dev/xvdh1 /dev/xvdi1 Volume group "proftpd" successfully created
Check attributes of proftpd volume group:
# vgdisplay --- Volume group --- VG Name proftpd System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 59.99 GiB PE Size 4.00 MiB Total PE 15357 Alloc PE / Size 0 / 0 Free PE / Size 15357 / 59.99 GiB VG UUID zFMSvn-fd92-OZKx-1rxp-7JBq-16pg-oD5UQX
# vgdisplay -s "proftpd" 59.99 GiB [0 used / 59.99 GiB free]
# vgscan Reading all physical volumes. This may take a while... Found volume group "proftpd" using metadata type lvm2
Create Logical Volumes
We will now create 3 logical volumes, data (40GB), anon (10GB) and backup (2GB), in the proftpd volume group :
# lvcreate --name ftpdata --size 40G proftpd Logical volume "ftpdata" create
# lvcreate --name anon --size 10G proftpd Logical volume "anon" created
# lvcreate --name backup --size 2G proftpd Logical volume "backup" created
Check attributes of logical volumes:
# lvdisplay --- Logical volume --- LV Path /dev/proftpd/ftpdata LV Name ftpdata VG Name proftpd LV UUID xJkNq4-nIrf-EevW-i73u-MV5s-PpFO-yDR1MU LV Write Access read/write LV Creation host, time ubuntu, 2014-04-26 17:29:56 +0000 LV Status available # open 0 LV Size 40.00 GiB Current LE 10240 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/proftpd/anon LV Name anon VG Name proftpd LV UUID xodYjm-1tVo-lChO-R1FU-otIC-QAr3-CK7esb LV Write Access read/write LV Creation host, time ubuntu, 2014-04-26 17:30:23 +0000 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1 --- Logical volume --- LV Path /dev/proftpd/backup LV Name backup VG Name proftpd LV UUID mjMAPZ-VSPZ-XYtu-Prkg-4bjx-0DKw-eOgkGX LV Write Access read/write LV Creation host, time ubuntu, 2014-04-26 17:30:45 +0000 LV Status available # open 0 LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:2
# lvdisplay -C LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert anon proftpd -wi-a---- 10.00g backup proftpd -wi-a---- 2.00g ftpdata proftpd -wi-a---- 40.00g
# lvscan ACTIVE '/dev/proftpd/ftpdata' [40.00 GiB] inherit ACTIVE '/dev/proftpd/anon' [10.00 GiB] inherit ACTIVE '/dev/proftpd/backup' [2.00 GiB] inherit
Create Filesystems and Mountpoints
Create ext4 filesystems on all logical volumes:
# mkfs.ext4 /dev/proftpd/ftpdata # mkfs.ext4 /dev/proftpd/anon # mkfs.ext4 /dev/proftpd/backup
Create mountpoints:
# mkdir -p /ftp/ftpdata /ftp/anon /ftp/backup
Mount logical volumes:
# mount /dev/proftpd/ftpdata /ftp/ftpdata # mount /dev/proftpd/anon /ftp/anon # mount /dev/proftpd/backup /ftp/backup
Check:
# df -h | grep ftp /dev/mapper/proftpd-ftpdata 40G 48M 38G 1% /ftp/ftpdata /dev/mapper/proftpd-anon 9.8G 23M 9.2G 1% /ftp/anon /dev/mapper/proftpd-backup 2.0G 3.0M 1.8G 1% /ftp/backup
Add Logical Volumes to /etc/fstab
We want logical volumes mounted automatically when the system boots:
# echo "/dev/proftpd/ftpdata /ftp/ftpdata ext4 defaults 0 0" >>/etc/fstab # echo "/dev/proftpd/anon /ftp/anon ext4 defaults 0 0" >>/etc/fstab # echo "/dev/proftpd/backup /ftp/backup ext4 defaults 0 0" >>/etc/fstab