pv-fixup: more metadata, align PEs, and tweaks
[invirt/scripts/pv-fixup.git] / pv-fixup
index 78a4530..d5c0830 100644 (file)
--- a/pv-fixup
+++ b/pv-fixup
@@ -8,7 +8,7 @@ TMPDM=tmpfoo
 TMPDEV=/dev/mapper/$TMPDM
 TMPDM2=tmpbar
 TMPDEV2=/dev/mapper/$TMPDM2
-METADATASIZE=3.5m
+METADATASIZE=8128k
 
 #  - pvresize the old PV to half the space
 pvresize --setphysicalvolumesize=${HALFSIZETiB}t $DISK
@@ -52,23 +52,24 @@ totalsize () {
 }
 
 movelv () {
-  echo pvmoving $1...
-  pvmove -i 10 -n $1 $2
+  echo pvmoving $VG/$1...
+  pvmove -i 10 -n $VG/$1 $2
 }
 
 ssh root@xvm remctl remote web listvms \
- | yamlkeys
+ | yamlkeys \
  > runningvms
 LVM_SYSTEM_DIR=/root/lvm lvsleft \
  | grep '^d_.*_hda$' \
  | grep -v -xf <(vmstolvs <runningvms) \
  > offvmlvs
 for lv in $(offvmlvs); do
-  LVM_SYSTEM_DIR=/root/lvm movelv $VG/$lv $DISK
+  LVM_SYSTEM_DIR=/root/lvm movelv $lv $DISK
 done
 #FOREACH host:
-for lv in $(invirt-listvms | yamlkeys | vmstolvs); do
-  LVM_SYSTEM_DIR=/root/lvm movelv $VG/$lv $DISK
+for lv in $(invirt-listvms | yamlkeys | vmstolvs \
+             | grep -xf <(LVM_SYSTEM_DIR=/root/lvm lvsleft)); do
+  LVM_SYSTEM_DIR=/root/lvm movelv $lv $DISK
 done
 #done
 
@@ -80,7 +81,7 @@ LVM_SYSTEM_DIR=/root/lvm lvsleft \
  | grep -v -xf <(perl -pe "s|/dev/$VG/||" usedcdroms) \
  > offcdlvs
 for lv in $(offcdlvs); do
-  LVM_SYSTEM_DIR=/root/lvm movelv $VG/$lv $DISK
+  LVM_SYSTEM_DIR=/root/lvm movelv $lv $DISK
 done
 
 # deal with $(cat usedcdroms)
@@ -91,18 +92,18 @@ done
 
 
 #  - pvremove the old PV
-vgreduce $VG $DISK
-pvremove $DISK
+LVM_SYSTEM_DIR=lvm vgreduce $VG $DISK
+dmsetup create $TMPDM2 --table "0 $((2 * 1024 * 20)) linear $DISK 0"
+pvremove $TMPDEV2
 
 #  - pvcreate a new PV in the old space,
 #     with --setphysicalvolumesize <half size>
 #     and with --metadatasize <huge>    (the point of this exercise)
 shortsize=$(python -c "print $HALFSIZETiB - 0.01")t
-dmsetup create $TMPDM2 --table "0 $((2 * 1024 * 4)) linear $DISK 0"
 pvcreate $TMPDEV2 --setphysicalvolumesize $shortsize --metadatasize $METADATASIZE
 dmsetup remove $TMPDM2
 pvscan
-vgextend $VG $DISK
+LVM_SYSTEM_DIR=lvm vgextend $VG $DISK
 
 #  - pvmove all the LVs back