Kulcsszó - xenserver

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"

A minap be kellett üzemelnem egy, csak saját storage-ot használó Citrix Xenserver-t. A VPS-ek virtuális merevlemezeit tároló helyi storage-ot a telepítésnél létre lehet hozni, azonban az ISO repository-t nem. Íme egy tutorial, hogyan készíthetjük el utóbbit kézzel, a telepítés befejezte után:

mkdir -p /var/opt/xen/iso_repo
xe sr-create name-label=ISO_repo type=iso device-config:location=/var/opt/xen/iso_repo device-config:legacy_mode=true content-type=iso

A fenti parancsok kiadása után töltsük le a használni kívánt lemezképeket a /var/opt/xen/iso_repo mappába, majd XenCenter-ben rescaneljük a repo tartalmát.