HP Logical Volume Manager (LVM)

Logical Volume Manager is a disk management subsystem that allows you to manage physical disks as logical volumes.

The following terms are used when working with LVM:

Volume A volume is a device used for a filesystem, swap or raw data. Without LVM a volume would be a disk partition or the whole disk
Physical Volume A physical volume is the disk itself. An entire disk must be initialised if it is to be used by LVM.
Volume Group A volume Group is a collection of volumes that are managaed by LVM. Each disk must only belong to one group however a volume group many contain many disks.
Logical Volume This is the space that is defined within a volume group. The volume group is divided into smaller logical volumes which in turn become the filesystems. A volume group may contain one or many logical volumes. Logical volumes can be grown or shrunk. A logical volume is a set of logical extents
Physical Extent A physical extent is a set of contiguous disk blocks on a physical volume. The default size of an extent is 4MB but this can be adjusted when initialising the disk. Normally a physical extent will have a one to one relationship with logical extents.
Logical Extent A logical volume is a set of logical extents. Logical extents and pyhsical extents are the same size in a volume. A logical extent is a direct mapping to a pyhsical extent.
/etc/lvmtab This file has in it the device file associated with each disk in a volume group. /sbin/lvmrc starts each volume group by reading the contents of this file at boot time.This file can be rebuilt using the command vgscan. The file is a binary file and can be read using Strings.
PV Links Physical Volume Links (PV Links) provide dual SCSI or FL links to the same disk. This basically means multipathing to a disk.

Boot Disk Components

LIF Directory* Contains a list of other disks in the volume group and whether or not they are bootable

Contains imports PV-related information such as:

  • PV ID number
  • VG ID number
  • PE Size
  • PV size
  • bad block directory
This is created when pcreate is run
BDRA* Specifies where the root filesystem is found
LIF* Contains ISL, HPUX, AUTO, LABEL that are LIF files. These are put there when the mkboot and lvlnboot commands are run.
VGRA Contain volume group description area (VGDA) and volume group status area (VGSA)
Physical Extents Physical extents for the file system, swap, etc
Bad Block Pool Provides alternate locations for bad blocks

* Boot disk Only

Disk Mirroring

Disk Mirroring is preformed by the sftware package MirrorDisk/UK, the product requires a license from HP. Logical volumes can be mirror one or more times, in other words the logical extent is mapped to one or more physical extents. There is a mirror policy called strict which can be set to one of the following:

n when set means that mirrored copies of a logical extent can share the same physical volume. This means that your original and mirrored data may be on the same physical disk
y when set means that mirrored copies of a logical extent cannot share the same physical volume. This means that your original and mirrored data will not share the physical disk
g Mirrored data will not be on the same physical volume group (PVG) as the original data. This policay is called a PVG-strict allocation policy.

Physical Volume Commands

pvchange Allows you to change a physical volume is some way. for an example you can allow or disallow adding extents to this physical volume.
pvcreate Is used to create a physical volume that will be part of a volume group.
pvdisplay shows information about a physical volumes you specify
pvmove you can move extents from one physical volume to other physical volumes.
mknod this command is used to create th major/minors numbers of a volume group

Volume Group Commands

vgcfgbackup used to save the configuration of a volume group.
vgcfgrestore used to restore the configuration of a volume group.
vgchange makes a volume active or in-active
vgcreate you can create a volume group and specify all of its parameters.
vgdisplay display information related to a volume group
vgexport remove a volume group from the system, but does not modify the logical volume information on the physical volumes. You can then import the volume group onto another system i.e in a cluster environment.
vgextend Physical volumes can be added to a volume group by specifying the physical volume to be added to the volume group.
vgimport used to import a volume group from another system
vgreduce reduce the volume group by removing th specified physical volume.
vgremove remove the volume group completely from the system
vgscan rebuild the /etc/lvmtab file
vgsync when a volume group become stale you can resync that volume which resync's all the physical extents in each mirrored logical volume in the volume group.

Logical Volume Commands

lvcreate create a new logical volume.
lvchange change the logical volume in some way
lvdisplay display information on a specified logical volume
lvextend increase the number of physical extents to a logical volume. You will need to use the extendfs after extending a logical volume.
extendfs expands the filesystem within the logical volume. You would use fsadm if you have OnlineJFS installed.
mkboot places boot utilities in boot area
lvlnboot use this to sepup a logical volume to be a root, boot, primary swap or dump volume. This can be undo with lvrmboot.
lvsplit or lvmerge are used to split or merge a logical volume that is mirrored
lvmmigrate prepares a root filesystem in a disk partition for migration to a logical volume. You would use this if you had a partition to convert to a logical volume
lvreduce decrease the number of physical extents allocated to a logical volume
lvremove remove a logical volume from the volume group
lvrmboot if you don't want a logical volume to be root, boot, primary swap or a dump device.
lvsync when a logical volume becomes stale you can resync the logical volume
newfs place a new flesystem on a logical volume

JFS and OnlineJFS Commands

fsck check/repair the integrity of a filesystem
fsadm peforms a number of tasks when using a OnlineJFS sch as dfragmentation, resizing, online backup, etc

Commonly used LVM procedures

Create a new volume group, logical volume and filesystem

pvcreate /dev/rdsk/c0t1d0
mkdir /dev/vg01
mknod /dev/vg01/group c 64 0x010000
vgcreate /dev/vg01 /dev/dsk/c0t1d0
lvcreate -L 2000 /dev/vg01
newfs -F vxfs -o largefiles /dev/vg01/rlvol1
mkdir /ora_data01
mount /dev/vg01/lvol1 /ora_data01

Create a stripped filesystem

lvcreate -i 3 -I 32 -L 24 -n lvol1 /dev/vg01

-i number of stripes
-I stripe size of 32KB
-L size of the volume

Mirror root and swap disk

pvcreate -B /dev/rdsk/c0t6d0
vgextend /dev/vg00 /dev/dsk/c0t6d0
mkboot /dev/rdsk/c0t6d0
mkboot -a "hpux -lq" /dev/rdsk/c0t6d0
mkboot -a "hpux -lq" /dev/rdsk/<primary disk>
lvextend -m 1 /dev/vg00/lvol1 /dev/dsk/c0t6d0
lvextend -m 1 /dev/vg00/lvol2 /dev/dsk/c0t6d0
lvextend -m 1 /dev/vg00/lvol3 /dev/dsk/c0t6d0
lvextend ........all other volumes on primary disk

setboot -a 8/8.6.0

replace a non-mirrored disk

lvreduce -m 0 -A n /dev/vg01/lvol1 /dev/dsk/cxtxdx
vgreduce vg01 /de/dsk/cxtxdx
pvchange -a N /dev/dsk/cxtxdx (if you have online replacement disks)

vgcfgrestore -n /dev/vgXX /dev/rdsk/cxtxdx
vgchange -a y /dev/vgXX
newfs -F <fstype> /dev/vgXX/rlvolx
mount <mountpoint>

Make sure you have /etc/lvmconf/vgXX.conf
vgcfgbackup is run automatically
Defective disk was not mirrored before it failed

replace a mirrored disk

vgcfgrestore -n /dev/vgXX /dev/rdsk/cxtxdx
vgchange -a y /dev/vgXX
vgsync /dev/vgXX

Defective disk was mirrored before it failed

replace mirrored boot disk

vgcfgrestore -n /dev/vg00 /dev/rdsk/cxtxdx
vgchange -a y /dev/vg00
vgsync /dev/vg00
mkboot /dev/rdsk/cxtxdx
mkboot -a "hpux -lq" /dev/rdsk/cxtxdx
shutdown -r -y 0

Confirm that you have /etc/lvmconf/vg00.conf
Defective disk was mirrored before it failed

export and import a volume group

System One:
vgchange -a n /dev/vg01
vgexport -v -m /tmp/mapfile -s /dev/vg01
rcp /tmp/mapfile <system 2>:/tmp/mapfile

System two:
mkdir /dev/vg01
mknod /dev/vg01/group c 64 0xyy0000
vgimport -v -m /tmp/mapfile -s /dev/vg01
vgchange -a y /dev/vg01
mkdir /ora_data01
mount /dev/vg01/ora_data01 /ora_data01

extend VxFS file ssytem using onlineJFS lvextend -L 800 /dev/vg01/lvol1
fsadm -F vxfs -b 800M /ora_data01
change a logical volume to support largefiles fsadm -F vxfs -o largefiles /dev/vg01/rlvol1
display the boot area lifls -Clv /dev/dsk/c0t6d0
display boot information lvlnboot -v /dev/vg00
display all disks in the system ioscan -funC disk
make a dump device lvchange -C y /dev/vg00/dump (makes it contiguous)
lvlnboot -d /dev/vg00/dump
display dump devices lvlnboot -v