#!/usr/bin/env bash # Copyright (C) 2010-2014 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions # of the GNU General Public License v.2. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA SKIP_WITH_LVMLOCKD=1 SKIP_WITH_LVMPOLLD=1 . lib/inittest aux prepare_devs 2 vgcreate --metadatasize 128k $vg1 "$dev1" lvcreate -l100%FREE -n $lv1 $vg1 # Test plain vgexport vgimport tools # Argument is needed invalid vgexport invalid vgimport # Cannot combine -a and VG name invalid vgexport -a $vg invalid vgimport -a $vg1 # Cannot export unknonw VG fail vgexport ${vg1}-non fail vgimport ${vg1}-non # Cannot export VG with active volumes fail vgexport $vg1 vgchange -an $vg1 vgexport $vg1 # Already exported fail vgexport $vg1 vgimport $vg1 # Already imported fail vgimport $vg1 vgchange -ay $vg1 # Clone the LUN dd if="$dev1" of="$dev2" bs=256K count=1 aux notify_lvmetad "$dev2" # Verify pvs works on each device to give us vgname aux hide_dev "$dev2" check pv_field "$dev1" vg_name $vg1 aux unhide_dev "$dev2" aux hide_dev "$dev1" check pv_field "$dev2" vg_name $vg1 aux unhide_dev "$dev1" # Import the cloned PV to a new VG vgimportclone --basevgname $vg2 "$dev2" # We need to re-scan *both* $dev1 and $dev2 since a PV, as far as lvmetad is # concerned, can only live on a single device. With the last pvscan, we told it # that PV from $dev1 now lives on $dev2, but in fact this is not true anymore, # since we wrote a different PV over $dev2. rm -f "$TESTDIR/etc/.cache" aux notify_lvmetad "$dev2" aux notify_lvmetad "$dev1" # Verify we can activate / deactivate the LV from both VGs lvchange -ay $vg1/$lv1 $vg2/$lv1 vgchange -an $vg1 $vg2 vgremove -ff $vg1 $vg2 # Verify that if we provide the -n|--basevgname, # the number suffix is not added unnecessarily. vgcreate --metadatasize 128k A${vg1}B "$dev1" # vg1B is not the same as Avg1B - we don't need number suffix dd if="$dev1" of="$dev2" bs=256K count=1 aux notify_lvmetad "$dev2" vgimportclone -n ${vg1}B "$dev2" check pv_field "$dev2" vg_name ${vg1}B # Avg1 is not the same as Avg1B - we don't need number suffix dd if="$dev1" of="$dev2" bs=256K count=1 aux notify_lvmetad "$dev2" vgimportclone -n A${vg1} "$dev2" check pv_field "$dev2" vg_name A${vg1} # Avg1B is the same as Avg1B - we need to add the number suffix dd if="$dev1" of="$dev2" bs=256K count=1 aux notify_lvmetad "$dev2" vgimportclone -n A${vg1}B "$dev2" aux vgs check pv_field "$dev2" vg_name A${vg1}B1 vgremove -ff A${vg1}B A${vg1}B1