Jorge Cardona


Twitter Google+ Github

I need to learn how to use LVM and I just want to write some summary here.

The first I see are the main components:

  • Physical Volumes: This are basically as real disk, or loopback disk, I imagine that any block device can be used as a physical volume.
  • Volume Group: This acts as a bunch of virtual space that can be extendend with different physical groups. We have here a unit of space called PE.
  • Logic Volume: This is like a virtual block device formed from a subset of a volume group (some amount of PEs). We can control in which Physical group of the volume group we want the logic volume.
  • Snapshots: Basically it take a copy of some base logic volumen and make a new one but changes to the base are not seen in the new one, we can use it as a good strategy for taking backups without stop our system. Also changes on the new system are stored in a COW-space that we can control its size when we create it.

Some useful commands:

  • pvcreate /dev/loop0 it basically creates a new physical volumen.
  • vgcreate test /dev/loop0 creates a new volume group with the /dev/loop0 physical group.
  • vgextend test /dev/loop1 adds a new physical group (/dev/loop1) to the volumen group test.
  • lvcreate -L2G -n base test creates a new logical volume (base) in the volume group test.
  • lvcreate -s -L1G -n snapshot0 /dev/test/base /dev/loop1 Create an snapshot in /dev/test/snapshot0 from the logic volume base in /dev/test/base and reserve 1G the space for the COW Space.

To mount loopbacks: losetup /dev/loop0 file.dd.

If you run out of loopbacks: modprobe loop max_loop=64, you can make it permanent in /etc/modules.

And to create empty files in a fast way: truncate --size 1G file

Read the LVM [manuals][] of Centos, in particular the [LV_Create section][]. This [blog][] was useful too.