AIX: LVM Overview

LVM Theory



Physical Volume = PV is IBM speak for a disk (it could be worse some IBMers still refer to DASD! (Dyanical Access Storage Device which is a main frame term). They are:



  • Named by AIX as hdisk0, hdisk1, hdisk2, ...
  • Regardless of the underlying technology (SCSI, SSA sort of IBM's early SAN, SAN, RAID5 using the adapter)
  • Disk and AIX automatic bad block reallocation

Volume Group = VG is IBM speak for a group of disks
Volume Group operations:

  • Disk space always allocated within single VG
  • All disks available in AIX or none - work as a group
  • Can be exported to be attached to other AIX - allows High Availability HACMP
  • First VG called rootvg
Root Volume Group (rootvg) is created automatically while installing AIX is placed within this VG

  • AIX files
  • Initial paging
  • Usually only the first disk
  • Or two, to allow mirroring of rootvg
  • Often internal disks
  • Recommend: Keep to a small number of disks
Other Volume Groups

  • Other VG created by the System Admin.
  • Name typically related to their use
  • Optionally ending in "vg"
Volume Groups

  • One or more disks
  • Can later add a disk to a VG
  • Can remove disk from VG - if empty
  • Disks within VG cut into chunks called
  • Physical Partitions (PP)
  • Minimum allocation unit
  • Typically, 8, 16 or 32 MB (older 2GB disks = 4 MB)
  • Nothing smaller can be allocated
  • Each VG fixed PP size.
  • Volume group has total, free and used PPs                                                                               *Disks do not need to be the same size or even the same technology
Logical Volumes

  • It is a large piece of disk
  • Can be used for lots of tasks like
  • raw device or file system or paging space
  • Created within single VG
  • LV has many attributes like       
                can be one disk or more disks or all disks of VG 
                mirrored or striped
                particular part of disk
                Sizes is in Physical Partitions - example: id PP = 16 MB and LV size of 64 PPs = GBPPs allocated by policies

  • min or max spread across disks
  • min=fill disk then move on, max=evenly spread
  • disk placement centre, middle, edge
  • mirrors via extra copies
  • stripes via stripe width
  • MWC (Mirrored write consistancy) and others

Logical Volumes Admin

  • Can be grown in size
  • Can be removed
  • Can be moved to different disks within VG
  • Can later have a filesystem created in it
  • Attributes can be changed like: mirror added or removed or policy changed





How AIX/LVM sees the underlying disks








LVM in practice

The disks can be apprached from three different directions and from there you can see the relationship to the others.
As a reminder

  • pv = physical volumes - real disk or LUN
  • lv = logical volume
  • vg volume group




To the this use the ls commands:


  • lspv
  • lslv
  • lsvg

In more detail


Lists volume group names: lsvg

  • List VG details: lsvg
  • List LVs within VG: lsvg -l
  • List PV within VG: lsvg -p
Lists physical group names: lspv

  • List PV details: lspv hdiskN
  • List LVs within PV: lspv -l hdiskN
  • List PP within PV: lspv -p hdiskN
  • Lists LV names: lsvg -l
  • List LV details: lslv
  • List LVs within PV: lslv -l
  • List PP within PV: lslv -p
  • Show mirrored LV: lslv -m

When you create a Logical Volume with smitty you will see a panel like this:

smitty create logical partition

Add a Logical Volume
Logical volume NAME [scratch]
VOLUME GROUP name testvg
Number of LOGICAL PARTITIONS [64]
# PHYSICAL VOLUME names [hdisk1 hdisk2 hdisk3] +
Logical volume TYPE [jfs]
POSITION on physical volume middle +
RANGE of physical volumes minimum +
MAXIMUM NUMBER of PHYSICAL VOLUMES [] # to use for allocation
Number of COPIES of each logical partition 2 +
partition Mirror Write Consistency? yes +
Allocate each logical partition copy on a SEPARATE physical volume? yes +
RELOCATE the logical volume during reorganization? yes +
Logical volume LABEL []
MAXIMUM NUMBER of LOGICAL PARTITIONS [512]
# Enable BAD BLOCK relocation? yes +
SCHEDULING POLICY for reading/writing logical partition copies parallel +
Enable WRITE VERIFY? no +



Some of the terms used are described below:



Mirrors





On the disk placement


Mirror Scheduling Policy


Mirror Write Consistency



If you are terribly and extremely unlucky ... a crash could happen leaving the two mirrored copies of a block different.
Reading the block could give you the old or new block.
With a RDBMS, it does not mind disk is newer but must be consist when read.
MWC reminds LVM to "resilver" these recently written blocks in recovery - to make them the same.

Physical Partition (PP) Allocation



Logical Volumes striping

  • From AIX 4.3.3 (not backward compatible) LVM support striping
  • Often called fine striping (i.e. not PP level striping)
  • Recommend 32K, 64K or 128K stripe width = 4 to 16 times I/O size most databases do 4K or 8K I/O
  • Excellent for balancing serial and random I/O across disks
  • Excellent read ahead serial I/O boost
Using LVM commands (with smit)

  • Find unused disks: lspv
  • Add them to a VG or create a VG: smitty lvm + VG + Add VG
  • Check unused space in VG: lsvg
  • Create a LV: smitty lvm + LV + Add LV
  • Create a Filesystem (JFS)smitty jfs + Add jfs + standard + which VG (see below)
If the command changes the VG, PV or LV then the VG is locked i.e. one command at a time.
This is needed to allow recovery of the change - if the system fails during the update.

Creating Stripes Tips:

  • Stripes LV must contain a whole number of items, that is the number of PPs must divide evenly into the number of disks
  • Or put another way: each disk have the same number of PPs
  • Hint: use multiples of No. of disks to make this easier
LVM Create Mirrors

There are three ways to create a mirror:

One Step = create LV with mirror
  • These can be slow as you can have to wait until mirror complete before creating next lv
Create LV and later add mirror synchronise=yes
  • again slow as you can have to wait for silvering                                                                          #Create LV and later add mirror synchronise=no and then sychronise all mirrors together
  • Use this when creating lots of lv because all mirrors can be created at the same time
So (with smit)

  • create lv's
  • add mirrors sync=no
  • syncvg -l                                                                                                                                          to remove "stale" partitions = resilver
Warning:
  • resilvering hurts performance
  • often forgotten when recommending mirror breaking for backup purposes

LVM Higher Level Management Commands

Disown disks ready to connect them to another system

  • varyoffvg
  • exportvg
  • or smitty lvm
Activate newly attached disks

  • cfgmgr – finds disks
  • importvg hdiskN – any one of the disks
  • varyonvg – mounts file systems
Moving LVs

migratelv (not striped)

  • Use smit lvm
  • Can migrate LV on a disk to another disk
  • Can empty whole disk to remove it later or replac a fault disk
  • Disks can be added and removed from a VG
  • extendvg and reducevg
  • Use smit lvm recommended
LVM rootvg good practice

Small rootvg - 1 or 2 disks (for mksysb backup)
Mirror rootvg for AIX disk protection

  • Add disk hdisk1
  • chvg -Qn rootvg
  • For hd1 to hd8 and hd9var copy the LV
  • mklvcopy hd{1,2,3,4,5,6,7,8,9var} 2 hdisk1
  • syncvg -v rootvg
  • bosboot -a
  • bootlist -m normal hdisk0 hdisk1
  • Or
  • mirrorvg -s rootvg

this second option is recommended

TIP: This command will show you formatted list of active Volume groups

for i in $(lsvg -o);do lsvg $i;done \ awk ' BEGIN { printf("%-10s\t%10s\t%10s\t%10s\t%10s\n","VG","Total(MB)","Free","USED","Disks") };/VOLUME GROUP:/ \ { printf("%-10s\t", $3) };/TOTAL PP/ { B=index($0,"(") + 1;E=index($0," megaby");D=E-B;printf("%10s\t", substr($0,B,D) );};/FREE PP/ \ { B=index($0,"(") + 1;E=index($0," megaby");D=E-B;printf("%10s\t", substr($0,B,D) );};/USED PP/ \ { B=index($0,"(") + 1;E=index($0," megaby");D=E-B;printf("%10s\t", substr($0,B,D) );};/ACTIVE PV/ { printf("%10s\t\n", $3) } '

Put other disks into other volume groups

  • use min PP size ( 8MB or 16 MB)
  • use 16 to 32 disks per volume group
  • use different vg for data that might be moved elsewhere
  • Avoid hot disks
  • Spread data across disk with LVs or RAID5
  • Mirrors add protection and performance
  • Use striping whenever possible
  • Think spindles not disk size  reorgvg
  • this will move physical partitions (PP) around in an attempt to get PPs in the right place migratepv
  • this can be used to spread PPs across move disks
  • also to remove all PPs from a suspect disk before replacement (due to errors being reported)

AVOIDING Disk Crashes

  • Rule One: don't let this stop your system
  • RAID5 or mirror everything
  • Rule Two: monitor error logs
  • Make sure you know when a disk failed
  • Rule Three: call hardware support
  • That is what they are for
  • Rule Four: Don't meddle
  • Only try, if you know what you are doing
  • Rule Five: Read and practise
  • Get the Redbooks and try it safely

Comments

Popular posts from this blog

How to Install and Configure Kubernetes Cluster and Docker on CentOS8/RHEL8

How to install Ansible Tower on Red Hat / CentOS

How to install Ansible on RHEL8 / CentOS8