From 5d3530b0c3337cc8601522044fd844402b81845d Mon Sep 17 00:00:00 2001 From: Greg Price Date: Wed, 18 Mar 2009 22:04:36 -0400 Subject: [PATCH] pv-fixup: update for non-clustered operation svn path=/trunk/scripts/pv-fixup/; revision=2266 --- pv-fixup | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/pv-fixup b/pv-fixup index f4d83a7..78a4530 100644 --- a/pv-fixup +++ b/pv-fixup @@ -28,25 +28,66 @@ vgextend $VG $TMPDEV # - pvmove all the LVs to the temporary PV +yamlkeys () { + python -c 'if 1: + import yaml, sys + mm = yaml.load(sys.stdin.read()) + for m in sorted(mm.iterkeys()): print m' +} + +lvsleft () { + lvs -o name,devices xenvg \ + | perl -lane "print \$F[0] if (\$F[1] =~ m|$DISK|)" +} + +vmstolvs () { + perl -pe 's/^/d_/;s/$/_hda/' +} + +totalsize () { + # handy for estimating time; output in GiB; pipe in a list of LVs + perl -pe 's.^.xenvg/.' \ + | xargs lvs -o size --units=g \ + | perl -lne '$total += $_; END { print $total; }' +} + movelv () { echo pvmoving $1... - lvchange -an $1 pvmove -i 10 -n $1 $2 - lvchange -ay $1 } +ssh root@xvm remctl remote web listvms \ + | yamlkeys + > runningvms +LVM_SYSTEM_DIR=/root/lvm lvsleft \ + | grep '^d_.*_hda$' \ + | grep -v -xf <(vmstolvs offvmlvs +for lv in $(offvmlvs); do + LVM_SYSTEM_DIR=/root/lvm movelv $VG/$lv $DISK +done #FOREACH host: -for lv in $(lvs -o lv_name --noheadings $VG); do - movelv $VG/$lv $DISK +for lv in $(invirt-listvms | yamlkeys | vmstolvs); do + LVM_SYSTEM_DIR=/root/lvm movelv $VG/$lv $DISK done #done -# hopefully empty: -lvs $VG -o lv_name,devices | grep $DISK -# if not, do some more movelv +ssh root@xvm remctl remote web listvms \ + | perl -lne 'print if (s/^ cdrom: //)' \ + > usedcdroms +LVM_SYSTEM_DIR=/root/lvm lvsleft \ + | grep ^image_ \ + | grep -v -xf <(perl -pe "s|/dev/$VG/||" usedcdroms) \ + > offcdlvs +for lv in $(offcdlvs); do + LVM_SYSTEM_DIR=/root/lvm movelv $VG/$lv $DISK +done + +# deal with $(cat usedcdroms) +# deal with s_* LVs +# deal with any remaining $(lvsleft) -# This is possible if some LVs were used on more than one host during -# migration. +[ -z $(lvsleft) ] # - pvremove the old PV -- 1.7.9.5