LVM(3)

NAME
Linux::LVM - Perl extension for accessing Logical Volume Manager(LVM)
             data structures on Linux.

SYNOPSIS
  use Linux::LVM;
  Linux::LVM->units('G');

ABSTRACT
  The live data used in the examples is included in the DESCRIPTION area
  for your convenience and reference.

DESCRIPTION
  units()  Get or set the units used to report sizes of LVs, PVs, etc.
           legal values: hbskmgtpeHBSKMGTPE
           see man lvm documentation of --units

  get_volume_group_list()       This routine will return an array that
                                contains the names of the volume groups.

  @vgs = get_volume_group_list(); print "@vgs \n";
  Would yield the following: vg00

  get_volume_group_information($)       This routine will return all of
                                        the volume group information about
                                        the specified volume group.

  %vg = get_volume_group_information("vg00");
  foreach(sort keys %vg) {
     print "$_ = $vg{$_}\n";
  }
  Would yield the following:
     access = read/write
     act_pv = 2
     alloc_pe = 3840
     alloc_pe_size = 15
     alloc_pe_size_unit = GB
     cur_lv = 3
     cur_pv = 2
     free_pe = 864
     free_pe_size = 3.38
     free_pe_size_unit = GB
     max_lv = 256
     max_lv_size = 255.99
     max_lv_size_unit = GB
     max_pv = 256
     open_lv = 0
     pe_size = 4
     pe_size_unit = MB
     status = available/resizable
     total_pe = 4704
     uuid = BBq8si-NyRR-9ZNW-3J5e-DoRO-RBHK-ckrszi
     vg_number = 0
     vg_size = 18.38
     vg_size_unit = GB
     vgname = vg00

  get_logical_volume_information($)     This routine will return all of the
                                        logical volume information associated
                                        with the specified volume group.

  %lv = get_logical_volume_information("vg00");
  foreach $lvname (sort keys %lv) {
      foreach(sort keys %{$lv{$lvname}}) {
          print "$_ = $lv{$lvname}->{$_}\n";
      }
      print "\n";
  }
  Would yield the following results:
  alloc_le = 1024
  allocation = next free
  cur_le = 1024
  device = 58:0
  lv_number = 1
  lv_size = 4
  lv_size_unit = GB
  name = /dev/vg00/lvol1
  open_lv = 0
  read_ahead = 1024
  status = available
  write_access = read/write

  alloc_le = 1280
  allocation = next free
  cur_le = 1280
  device = 58:1
  lv_number = 2
  lv_size = 5
  lv_size_unit = GB
  name = /dev/vg00/lvol2
  open_lv = 0
  read_ahead = 1024
  status = available
  write_access = read/write

  alloc_le = 1536
  allocation = next free
  cur_le = 1536
  device = 58:2
  lv_number = 3
  lv_size = 6
  lv_size_unit = GB
  name = /dev/vg00/lvol3
  open_lv = 0
  read_ahead = 1024
  status = available
  write_access = read/write

  get_physical_volume_information($)    This routine will return all of the information
                                        information about the physical volumes assigned
                                        to the specified volume group.

  %pv = get_physical_volume_information("vg00");
  foreach $pvname (sort keys %pv) {
      foreach(sort keys %{$pv{$pvname}}) {
          print "$_ = $pv{$pvname}->{$_}\n";
      }
      print "\n";
  }
  Would yield the following results:
  device = /dev/hda3
  free_pe = 0
  pv_number = 1
  status = available / allocatable
  total_pe = 2160

  device = /dev/hda4
  free_pe = 864
  pv_number = 2
  status = available / allocatable
  total_pe = 2544

  get_lv_info($)        This routine will return all of the information about the
                        specified logical volume.  The information will be returned
                        in a hash.

  get_lv_info
  %lv = get_lv_info("/dev/vg00/lvol1");
  foreach (sort keys %lv) {
      print "$_ = $lv{$_} \n";
  }
  Would yield the following results:
  access = read/write
  alloc_le = 1024
  allocation = next free
  block_device = 58:0
  current_le = 1024
  lv_name = /dev/vg00/lvol1
  lv_number = 1
  lv_open = 0
  read_ahead = 1024
  size = 4
  size_unit = GB
  status = available
  vg_name = vg00

  get_pv_info($)        This routine will return all of the information about the
                        specified physical volume.  The information will be returned
                        in a hash.

  %pv = get_pv_info("/dev/hda3");
  foreach (sort keys %pv) {
      print "$_ = $pv{$_} \n";
  }
  Would yield the following results:
  alloc_pe = 2160
  allocatable = yes (but full)
  free_pe = 0
  num_lvols = 2
  pe_size = 4096
  pe_size_unit = KByte
  pv_name = /dev/hda3
  pv_number = 1
  sectors = 17703630
  size = 8.44
  size_info = NOT usable 4.19 MB [LVM: 136 KB]
  size_unit = GB
  status = available
  total_pe = 2160
  uuid = 2c5ADu-oEdt-ovCe-rqp0-MWpF-I5u1-8XigH4
  vg_name = vg00

  Command Output Used In The Above Examples: /sbin/vgdisplay -v
  --- Volume group ---
  VG Name               vg00
  VG Access             read/write
  VG Status             available/resizable
  VG #                  0
  MAX LV                256
  Cur LV                3
  Open LV               0
  MAX LV Size           255.99 GB
  Max PV                256
  Cur PV                2
  Act PV                2
  VG Size               18.38 GB
  PE Size               4 MB
  Total PE              4704
  Alloc PE / Size       3840 / 15 GB
  Free  PE / Size       864 / 3.38 GB
  VG UUID               BBq8si-NyRR-9ZNW-3J5e-DoRO-RBHK-ckrszi

  --- Logical volume ---
  LV Name                /dev/vg00/lvol1
  VG Name                vg00
  LV Write Access        read/write
  LV Status              available
  LV #                   1
  # open                 0
  LV Size                4 GB
  Current LE             1024
  Allocated LE           1024
  Allocation             next free
  Read ahead sectors     1024
  Block device           58:0

  --- Logical volume ---
  LV Name                /dev/vg00/lvol2
  VG Name                vg00
  LV Write Access        read/write
  LV Status              available
  LV #                   2
  # open                 0
  LV Size                5 GB
  Current LE             1280
  Allocated LE           1280
  Allocation             next free
  Read ahead sectors     1024
  Block device           58:1

  --- Logical volume ---
  LV Name                /dev/vg00/lvol3
  VG Name                vg00
  LV Write Access        read/write
  LV Status              available
  LV #                   3
  # open                 0
  LV Size                6 GB
  Current LE             1536
  Allocated LE           1536
  Allocation             next free
  Read ahead sectors     1024
  Block device           58:2

  --- Physical volumes ---
  PV Name (#)           /dev/hda3 (1)
  PV Status             available / allocatable
  Total PE / Free PE    2160 / 0

  PV Name (#)           /dev/hda4 (2)
  PV Status             available / allocatable
  Total PE / Free PE    2544 / 864

SEE ALSO
vgdisplay(1M) lvdisplay(1M) pvdisplay(1M)

AUTHOR
Chad Kerner, <chadkerner@yahoo.com>

COPYRIGHT AND LICENSE
Copyright 2003 by Chad Kerner

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.