AIX i Perl: Storage report (część 1) – analiza na którym PV znajduje się określony logical volumen

Przygotowująć różnego rodzaju analizy, raporty itp przydaje się mieć możliwość stworzenia podsumowania na którym PV znajduje się określony LV (np. by sprawdzić czy na pewno mirrory disków są na różnych data storages). Poniżej znajduje się prosty skrypt (wymaga on oczywiście wprowadzenia poprawek i kilku zabezpieczeń, jak na przykład co zrobić gdy brak punktu mountowania ale to przykład poglądowy)  pozwalający analizować wynik polecenia „lslv -l nazwa_lv”. Kompletny skrypt będzie niedługo dostepny na stronie „Skrypty”.

#! /usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use Getopt::Long;

my $vg_name="rootvg";
my $lv_name;
my $mount_point;
my %storage;

my $data=`lslv -l smb_data_lv`;

my @lines=split /\n/, $data;

foreach my $line (@lines) {
if ($line =~ m/(\S+)\:(\/\S+)$/) {
$lv_name= $1;
$mount_point = $2;
}

if ( $line =~ m/(hdisk\d+)\s+(\S+)\s+(\d+\%)\s+([\d|\:]+)/) {

$storage{$vg_name}{$lv_name}{"hdisks"}{$1}{"PV"}=$1;
$storage{$vg_name}{$lv_name}{"hdisks"}{$1}{"COPIES"}=$2;
$storage{$vg_name}{$lv_name}{"hdisks"}{$1}{"IN_BAND"}=$3;
$storage{$vg_name}{$lv_name}{"hdisks"}{$1}{"DISTRIBUTION"}=$4;
}
}

print Dumper (%storage);

Wynik działania skryptu będzie miała postać:

$VAR1 = 'rootvg';
$VAR2 = {
          'smb_data_lv' => {
                             'hdisks' => {
                                           'hdisk1' => {
                                                         'DISTRIBUTION' => '000:000:000:000:040',
                                                         'COPIES' => '040:000:000',
                                                         'PV' => 'hdisk1',
                                                         'IN_BAND' => '0%'
                                                       },
                                           'hdisk4' => {
                                                         'DISTRIBUTION' => '000:000:000:000:040',
                                                         'COPIES' => '040:000:000',
                                                         'PV' => 'hdisk4',
                                                         'IN_BAND' => '0%'
                                                       }
                                         }
                           }
        };

Dodaj komentarz