1911ed23d4c76cd1bd3081f3a836bead85504e98
[gnt-info] / lv-insert-part.sh
1 #!/bin/sh -xe
2
3 # insert bootable partition table at beginning of lv
4
5 test -z "$1" || test ! -e "$1" && echo "Usage: $0 /path/to/lv" && exit 1
6
7 lvs --noheadings -o vg_name,name,lv_size $1 | tee /dev/stderr | while read vg_name name lv_size ; do
8         lvcreate -s -L $lv_size -n ${name}.snap /dev/$vg_name/$name
9
10         # create partition
11         echo '2048,+,L,*' | sfdisk --no-reread /dev/$vg_name/$name
12
13         # FIXME label?
14         mkfs.ext4 -F -E offset=$(( 2048 * 512 )) /dev/$vg_name/$name
15
16         mkdir /tmp/$name
17         mount /dev/$vg_name/$name /tmp/$name -o offset=$(( 2048 * 512 ))
18
19
20         mkdir /tmp/${name}.snap
21         mount /dev/$vg_name/${name}.snap /tmp/${name}.snap
22
23         rsync -raHX --numeric-ids --sparse /tmp/${name}.snap/ /tmp/$name/
24
25         umount /tmp/${name}.snap
26         umount /tmp/$name
27
28         rmdir /tmp/${name}.snap
29         rmdir /tmp/${name}
30
31         lvremove -y /dev/$vg_name/${name}.snap
32 done