Research and Development
LVM stands for Logical Volume Manager, a mechanism that provides an alternative method of managing storage systems than the traditional partition-based one. In LVM, instead of creating partitions, you create logical volumes, and then you can just as easily mount those volumes in your filesystem as you'd a disk partition.
One exception to the previous statement is that you can not use logical volumes for /boot. That is because GRUB (the most common bootloader for Linux) can't read from logical volumes. The well-known alternative to GRUB, systemd-boot on the other hand reads only vfat filesystems, so that's not going to work either.
There are three main components to LVM:
The main advantage of LVM is how easy it is to resize a logical volume or volume group. It abstracts away all the ugly parts (partitions, raw disks) and leaves us with a central storage pool to work with.
If you've ever experienced the horror of partition resizing, you'd wanna use LVM.

Install Ubuntu with encrypted LVM using your main hard drive (assumed /dev/sda).
Start with disk scan to review available disks:
sudo lvmdiskscan
If your secondary hard drive (/dev/sdb) is blank, create a full sized partition on it (/dev/sdb1).
Do another lvmdiskscan and you'll see the /dev/sdb1 partition listed as well (if it wasn't already there before).
Using pvscan you'll see all your physical volumes:
sudo pvscan
Create a new physical volume for your /dev/sdb1 partition:
sudo pvcreate /dev/sdb1
root@gerbil:/home/dwebb# pvcreate /dev/sdb1
WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
WARNING: If you wish to preserve the content of /dev/sdb1, type n when prompted to wipe the disk.
Now we need to add the new Physical Volume to the Volume Group.
List your Volume Groups using vgscan:
vgscan
Found volume group "vgubuntu" using metadata type lvm2
Add the new Physical Volume to the Volume Group using vgextend:
vgextend vgubuntu /dev/sdb1
Volume group "vgubuntu" successfully extended
Now let's check out the current status of the Volume Group:
vgdisplay vgubuntu
--- Volume group ---
VG Name vgubuntu
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
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 267.05 GiB
PE Size 4.00 MiB
Total PE 68366
Alloc PE / Size 30207 / <118.00 GiB
Free PE / Size 38159 / <149.06 GiB
VG UUID 1vlT1S-hr1t-NWXg-5EWR-m5dp-mSnu-wuvWvW
Scan the current Logical Volumes with lvscan:
lvscan
ACTIVE '/dev/vgubuntu/root' [117.04 GiB] inherit
ACTIVE '/dev/vgubuntu/swap_1' [976.00 MiB] inherit
Create a new Logical Volume using lvcreate:
lvcreate -L 149G vgubuntu
Logical volume "lvol0" created.
Scan the current Logical Volumes with lvscan:
lvscan
ACTIVE '/dev/vgubuntu/root' [117.04 GiB] inherit
ACTIVE '/dev/vgubuntu/swap_1' [976.00 MiB] inherit
ACTIVE '/dev/vgubuntu/lvol0' [149.00 GiB] inherit
Alternatively, extend an existing logical volume with the newly created unallocated space using lvextend:
lvextend -l +100%FREE /dev/vgubuntu/root
Using df -h you will see that the filesystem size hasn't changed yet.
To update the filesystem (with ext4 you can do this on the fly), use the resize2fs:
resize2fs /dev/vgubuntu/root
PV – Physical Volume VG – Volume Group LV – Logical Volume
lvmdiskscan – System readout of volumes and partitions
pvdisplay – Display detailed info on physical volumes
pvscan – Display disks with physical volumes
pvcreate /dev/sda1 – Create a physical volume from sda1
pvchange -x n /dev/sda1 – Disallow using a disk partition
pvresize /dev/sda1 – Resize sda1 PV to use all of the partition
pvresize --setphysicalvolumesize 140G /dev/sda1 – Resize sda1 to 140GB
pvmove /dev/sda1 – Move data out of sda1 to other PVs in VG
(Note: Free disk space equivalent to data moved is needed elsewhere)
pvremove /dev/sda1 – Delete Physical Volume
vgcreate vg1 /dev/sda1 /dev/sdb1 – Create a volume group from two drives
vgextend vg1 /dev/sdb1 – Add PV to the volume group
vgdisplay vg1 – Display details on a volume group
vgscan – List volume groups
vgreduce vg1 /dev/sda1 – Removes the drive from vg1
(Note: use pvmove /dev/sda1 before removing the drive from vg1)
vgchange – Activate/deactivate Volume Groups and change perameteres
vgremove vg1 – Remove volume group vg1
vgsplit and vgmerge - Split and merge volume groups
vgrename – Renames a Volume Group
lvcreate -L 10G vg1 – Create a 10GB logical volume on Volume Group vg1
lvchange and lvreduce - Typically not used
lvrename – Rename Logical Volume
lvremove – Removes a Logical Volume
lvscan – Shows Logical Volumes
lvdisplay – Shows details on Logical Volumes
lvextend -l +100%FREE /dev/vg1/lv1 – Extend Logical Volume lv1 that takes up ALL of the remaining free space on the Volume Group vg1
resize2fs /dev/vg1/lv1 – Resize the file system to the size of the logical volume lv1