source: trunk/scripts/pv-fixup/pv-fixup @ 2252

Last change on this file since 2252 was 2241, checked in by price, 15 years ago

touch up pv-fixup 'script' some more

File size: 1.9 KB
Line 
1#!/bin/sh
2exit #Not actually a script.
3
4VG=xenvg
5DISK=/dev/mapper/36090a028407d6e2b2589a45cdb971489
6HALFSIZETiB=5.23
7TMPDM=tmpfoo
8TMPDEV=/dev/mapper/$TMPDM
9TMPDM2=tmpbar
10TMPDEV2=/dev/mapper/$TMPDM2
11METADATASIZE=3.5m
12
13#  - pvresize the old PV to half the space
14pvresize --setphysicalvolumesize=${HALFSIZETiB}t $DISK
15
16#  - dmsetup create a device in the latter half
17dmstart=$(python -c "print int(($HALFSIZETiB + 0.01) * 1024 * 1024 * 1024 * 2)")
18dmlen=$(python -c "print int(($HALFSIZETiB - 0.02) * 1024 * 1024 * 1024 * 2)")
19#FOREACH host:
20dmsetup create $TMPDM --table "0 $dmlen linear $DISK $dmstart"
21#done
22
23#  - pvcreate a temporary PV on the new device
24pvcreate $TMPDEV
25
26#  - vgextend with the temporary PV
27vgextend $VG $TMPDEV
28
29#  - pvmove all the LVs to the temporary PV
30
31movelv () {
32  echo pvmoving $1...
33  lvchange -an $1
34  pvmove -i 10 -n $1 $2
35}
36
37#FOREACH host:
38for lv in $(lvs -o lv_name --noheadings $VG); do
39  movelv $VG/$lv $DISK
40done
41#done
42
43# hopefully empty:
44lvs $VG -o lv_name,devices | grep $DISK
45# if not, do some more movelv
46
47# This is possible if some LVs were used on more than one host during
48# migration.
49
50
51#  - pvremove the old PV
52vgreduce $VG $DISK
53pvremove $DISK
54
55#  - pvcreate a new PV in the old space,
56#     with --setphysicalvolumesize <half size>
57#     and with --metadatasize <huge>    (the point of this exercise)
58shortsize=$(python -c "print $HALFSIZETiB - 0.01")t
59dmsetup create $TMPDM2 --table "0 $((2 * 1024 * 4)) linear $DISK 0"
60pvcreate $TMPDEV2 --setphysicalvolumesize $shortsize --metadatasize $METADATASIZE
61dmsetup remove $TMPDM2
62pvscan
63vgextend $VG $DISK
64
65#  - pvmove all the LVs back
66
67#FOREACH host:
68for lv in $(lvs -o lv_name --noheadings $VG); do
69  movelv $VG/$lv $TMPDEV
70done
71#done
72
73# hopefully empty:
74lvs $VG -o lv_name,devices | grep $TMPDEV
75# if not, do some more movelv
76
77#  - pvremove the temporary PV
78vgreduce $VG $TMPDEV
79pvremove $TMPDEV
80dmsetup remove $TMPDM
81
82#  - pvresize the new PV to use the whole space
83pvresize $DISK
Note: See TracBrowser for help on using the repository browser.