LVM Quick reference DocId: KBAN00000514 Updated: 20001002 DOCUMENT Index: Regular tasks I) How to create a Volume Group (VG). II) How to create a Logical Volume (LV) and mount the filesystem. III) How to add a disk to a Volume Group IV) How to increase the size of a logical volume without OnlineJFS (advanced JFS) V) How to remove a Logical Volume VI) How to reduce the size of a logical volume without OnlineJFS (advanced JFS) VII) How to remove a disk from a volume group VIII) How to remove a volume group IX) How to increase the primary swap X) How to create a secondary boot disk LVM Mirroring XI) How to mirror a logical volume XII) How to unmirror a logical volume XIII) How to create a mirrored boot disk XIV) How to mirror a logical volume on a specific physical volume Physical Volume Group XV) How to create a Physical Volume Group (PVG) XVI) How to use PVG to mirror logical volumes on specific physical volumes. I) How to create a Volume Group (VG). Note The following example is using the disk c1t6d0, the volume group vg01 and the logical volume lvhome 1) Prepare the disk pvcreate /dev/rdsk/c1t6d0 Note if the disk was previously used in another VG use the following command instead: pvcreate -f /dev/rdsk/c1t6d0 2) Create the Volume Group (VG): a) mknod /dev/vg01/group c 64 0x010000 Note: the group number (last parameter) is in hexadecimal and should be different for each volume group. For vg02, that number would be 0x020000. The default limit is 10 volume groups as set by the kernel parameter maxvgs. b) vgcreate /dev/vg01 /dev/dsk/c1d0s2 Note: When a volume group is created the maximum physical extents per volume (max_pe parameter) will be set to the max_pe of the largest physical volume (PV) or 1016, which ever is greater, if no max_pe is specified. The effect of not setting the max_pe parameter would be that any PV added to the volume group in the future regardless of there size will be limited to the volume groug creation value of max_pe. Therefore, consider increasing the max_pe to accommodate PV’s that may likely be larger than the largest PV used to create the Volume Group. The formula to use to determine the value is: physical_extent_size * max_pe = size_of_the_disk. The default value for physical_extent_size is 4M and the maximum value for max_pe is 65535 (example for 18 gig disk use a value 4608 for max_pe: 4M * 4608 = 18 gig). There is also a default value of a maximum of 16 disks per volume group. The following is an example of the creation of a volume group modifying these two parameters (max_pe = 4608, maximum number of disk = 24): vgcreate -e 4608 -p 24 /dev/vg01 /dev/dsk/c1d0s2 II) How to create a Logical Volume (LV) and mount the filesystem. 1) Create the Logical Volume (LV) lvcreate -L 120 -n lvhome /dev/vg01 Note: this will create a logical volume of 120 meg. 2) Create the filesystem newfs -F vxfs /dev/vg01/rlvhome Note: to create an hfs filesystem change vxfs to hfs in the previous command. 3) Mount the Logical Volume: a) mkdir /home b) mount /dev/vg01/lvhome /home III) How to add a disk to a Volume Group Note The following examples is using the disk c1t6d0 and the volume group vg01 1) Prepare the disk pvcreate /dev/rdsk/c1t6d0 Note if the disk was previously used in another VG use the following command instead: pvcreate -f /dev/rdsk/c1t6d0 Note: Use caution when using pvcreate -f as this will overwrite the existing volume group information on the disk. 2) Add the disk to the Volume Group vgextend /dev/vg01 /dev/dsk/c1t6d0 IV) How to increase the size of a logical volume without online JFS (advanced JFS). Note: the following example is using the volume group vg01 and the logical volume lvhome Note: Increasing the root filesystem (/) is not feasible 1) lvextend -L 240 /dev/vg01/lvhome The new total size will be 240M. 2) umount /home Note: If the filesystem is in use, it is impossible to unmount it. Therefore stop all the processes (applications) that use the filesystem then unmount it. Processes that use /usr and /var cannot be all stopped, the only solution is to reboot in single user mode. 3) extendfs -F vxfs /dev/vg01/rlvhome 4) mount /dev/vg01/lvhome /home V) How to remove a Logical Volume Note: the following example is using the volume group vg01 and the logical volume lvhome 1) Backup all user data 2) Umount the filesystem umount /home 3) remove the Logical volume lvremove /dev/vg01/lvhome VI) How to reduce the size of a logical volume without online JFS (advanced JFS) Note: the following example is using the volume group vg01 and the logical volume lvhome 1) Backup all user data 2) Umount the filesystem umount /home 3) Reduce the size lvreduce -L 60 /dev/vg01/lvhome Note: the new total size will be 60M. 4) Re-create the filesystem newfs -F vxfs /dev/vg01/rlvhome Note: to create an hfs filesystem change vxfs by hfs in the previous command. 5) Mount the Logical Volume: mount /dev/vg01/lvhome /home 6) Restore the user data VII) How to remove a disk from a volume group Note: the following example is using the disk c1t6d0 and the volume group vg01 1) Make sure that the disk is not in use: pvdisplay /dev/dsk/c1t6d0 Look at line starting with Allocated PE the number at the end of the line should be 0. If it is not the disk is still in use. 2) Remove the disk vgreduce /dev/vg01 /dev/dsk/c1t6d0 VIII) How to remove a volume group Note: the following example is using the volume group vg01 and the logical volume lvhome 1) Backup all user data 2) Find the name of all logical volume in this volume group vgdisplay -v /dev/vg01 3) unmount all logical volumes Note: repeat the following command for each logical command umount /dev/vg01/lvhome 4) Remove the volume group: vgexport /dev/vg01 Note: using vgexport to remove a volume group is easier and faster than using the vgreduce on each physical volume except the last one, followed by a vgremove. The other advantage is that the /dev/vg01 directory is also removed. IX) How to increase the primary swap Note: Because of the contiguous allocation policy, create a bigger logical volume and modify the Boot Data Reserved Area (BDRA) to make it primary. 1) lvcreate -C y -L 240 /dev/vg00 The name of this new logical volume will be displayed on the screen, note it, it will be needed later. (let say it is /dev/vg00/lvol8) Note: This new logical volume has to be in vg00 2) lvlnboot -v /dev/vg00 This will display the current root and swap volumes Note: lvol2 is the default primary swap. 3) lvlnboot -s /dev/vg00/lvol8 /dev/vg00 Note: use the logical volume name from step 1 4) lvlnboot -R /dev/vg00 Recover any missing links to all of the logical volumes specified in the BDRA and update the BDRA of each bootable physical volume in the volume group 5) reboot the system X) How to create a secondary boot disk Note: This will create an identical copy of the current vg00. The new volume group needs to as big as vg00. This will also be a static version of the primary boot disk which could be use in case of problem. Note: The following example is using the disk c1t6d0 and the volume group vg01 1) Initialize the disk and make it bootable pvcreate -B /dev/rdsk/c1t6d0 Note: the -B parameter tells pvcreate that this will be a bootable disk. mkboot /dev/dsk/c1t6d0 mkboot -a "hpux" /dev/rdsk/c1t6d0 2) Create the volume group mkdir /dev/vg01 mknod /dev/vg01/group c 64 0x010000 vgcreate /dev/vg01 /dev/dsk/c1t6d0 3) Find the size of each logical volume in vg00 vgdisplay -v /dev/vg00 | more look at LV Size (Mbytes) for each logical volume and note it. Note: this example will use these value: lvol1 84M lvol2 256M lvol3 140M lvol4 500M lvol5 64M lvol6 20M lvol7 500M lvol8 500M Note: The size of the new logical volumes needs to be exactly the same as the size of the logical volumes on the primary root disk. 4) Create the first 3 logical volumes contiguous (needed by the system) lvol1: lvcreate -L 84 -C y -r n /dev/vg01 lvol2: lvcreate -L 256 -C y -r n /dev/vg01 lvol3: lvcreate -L 140 -C y -r n /dev/vg01 5) Now create the other logical volumes lvol4: lvcreate -L 500 /dev/vg01 lvol5: lvcreate -L 64 /dev/vg01 lvol6: lvcreate -L 20 /dev/vg01 lvol7: lvcreate -L 500 /dev/vg01 lvol8: lvcreate -L 500 /dev/vg01 6) Copy each logical volume except the swap which is usually lvol2. dd if=/dev/vg00/rlvol1 of=/dev/vg01/rlvol1 bs=1024k dd if=/dev/vg00/rlvol3 of=/dev/vg01/rlvol3 bs=1024k dd if=/dev/vg00/rlvol4 of=/dev/vg01/rlvol4 bs=1024k dd if=/dev/vg00/rlvol5 of=/dev/vg01/rlvol5 bs=1024k dd if=/dev/vg00/rlvol6 of=/dev/vg01/rlvol6 bs=1024k dd if=/dev/vg00/rlvol7 of=/dev/vg01/rlvol7 bs=1024k dd if=/dev/vg00/rlvol8 of=/dev/vg01/rlvol8 bs=1024k 7) Verify the integrity of all the new volume except swap. Note: The following lines are base on a system with vxfs filesystems except for /stand (lvol1) which needs to be hfs. fsck -F hfs /dev/vg01/rlvol1 fsck -F vxfs /dev/vg01/rlvol3 fsck -F vxfs /dev/vg01/rlvol4 fsck -F vxfs /dev/vg01/rlvol5 fsck -F vxfs /dev/vg01/rlvol6 fsck -F vxfs /dev/vg01/rlvol7 fsck -F vxfs /dev/vg01/rlvol8 8) Now configure the Boot Data Reserved Area (BDRA) Note: The following commands assume that /stand is lvol1, swap is lvol2 and / is lvol3 lvlnboot -b /dev/vg01/lvol1 /dev/vg01 lvlnboot -r /dev/vg01/lvol3 /dev/vg01 lvlnboot -s /dev/vg01/lvol2 /dev/vg01 lvlnboot -d /dev/vg01/lvol2 /dev/vg01 9) Modify the fstab file on the new disk. a) If /tmp_mnt doesn't exist create it mkdir /tmp_mnt b) Mount the new root filesystem on /tmp_mnt mount /dev/vg01/lvol3 /tmp_mnt c) change to etc directory on the new disk. cd /tmp/etc d) Modify all occurence of vg00 in the fstab for vg01 sed "s/vg00/vg01/" fstab > fstab.out mv fstab fstab.BAK mv fstab.out fstab e) Unmount the new root filesystem cd / umount /tmp_mnt XI) How to mirror a logical volume Note: Data mirroring is provided by an additionnal purchasable software product called MirrorDisk/UX. Note: the following example is using the volume group vg01 and the logical volume lvhome To add a mirror to an existing logical volume: lvextend -m 1 /dev/vg01/lvhome This will add 1 mirror (2 copies of the filesystem). To add 2 mirrors (3 copies of the filesystem) use -m 2 instead. To create a new logical volume of 200M with 1 mirror: lvcreate -m 1 -L 200 /dev/vg01 XII) How to unmirror a logical volume Note: the following example is using the volume group vg01 and the logical volume lvhome lvreduce -m 0 /dev/vg01/lvhome XIII) How to create a mirrored boot disk Note the following example is using the disk c1t6d0 as the mirrored boot disk and c0t6d0 as the boot disk. 1) Initialize the disk and make it bootable pvcreate -B /dev/rdsk/c1t6d0 Note: the -B parameter tell pvcreate that this will be a bootable disk. 2) Add the physical volume to the volume group vgextend /dev/vg01 /dev/dsk/c1t6d0 3) Use mkboot to place the boot utilities in the boot area and add the AUTO file. mkboot /dev/dsk/c1t6d0 mkboot -a "hpux -lq" /dev/rdsk/c1t6d0 4) Use mkboot to update the AUTO file on the primary boot disk. mkboot -a "hpux -lq" /dev/rdsk/c0t6d0 5) Mirror the stand, root and swap logical volumes lvextend -m 1 /dev/vg00/lvol1 lvextend -m 1 /dev/vg00/lvol2 lvextend -m 1 /dev/vg00/lvol3 Note: LVM will resynchronize the new mirror copies. This step will takes several minutes Repeat the lvextend for all other logical volumes on the boot mirror. 6) Modify your alternate boot path to point to the mirror copy of the boot disk. setboot -a 8/8.6.0 # Use the Hardware path for your new boot disk. XIV) How to mirror a logical volume on a specific physical volume Note: the following example, is using the disk c1t6d0 for the primary copy, c2t6d0 for the mirror copy, the volume group vg01, the logical volume lvhome and the size will be 200M lvcreate -n lvhome /dev/vg01 lvextend -L 200 /dev/vg01/lvhome /dev/dsk/c1t6d0 lvextend -m 1 /dev/vg01/lvhome /dev/dsk/c2t6d0 XV) How to create a Physical Volume Group (PVG) create a file named /etc/lvmpvg with the following syntax: VG vg_name PVG pvg_name pv_path ... PVG pvg_name pv_path ... VG vg_name PVG pvg_name pv_path ... For example, to use two PVGs in vg01 with c1t6d0 and c2t6d0 in one PVG (PVG0), c3t6d0 and c4t6d0 in the other PVG (PVG1) the contents of the file (/etc/lvmpvg) should be: VG /dev/vg01 PVG PVG0 /dev/dsk/c1t6d0 /dev/dsk/c2t6d0 PVG PVG1 /dev/dsk/c3t6d0 /dev/dsk/c4t6d0 XVI) How to use PVG to mirror logical volumes on specific physical volumes. Note: in the following text, the volume group will be vg01 and the logical volume will be name lvhome After creating the /etc/lvmpvg file as describe above, each copy of your mirror could be force on different PVG. To achieve this if the logical volume is already created but not mirrored yet, use the following command: lvchange -s g /dev/vg01/lvhome lvextend -m 1 /dev/vg01/lvhome If the logical volume is not created yet: lvcreate -s g -m 1 -n lvhome -L 200 /dev/vg01