Logical Volume Manager (2.204.3)

Candidates should be able to configure kernel options to support various hardware devices including UDMA66 drives and IDE CD burners. This objective includes using LVM (Logical Volume Manager) to manage hard disk drives and partitions as well as software tools to interact with hard disk settings.

Revision: $Revision: 499 $ ($Date: 2011-04-20 11:09:38 +0200 (Wed, 20 Apr 2011) $)

Key files, terms and utilities include:

/sbin/pv*
/sbin/lv*
/sbin/vg*
mount
/dev/mapper/

Resources: Impson00; Hubert00; Colligan00; the man pages for the various commands.

Configuring Filesystems

The objective names the tune2fs command as one of the key utilities for this objective. The filesystem optimizing tools are handled in tune2fs.

Configuring Logical Volume Management

lvm is a logical volume manager for Linux. It enables you to concatenate several physical volumes (hard disks etc.) to a so-called volume groups, forming a storage pool, much like a virtual disk. IDE, SCSI disks, as well as, multiple devices (MD) are supported.

In the ASCII art below, the concepts/terminology used by lvm are sketched. On the right side the names of the commands are shown that can be used to manipulate/create the layer sketched on the left.

The physical media / partitions

a hard disk, or a partition, e.g. /dev/hda, /dev/hda6 or /dev/sda. You should set the partition types of the disk or partition to 0x8e, which is Linux LVM. Partitioning is done using fdisk. Please note that your version of fdisk may not yet know this type, so it will be listed as Unknown. You can turn any consecutive number of blocks on a block device into a Physical Volume:

Physical Volume (PV)

a physical medium with some administrative data added to it. The command pvcreate can be used to add the administration onto the physical medium. The command vgcreate is used to create a volume group, which consists of one or more PV's. A PV that has been grouped in a volume group contains Physical Extents:

Physical Extents (PE)

Physical Extents are blocks of diskspace, often several megabytes in size. Using the command lvcreate you can assign PEs to a Logical Volume:

Logical Volume (LV)

A Logical Volume. On a logical volume we can use the command mkfs to get a Filesystem:

Filesystem

ext2, ReiserFS, NWFS, XFS, JFX, NTFS etc. To the linux kernel, there is no difference between a regular partition and a Logical Volume. A simple mount suffices to be able to use your logical volume.

Some examples of typical usage of the LVM commandset follow. Initially, you need to set the partition type for the partitions to use to create logical volumes to 0x8e. Let's assume we have partitions /dev/hda4 and /dev/hda5, and they are set to the correct partitioning type. To create a physical volume on both partitions (i.e. to set up the volume group descriptor) you type (being the superuser):

# pvcreate /dev/hda4 /dev/hda5

Now we have created two physical volumes. Next, we will create a volume group. A volume group needs to have a name (we choose volume01). To create our volume group, using our previously defined physical volumes, type:

# vgcreate volume01 /dev/hda5 /dev/hda4 

The previous command line is the most basic form (refer to the manual pages for a list of configurable parameters). This will create an array of physical extents, by default they are 4 Mb in size. Using these extents we can create one or more logical volumes, e.g:

# lvcreate -L 100M volume01

.. this creates a logical volume with a default name choosen by lvcreate and starts with the string lvol followed by a digit -- let's assume lvol0. The logical volume will be created using the volumegroup volume01. The name of the devicefile for this volume will be /dev/volume01/lvol0. Next, we can make a filesystem on the volumegroup, as usual, using mkfs, e.g. an xfs filesystem:

# mkfs -txfs /dev/volgroup/volname

The resulting filesystem can be mounted as usual:

# mount /dev/volgroup/volname /mnt

One of the nicest features of LVM is the possibility of taking snapshots of volumes. A snapshot is a virtual copy of the volume to enable easy backups. Another interesting feature is striping, which can result in better performance, but also in a higher risk of losing your data.

Configuring IDE CD burners

Most newer CD burners will work with Linux. If the SCSI-version of a particular writer works, the IDE/ATAPI-version will most likely work too and vice versa. Note, however, that IDE/ATAPI writers and writers that use the parallel port require compatibility drivers, which make them appear as if they were real SCSI devices ("everything is SCSI").

In newer Linux kernels (later than 2.6), SCSI-emulation is not needed anymore.

To use IDE burners, you need to activate both IDE and SCSI support in your kernel, and a number of other modules, as listed below:

Description                 Modulename
--------------------------  ----------
Enhanced IDE/MFM/RLL...                   Y
IDE/ATAPI CDROM             ide-cd        M
SCSI hostadaptor emulation  ide-scsi      M
Loopback device             loop          M
SCSI support                scsi_mod     Y/M
SCSI CD-ROM support         sr_mod       Y/M
SCSI generic support        sg           Y/M
ISO 9660 CDROM filesystem   iso9660       Y
Microsoft Joliet cdrom...   joliet       M/Y 
--------------------------  ----------

To use your IDE burner, the modules need to be loaded. This can be done automatically via the kerneld/kmod daemons, or you need to insert the modules by hand, using insmod or modprobe. You might add the following lines to /etc/conf.modules:

 
alias   scd0 sr_mod                  # load sr_mod upon access of scd0
alias   scsi_hostadaptor ide-scsi    # SCSI host adaptor emulation
options ide-cd ignore=hdb            # if /dev/hdb is your CD-writer

These aliases provide alternate names for the same module and are not essential, but convenient. The options provides a way to make options for module loading permanent, i.e. after you have sucessfully used them with modprobe/insmod.

Copyright Snow B.V. The Netherlands