Skip to content
Nathan Pemberton edited this page Sep 14, 2016 · 1 revision

The use of LVM is central to this design. LVM allows for flexible allocation and resizing of disk partitions without worrying too much about the physical layout. Critically, it also allows for easy online snapshotting of systems (it's hard to overstate the usefulness of this feature for OS development).

Redhat has a detailed guide on LVM

On ubuntu I use either the command line or the useful system-config-lvm GUI tool.

LVM Layout

  • Physical Volumes (one partition per drive, formatted as LVM2)
  • /dev/sda1
  • /dev/sdb1
  • Volume Groups
  • rootvg (/dev/sda1) - Contains OS images and data partition
  • vmvg (/dev/sdb1) - Contains VM images.
  • Note: These are sepparate VGs primarily for namespace cleanliness. Also, some tools (like Open Stack's cinder) prefer to have their own VG for managing images.
  • Logical Volumes
  • Will be described in more detail below, this is just the minimal set.
  • rootvg/boot (256MB) - Contains the multiboot grub configuration (see below)
  • rootvg/root (10GB) - Contains a clean OS install. The idea of this is to have a stable OS at all times.
  • rootvg/swap (8GB) - Swap space for all OSs
  • rootvg/data (100GB) - Contains persistent data that is shared between OSs.

Clone this wiki locally