SI/lvm.pm
changeset 13 2e3ad71484ea
parent 12 a1aee1136609
child 15 4e3753b998a9
equal deleted inserted replaced
12:a1aee1136609 13:2e3ad71484ea
    14 sub _vgs(\%) {
    14 sub _vgs(\%) {
    15     return @volumegroups if @volumegroups;
    15     return @volumegroups if @volumegroups;
    16 
    16 
    17     my $devs = shift;
    17     my $devs = shift;
    18 
    18 
    19     # find the physical volumes we already recognised as „non-removable“
    19     # find the physical volumes we've already recognised as „non-removable“
    20     my @pvs = grep { $_ ~~ $devs->{disk} } map { s/\s*//; (split /:/)[0] } `pvdisplay -c`;
    20     my @pvs = grep { $_ ~~ $devs->{known} } map { s/\s*//; (split /:/)[0] } `pvdisplay -c`;
    21     return @volumegroups = map { (split /:/)[1] } `pvdisplay -c @pvs 2>/dev/null`;
    21     return @volumegroups = map { (split /:/)[1] } `pvdisplay -c @pvs 2>/dev/null`;
    22 }
    22 }
    23 
    23 
    24 sub volumes(\%) {
    24 sub volumes(\%) {
    25     my ($devs) = @_;
    25     my ($devs) = @_;
    30     my @vgs = _vgs(%$devs);
    30     my @vgs = _vgs(%$devs);
    31     my @lvs = map { readlink } 
    31     my @lvs = map { readlink } 
    32 	      map { s/^\s*//; (split /:/)[0] } 
    32 	      map { s/^\s*//; (split /:/)[0] } 
    33 	      grep { (split /:/)[1] ~~ @vgs } `lvdisplay -c`;
    33 	      grep { (split /:/)[1] ~~ @vgs } `lvdisplay -c`;
    34 
    34 
    35     foreach (keys %{$devs->{volume}}) {
    35     foreach (@lvs) {
    36 	warn "---> $_\n";
    36 	$devs->{volume}{$_} = { origin => "lvm" };
    37 	$devs->{volume}{$_} = {
       
    38 	    vol_type => ($_ ~~ @lvs) ? "lv" : "",
       
    39 	}
       
    40     }
    37     }
    41 ### $devs
       
    42     #@{$devs->{volume}}{@lvs} = map { { vol_type => "lv"  } } @lvs;
       
    43 
       
    44 }
    38 }
    45 
    39 
    46 sub vgcfgbackup($\%) {
    40 sub vgcfgbackup($\%) {
    47     my ($file, $devs) = @_;
    41     my ($file, $devs) = @_;
    48 
    42 
    50     my @vgs = _vgs(%$devs);
    44     my @vgs = _vgs(%$devs);
    51     foreach ( map { s/^\s*(.*)/$1/; $_ = (split /:/)[0] } `vgs --noheadings --separator : @vgs`)
    45     foreach ( map { s/^\s*(.*)/$1/; $_ = (split /:/)[0] } `vgs --noheadings --separator : @vgs`)
    52     {
    46     {
    53 	verbose("saving vg $_\n");
    47 	verbose("saving vg $_\n");
    54         my $file = sprintf $file, $_;
    48         my $file = sprintf $file, $_;
    55         run("vgcfgbackup -f $file $_ >/dev/null");
    49         run("vgcfgbackup -f '$file' '$_' >/dev/null");
    56     }
    50     }
    57 
    51 
    58     # for testing let's save it all
    52     # for testing let's save it all
    59     verbose("saving vg *\n");
    53     verbose("saving vg *\n");
    60     $file = sprintf $file, "*";
    54     $file = sprintf $file, "*";