mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
ed48cb26a3
Add tool 'vdoimport' to support easy conversion of an existing VDO manager managed VDO volumes into lvm2 managed VDO LV. When physical converted volume is already a logical volume, conversion happens with the VG itself, just with validation for extent_size, so the virtually sized logical VDO volume size can be expressed in extents. Example of basic simple usage: vdoimport --name vg/vdolv /dev/mapper/vdophysicalvolume
111 lines
2.5 KiB
Bash
111 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (C) 2021 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
|
|
|
|
# Test conversion of VDO volumes made by vdo manager into VDO LV.
|
|
|
|
|
|
SKIP_WITH_LVMPOLLD=1
|
|
|
|
. lib/inittest
|
|
|
|
# Use local for this test vdo configuratoin
|
|
VDOCONF="-f vdotestconf.yml"
|
|
#VDOCONF=""
|
|
export VDOCONF
|
|
VDONAME="${PREFIX}-TESTVDO"
|
|
|
|
# VDO automatically starts dmeventd
|
|
aux prepare_dmeventd
|
|
|
|
#
|
|
# Main
|
|
#
|
|
which vdo || skip
|
|
which mkfs.ext4 || skip
|
|
export MKE2FS_CONFIG="$TESTDIR/lib/mke2fs.conf"
|
|
|
|
aux have_vdo 6 2 0 || skip
|
|
|
|
aux prepare_devs 2 10000
|
|
|
|
aux extend_filter_LVMTEST
|
|
|
|
|
|
#
|
|
# Check conversion of VDO volume made on some LV
|
|
#
|
|
# In this case we do not need to move any VDO headers.
|
|
#
|
|
vgcreate $vg "$dev1"
|
|
|
|
lvcreate -L5G -n $lv1 $vg
|
|
|
|
vdo create $VDOCONF --name "$VDONAME" --device="$DM_DEV_DIR/$vg/$lv1" --vdoLogicalSize=10G
|
|
|
|
mkfs -E nodiscard "$DM_DEV_DIR/mapper/$VDONAME"
|
|
|
|
# Different VG name fails
|
|
not vdoimport -y -v --name $vg1/$lv1 "$DM_DEV_DIR/$vg/$lv1"
|
|
|
|
# Try just dry run and observe logging
|
|
vdoimport --dry-run -y -v --name $lv1 "$DM_DEV_DIR/$vg/$lv1"
|
|
|
|
vdoimport -y --name $lv1 "$DM_DEV_DIR/$vg/$lv1"
|
|
|
|
# ATM needed - since we do not call 'vdo convert' in this case
|
|
vdo remove $VDOCONF --force --name "$VDONAME" || true
|
|
|
|
vgremove -f $vg
|
|
|
|
aux wipefs_a "$dev1"
|
|
|
|
# prepare 'unused' $vg2
|
|
vgcreate $vg2 "$dev2"
|
|
|
|
#
|
|
# Check conversion of VDO volume on non-LV device
|
|
#
|
|
vdo create $VDOCONF --name "$VDONAME" --device="$dev1" --vdoLogicalSize=31G
|
|
|
|
mkfs -E nodiscard "$DM_DEV_DIR/mapper/$VDONAME"
|
|
|
|
# Fail with an already existing volume group $vg2
|
|
not vdoimport --dry-run -y -v --name $vg2/$lv1 "$dev1" |& tee err
|
|
grep "already existing volume group" err
|
|
|
|
# User can also convert already stopped VDO volume
|
|
vdo stop $VDOCONF --name "$VDONAME"
|
|
|
|
vdoimport -y -v --name $vg/$lv1 "$dev1"
|
|
|
|
fsck -n "$DM_DEV_DIR/$vg/$lv1"
|
|
|
|
vgremove -f $vg
|
|
|
|
|
|
#
|
|
# Try once again with different vgname/lvname and sizes
|
|
#
|
|
aux teardown_devs
|
|
aux prepare_devs 1 23456
|
|
|
|
vdo create $VDOCONF --name "$VDONAME" --device="$dev1" --vdoLogicalSize=23G
|
|
|
|
mkfs -E nodiscard "$DM_DEV_DIR/mapper/$VDONAME"
|
|
|
|
vdoimport -y -v --name $vg1/$lv2 "$dev1"
|
|
|
|
fsck -n "$DM_DEV_DIR/$vg1/$lv2"
|
|
|
|
vgremove -f $vg1
|
|
|