equal
deleted
inserted
replaced
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, "*"; |