Kulcsszó - konvertálás

Munkahelyem egyik régi XenServer pooljának lebontásához szükség volt arra, hogy a VPS-ekhez tartozó raw diszkek VHD-re legyenek konvertálva. A VHD formátum előnye többek között a storage-ok közötti live migráció támogatása.

Az alábbi kis szkripttel lehetőség van egy adott VPS-hez tartozó merevlemezek VHD-ban való visszatöltésére és lementésére. Hozzávalók:

  • Kétszer annyi szabad hely, mint amennyit az adott VPS foglal a storage-on
  • Átmeneti mentő terület (pl. NFS Share)

#!/bin/bash

TEMPDIR=/mnt/nfs
VMID=vps.example.com
SRUUID=3a1d030b-da5b-e1b9-c589-8f2f74dcc4f2

echo $(date +%Y-%m-%d" "%H:%M:%S)" Exporting VDI(s)"
for vdi in $(xe vm-disk-list vm=$VMID | grep -A 3 VDI | grep uuid | awk {print $5}); do
size=$(xe vdi-param-list uuid=$vdi | grep "virtual-size" | awk {print $4})
echo "Exporting $vdi, "`expr $size / 1024 / 1024`" Mb: $TEMPDIR/$VMID-$vdi.vhd"
xe vdi-export uuid=$vdi filename=$TEMPDIR/$VMID-$vdi.vhd format=vhd
done

echo ""
echo $(date +%Y-%m-%d" "%H:%M:%S)" Importing VDI(s)"
for vdi in $(xe vm-disk-list vm=$VMID | grep -A 3 VDI | grep uuid | awk {print $5}); do
size=$(xe vdi-param-list uuid=$vdi | grep "virtual-size" | awk {print $4})
echo "Importing $vdi, "`expr $size / 1024 / 1024`" Mb: $TEMPDIR/$VMID-$vdi.vhd"
newvdiuuid=$(xe vdi-create sr-uuid=$SRUUID virtual-size=`expr $size / 1024 / 1024`MiB name-label=$VMID-$vdi)
xe vdi-import uuid=$newvdiuuid filename=$TEMPDIR/$VMID-$vdi.vhd format=vhd
done

xe sr-scan uuid=$SRUUID
echo $(date +%Y-%m-%d" "%H:%M:%S)" done"

echo -e "TODO:\nDetach (or remove) old disk(s) from the VPS\nAttach new disk(s) to the VPS"