| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #!/bin/bash
- ###################################################################
- ### ###
- ### Move a running guest's virtual disk file using virsh's ###
- ### blockcopy --pivot feature. ###
- ### ###
- ### - Works for guests with a single virtual disk ###
- ### - Still requires manual editing of the domain's dumped ###
- ### xml file with the new absolute path of the virtual ###
- ### disk before running virsh define and removing the ###
- ### original virtual disk. (Will try to implement these ###
- ### steps within the script in the future) ###
- ### /mhutchinson ###
- ### Last updated 11-18-2024. ###
- ### ###
- ###################################################################
- echo -e "Usage: $0 DOMNAME"
- DISKLIST=$(virsh domblklist $1 --details | grep -v cdrom | grep file | awk '{ print $4 }')
- echo -e "Disk list:\n"
- echo -e "$DISKLIST\n"
- for i in $DISKLIST; do
- echo "just filename:";
- basename $i ; JUSTFILENAME=$(basename $i)
- OLDFULLPATH=$i;
- echo "full path again:" $OLDFULLPATH;
- read -p 'Enter NEW ABSOLUTE PATH (w/o filename):' NEWPATH;
- echo "NEWPATH is "$NEWPATH;
- echo "NEW ABSOLUTE PATH with FILENAME is "$NEWPATH"/"$JUSTFILENAME;
- echo "DOM's xml file has been dumped to this dir. Remember to change it AFTER the pivot completes." ;
- virsh dumpxml --inactive $1 > $1.xml;
- virsh undefine $1;
- echo "Starting blockcopy on disk "$JUSTFILENAME"...";
- virsh blockcopy --domain $1 --path $OLDFULLPATH --dest $NEWPATH"/"$JUSTFILENAME --wait --verbose --pivot;
- echo "Now you must change to the new abs path in the "$1".xml file, save it, then run virsh define "$1".xml and remove the old file."
- echo "done"
- done
|