1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-22 18:50:08 +03:00

F #5530: redefine vm snapshots after migration (#1555)

Signed-off-by: René Bayer <github@rene.network>
Co-authored-by: René Bayer <github@rene.network>
(cherry picked from commit 5dfe830feed89debd0e3cfd0ca9e01af26252e68)
This commit is contained in:
Jan Orel 2022-01-07 11:33:59 +01:00 committed by Ruben S. Montero
parent 074bced8b4
commit 695f8c50a7
No known key found for this signature in database
GPG Key ID: A0CEA6FA880A1D87

View File

@ -102,7 +102,9 @@ VM_DIR="${XPATH_ELEMENTS[j++]}"
# use "force-share" param for qemu >= 2.10
[ "$(get_qemu_img_version)" -ge 2010000 ] && QEMU_IMG_PARAM="-U"
# migration can't be done with domain snapshots, drop them first
# migration can't be done with domain snapshots, drop them first but save current snapshot for redefine
SNAP_CUR=$(virsh --connect $LIBVIRT_URI snapshot-current --name $DEPLOY_ID 2>/dev/null)
SNAPS=$(monitor_and_log \
"virsh --connect $LIBVIRT_URI snapshot-list $DEPLOY_ID --name 2>/dev/null" \
"Failed to get snapshots for $DEPLOY_ID")
@ -245,6 +247,22 @@ if [ $RC -ne 0 ]; then
exit $RC
fi
# redefine potential snapshots after live migration
if [ "$SHARED" = "YES" ] && [ -n "$SNAP_CUR" ]; then
UUID=$(virsh --connect $QEMU_PROTOCOL://$DEST_HOST/system dominfo $DEPLOY_ID | awk '/UUID:/ {print $2}')
DISK_PATH=$(virsh --connect $QEMU_PROTOCOL://$DEST_HOST/system domblklist $DEPLOY_ID | awk '/disk.0/ {print $2}')
DISK_DIR=$(dirname $DISK_PATH)
for SNAPSHOT_MD_XML in $(ls ${DISK_DIR}/snap-*.xml 2>/dev/null); do
# replace uuid in the snapshot metadata xml
sed -i "s%<uuid>[[:alnum:]-]*</uuid>%<uuid>$UUID</uuid>%" $SNAPSHOT_MD_XML
# redefine the snapshot using the xml metadata file
virsh --connect $QEMU_PROTOCOL://$DEST_HOST/system snapshot-create $DEPLOY_ID $SNAPSHOT_MD_XML --redefine > /dev/null || true
done
virsh --connect $QEMU_PROTOCOL://$DEST_HOST/system snapshot-current $DEPLOY_ID $SNAP_CUR
fi
# Synchronize VM time on background on remote host
if [ "$SYNC_TIME" = "yes" ]; then
SYNC_TIME_CMD=$(cat <<EOF