xref: /dflybsd-src/contrib/lvm2/dist/test/t-vgsplit-usage.sh (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino#!/bin/sh
286d7f5d3SJohn Marino# Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved.
386d7f5d3SJohn Marino#
486d7f5d3SJohn Marino# This copyrighted material is made available to anyone wishing to use,
586d7f5d3SJohn Marino# modify, copy, or redistribute it subject to the terms and conditions
686d7f5d3SJohn Marino# of the GNU General Public License v.2.
786d7f5d3SJohn Marino#
886d7f5d3SJohn Marino# You should have received a copy of the GNU General Public License
986d7f5d3SJohn Marino# along with this program; if not, write to the Free Software Foundation,
1086d7f5d3SJohn Marino# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
1186d7f5d3SJohn Marino
1286d7f5d3SJohn Marino# Test vgsplit command options for validity
1386d7f5d3SJohn Marino
1486d7f5d3SJohn Marino. ./test-utils.sh
1586d7f5d3SJohn Marino
1686d7f5d3SJohn Marinoaux prepare_devs 5
1786d7f5d3SJohn Marino
1886d7f5d3SJohn Marinofor mdatype in 1 2
1986d7f5d3SJohn Marinodo
2086d7f5d3SJohn Marino
2186d7f5d3SJohn Marinopvcreate -M$mdatype $devs
2286d7f5d3SJohn Marino
2386d7f5d3SJohn Marino# ensure name order does not matter
2486d7f5d3SJohn Marino# NOTE: if we're using lvm1, we must use -M on vgsplit
2586d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $devs
2686d7f5d3SJohn Marinovgsplit -M$mdatype $vg1 $vg2 $dev1
2786d7f5d3SJohn Marinovgremove $vg1
2886d7f5d3SJohn Marinovgremove $vg2
2986d7f5d3SJohn Marinovgcreate -M$mdatype $vg2 $devs
3086d7f5d3SJohn Marinovgsplit -M$mdatype $vg2 $vg1 $dev1
3186d7f5d3SJohn Marinovgremove $vg1
3286d7f5d3SJohn Marinovgremove $vg2
3386d7f5d3SJohn Marino
3486d7f5d3SJohn Marino# vgsplit accepts new vg as destination of split
3586d7f5d3SJohn Marino# lvm1 -- bz244792
3686d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $devs
3786d7f5d3SJohn Marinovgsplit $vg1 $vg2 $dev1 1>err
3886d7f5d3SJohn Marinogrep "New volume group \"$vg2\" successfully split from \"$vg1\"" err
3986d7f5d3SJohn Marinovgremove $vg1
4086d7f5d3SJohn Marinovgremove $vg2
4186d7f5d3SJohn Marino
4286d7f5d3SJohn Marino# vgsplit accepts existing vg as destination of split
4386d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
4486d7f5d3SJohn Marinovgcreate -M$mdatype $vg2 $dev3 $dev4
4586d7f5d3SJohn Marinovgsplit $vg1 $vg2 $dev1 1>err
4686d7f5d3SJohn Marinogrep "Existing volume group \"$vg2\" successfully split from \"$vg1\"" err
4786d7f5d3SJohn Marinovgremove $vg1
4886d7f5d3SJohn Marinovgremove $vg2
4986d7f5d3SJohn Marino
5086d7f5d3SJohn Marino# vgsplit accepts --maxphysicalvolumes 128 on new VG
5186d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
5286d7f5d3SJohn Marinovgsplit --maxphysicalvolumes 128 $vg1 $vg2 $dev1
5386d7f5d3SJohn Marinocheck_vg_field_ $vg2 max_pv 128
5486d7f5d3SJohn Marinovgremove $vg1
5586d7f5d3SJohn Marinovgremove $vg2
5686d7f5d3SJohn Marino
5786d7f5d3SJohn Marino# vgsplit accepts --maxlogicalvolumes 128 on new VG
5886d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
5986d7f5d3SJohn Marinovgsplit --maxlogicalvolumes 128 $vg1 $vg2 $dev1
6086d7f5d3SJohn Marinocheck_vg_field_ $vg2 max_lv 128
6186d7f5d3SJohn Marinovgremove $vg1
6286d7f5d3SJohn Marinovgremove $vg2
6386d7f5d3SJohn Marino
6486d7f5d3SJohn Marino# vgsplit rejects split because max_pv of destination would be exceeded
6586d7f5d3SJohn Marinovgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 $dev1 $dev2
6686d7f5d3SJohn Marinovgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 $dev3 $dev4
6786d7f5d3SJohn Marinonot vgsplit $vg1 $vg2 $dev1 2>err;
6886d7f5d3SJohn Marinogrep "^  Maximum number of physical volumes (2) exceeded" err
6986d7f5d3SJohn Marinovgremove $vg2
7086d7f5d3SJohn Marinovgremove $vg1
7186d7f5d3SJohn Marino
7286d7f5d3SJohn Marino# vgsplit rejects split because maxphysicalvolumes given with existing vg
7386d7f5d3SJohn Marinovgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 $dev1 $dev2
7486d7f5d3SJohn Marinovgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 $dev3 $dev4
7586d7f5d3SJohn Marinonot vgsplit --maxphysicalvolumes 2 $vg1 $vg2 $dev1 2>err;
7686d7f5d3SJohn Marinogrep "^  Volume group \"$vg2\" exists, but new VG option specified" err
7786d7f5d3SJohn Marinovgremove $vg2
7886d7f5d3SJohn Marinovgremove $vg1
7986d7f5d3SJohn Marino
8086d7f5d3SJohn Marino# vgsplit rejects split because maxlogicalvolumes given with existing vg
8186d7f5d3SJohn Marinovgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 $dev1 $dev2
8286d7f5d3SJohn Marinovgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 $dev3 $dev4
8386d7f5d3SJohn Marinonot vgsplit --maxlogicalvolumes 2 $vg1 $vg2 $dev1 2>err
8486d7f5d3SJohn Marinogrep "^  Volume group \"$vg2\" exists, but new VG option specified" err
8586d7f5d3SJohn Marinovgremove $vg2
8686d7f5d3SJohn Marinovgremove $vg1
8786d7f5d3SJohn Marino
8886d7f5d3SJohn Marino# vgsplit rejects split because alloc given with existing vg
8986d7f5d3SJohn Marinovgcreate -M$mdatype --alloc cling $vg1 $dev1 $dev2
9086d7f5d3SJohn Marinovgcreate -M$mdatype --alloc cling $vg2 $dev3 $dev4
9186d7f5d3SJohn Marinonot vgsplit --alloc cling $vg1 $vg2 $dev1 2>err;
9286d7f5d3SJohn Marinogrep "^  Volume group \"$vg2\" exists, but new VG option specified" err
9386d7f5d3SJohn Marinovgremove $vg2
9486d7f5d3SJohn Marinovgremove $vg1
9586d7f5d3SJohn Marino
9686d7f5d3SJohn Marino# vgsplit rejects split because clustered given with existing vg
9786d7f5d3SJohn Marinovgcreate -M$mdatype --clustered n $vg1 $dev1 $dev2
9886d7f5d3SJohn Marinovgcreate -M$mdatype --clustered n $vg2 $dev3 $dev4
9986d7f5d3SJohn Marinonot vgsplit --clustered n $vg1 $vg2 $dev1 2>err
10086d7f5d3SJohn Marinogrep "^  Volume group \"$vg2\" exists, but new VG option specified" err
10186d7f5d3SJohn Marinovgremove $vg2
10286d7f5d3SJohn Marinovgremove $vg1
10386d7f5d3SJohn Marino
10486d7f5d3SJohn Marino# vgsplit rejects vg with active lv
10586d7f5d3SJohn Marinopvcreate -M$mdatype -ff $dev3 $dev4
10686d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
10786d7f5d3SJohn Marinovgcreate -M$mdatype $vg2 $dev3 $dev4
10886d7f5d3SJohn Marinolvcreate -l 4 -n $lv1 $vg1
10986d7f5d3SJohn Marinonot vgsplit $vg1 $vg2 $dev1 2>err;
11086d7f5d3SJohn Marinogrep "^  Logical volumes in \"$vg1\" must be inactive\$" err
11186d7f5d3SJohn Marinovgremove -f $vg2
11286d7f5d3SJohn Marinovgremove -f $vg1
11386d7f5d3SJohn Marino
11486d7f5d3SJohn Marino# vgsplit rejects split because max_lv is exceeded
11586d7f5d3SJohn Marinovgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 $dev1 $dev2
11686d7f5d3SJohn Marinovgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 $dev3 $dev4
11786d7f5d3SJohn Marinolvcreate -l 4 -n $lv1 $vg1
11886d7f5d3SJohn Marinolvcreate -l 4 -n $lv2 $vg1
11986d7f5d3SJohn Marinolvcreate -l 4 -n $lv3 $vg2
12086d7f5d3SJohn Marinovgchange -an $vg1
12186d7f5d3SJohn Marinovgchange -an $vg2
12286d7f5d3SJohn Marinonot vgsplit $vg1 $vg2 $dev1 2>err;
12386d7f5d3SJohn Marinogrep "^  Maximum number of logical volumes (2) exceeded" err
12486d7f5d3SJohn Marinovgremove -f $vg2
12586d7f5d3SJohn Marinovgremove -f $vg1
12686d7f5d3SJohn Marino
12786d7f5d3SJohn Marino# vgsplit verify default - max_lv attribute from new VG is same as source VG" \
12886d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
12986d7f5d3SJohn Marinolvcreate -l 4 -n $lv1 $vg1
13086d7f5d3SJohn Marinovgchange -an $vg1
13186d7f5d3SJohn Marinovgsplit $vg1 $vg2 $dev1
13286d7f5d3SJohn Marinocompare_vg_field_ $vg1 $vg2 max_lv
13386d7f5d3SJohn Marinovgremove -f $vg2
13486d7f5d3SJohn Marinovgremove -f $vg1
13586d7f5d3SJohn Marino
13686d7f5d3SJohn Marino# vgsplit verify default - max_pv attribute from new VG is same as source VG" \
13786d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
13886d7f5d3SJohn Marinolvcreate -l 4 -n $lv1 $vg1
13986d7f5d3SJohn Marinovgchange -an $vg1
14086d7f5d3SJohn Marinovgsplit $vg1 $vg2 $dev1
14186d7f5d3SJohn Marinocompare_vg_field_ $vg1 $vg2 max_pv
14286d7f5d3SJohn Marinovgremove -f $vg2
14386d7f5d3SJohn Marinovgremove -f $vg1
14486d7f5d3SJohn Marino
14586d7f5d3SJohn Marino# vgsplit verify default - vg_fmt attribute from new VG is same as source VG" \
14686d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
14786d7f5d3SJohn Marinolvcreate -l 4 -n $lv1 $vg1
14886d7f5d3SJohn Marinovgchange -an $vg1
14986d7f5d3SJohn Marinovgsplit $vg1 $vg2 $dev1
15086d7f5d3SJohn Marinocompare_vg_field_ $vg1 $vg2 vg_fmt
15186d7f5d3SJohn Marinovgremove -f $vg2
15286d7f5d3SJohn Marinovgremove -f $vg1
15386d7f5d3SJohn Marino
15486d7f5d3SJohn Marino# vgsplit rejects split because PV not in VG
15586d7f5d3SJohn Marinovgcreate -M$mdatype $vg1 $dev1 $dev2
15686d7f5d3SJohn Marinovgcreate -M$mdatype $vg2 $dev3 $dev4
15786d7f5d3SJohn Marinolvcreate -l 4 -n $lv1 $vg1
15886d7f5d3SJohn Marinolvcreate -l 4 -n $lv2 $vg1
15986d7f5d3SJohn Marinovgchange -an $vg1
16086d7f5d3SJohn Marinonot vgsplit $vg1 $vg2 $dev3 2>err;
16186d7f5d3SJohn Marinovgremove -f $vg2
16286d7f5d3SJohn Marinovgremove -f $vg1
16386d7f5d3SJohn Marinodone
16486d7f5d3SJohn Marino
16586d7f5d3SJohn Marino# ONLY LVM2 metadata
16686d7f5d3SJohn Marino# setup PVs" '
16786d7f5d3SJohn Marinopvcreate --metadatacopies 0 $dev5
16886d7f5d3SJohn Marino
16986d7f5d3SJohn Marino# vgsplit rejects to give away pv with the last mda copy
17086d7f5d3SJohn Marinovgcreate $vg1 $dev5 $dev2
17186d7f5d3SJohn Marinolvcreate -l 10 -n $lv1  $vg1
17286d7f5d3SJohn Marinolvchange -an $vg1/$lv1
17386d7f5d3SJohn Marinovg_validate_pvlv_counts_ $vg1 2 1 0
17486d7f5d3SJohn Marinonot vgsplit  $vg1 $vg2 $dev5;
17586d7f5d3SJohn Marinovg_validate_pvlv_counts_ $vg1 2 1 0
17686d7f5d3SJohn Marinovgremove -ff $vg1
17786d7f5d3SJohn Marino
17886d7f5d3SJohn Marino# vgsplit rejects split because metadata types differ
17986d7f5d3SJohn Marinopvcreate -ff -M1 $dev3 $dev4
18086d7f5d3SJohn Marinopvcreate -ff $dev1 $dev2
18186d7f5d3SJohn Marinovgcreate -M1 $vg1 $dev3 $dev4
18286d7f5d3SJohn Marinovgcreate $vg2 $dev1 $dev2
18386d7f5d3SJohn Marinonot vgsplit $vg1 $vg2 $dev3 2>err;
18486d7f5d3SJohn Marinogrep "^  Metadata types differ" err
18586d7f5d3SJohn Marinovgremove $vg2
18686d7f5d3SJohn Marinovgremove $vg1
18786d7f5d3SJohn Marino
188