Инструменты пользователя

Инструменты сайта


virtualization:warm_vm_migration
warm_vm_migration.sh
#!/bin/bash
 
if [[ -n "$1" ]]; then vm="$1"; else echo "Usage: $(basename "$0") vm_name"; exit 1; fi
 
src="server1"; dst="server2"
 
############# Source server
srv="$src"
vmline="$(ssh "root@$srv" vim-cmd vmsvc/getallvms|grep "^[0-9]\+ \+$vm \+")"
echo "$vmline"
if [[ -z "$vmline" ]]; then echo "VM $vm not found. Exiting"; exit 1; fi
vmid="$(awk '{print $1}' <<<"$vmline")"
vmds="$(awk '{print $3}' <<<"$vmline"|tr -d '[]')"
vmfile="$(awk '{print $4}' <<<"$vmline")"
 
vmstate="$(ssh "root@$srv" vim-cmd vmsvc/power.getstate $vmid| tail -n1)"
if [[ "$vmstate" == "Powered on" ]]
 then
  ssh "root@$srv" vim-cmd vmsvc/power.suspend $vmid
  ssh "root@$srv" vim-cmd vmsvc/power.getstate $vmid| tail -n1 #Suspended
 else
  echo "VM is not powered on! Exiting..."; exit 0
fi
ssh "root@$srv" vim-cmd vmsvc/unregister $vmid
 
############# Destination server
srv="$dst"
vmid2="$(ssh "root@$srv" vim-cmd solo/registervm /vmfs/volumes/$vmds/$vmfile)"
ssh "root@$srv" vim-cmd vmsvc/getallvms|grep "^[0-9]\+ \+$vm \+"
ssh "root@$srv" vim-cmd vmsvc/power.on "$vmid2" &
sleep 5
ssh "root@$srv" vim-cmd vmsvc/message "$vmid2"
#Virtual machine message 735221:
#This virtual machine might have been moved or copied. In order to configure certain management and networking features, VMware ESX needs to know if this virtual machine was moved or copied. If you don't know, answer "I Copied It".
#   0. button.uuid.cancel (Cancel)
#   1. button.uuid.movedTheVM (I Moved It)
#   2. button.uuid.copiedTheVM (I Copied It) [default]
msgid="$(ssh "root@$srv" vim-cmd vmsvc/message "$vmid2"|sed -rne 's/(^Virtual machine message )([0-9]+)(:$)/\2/p')"
echo "Virtual machine message $msgid answer 1"
ssh "root@$srv" vim-cmd vmsvc/message "$vmid2" $msgid 1
ssh "root@$srv" vim-cmd vmsvc/power.getstate $vmid2| tail -n1
virtualization/warm_vm_migration.txt · Последнее изменение: 2025/02/20 17:22 — san

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki