delete old VM-images when running out of space
This commit is contained in:
parent
c99ec444f8
commit
30f24bb666
3 changed files with 74 additions and 16 deletions
|
@ -12,6 +12,8 @@ options:
|
|||
-n|--new new clone will be created, even if exists
|
||||
-p|--persistent new clone will be created persistent, so available after reboot too
|
||||
-s|--system qemu:///system instead of default qemu:///session
|
||||
--no-viewer start without viewer
|
||||
--heads n number of displays
|
||||
--memory sizeMB memory size in MB
|
||||
--cpu num number of CPUs
|
||||
--os OS operating system (win10|linux|..)
|
||||
|
@ -76,8 +78,9 @@ check_images() {
|
|||
sudo -u lmnsynci /usr/local/bin/vm-sync get_image "$(basename "${BACKINGARRAY[$i]}" .qcow2)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "VM-Image and required backingfiles available and checked"
|
||||
|
||||
sudo -u lmnsynci /usr/local/bin/vm-sync update_usage_information ${BACKINGARRAY[*]}
|
||||
}
|
||||
|
||||
create_clone() {
|
||||
|
@ -108,10 +111,11 @@ NEWCLONE=0
|
|||
PERSISTENT=0
|
||||
LIBVIRTOSINFO="win10"
|
||||
LIBVIRTOPTS=""
|
||||
NO_VIEWER=0
|
||||
|
||||
source /etc/lmn/vm.conf
|
||||
|
||||
TEMP=$(getopt -o no:ps --long new,options:,persistent:,system,memory:,data-disk:,cpu:,bridge:,os:,help -n $0 -- "$@")
|
||||
TEMP=$(getopt -o no:ps --long new,no-viewer,options:,persistent,system,memory:,data-disk:,heads:,cpu:,bridge:,os:,help -n $0 -- "$@")
|
||||
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
|
||||
|
||||
eval set -- "$TEMP"
|
||||
|
@ -135,16 +139,39 @@ while true; do
|
|||
LIBVIRTOPTS=$2
|
||||
shift 2
|
||||
;;
|
||||
--no-viewer )
|
||||
NO_VIEWER=1
|
||||
shift
|
||||
;;
|
||||
--data-disk )
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --disk ${VM_DIR}/data.qcow2,size=$2,sparse=yes"
|
||||
shift 2
|
||||
;;
|
||||
--heads )
|
||||
for i in $(seq $2)
|
||||
do
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --video model.heads=$i"
|
||||
done
|
||||
shift 2
|
||||
;;
|
||||
--memory )
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --memory $2"
|
||||
mem_avail=$(sed -En "s/^MemAvailable:\s+([0-9]+)\s+kB/\1/p" /proc/meminfo)
|
||||
mem_avail=$((mem_avail / 1024 - 2048))
|
||||
if (( $2 < mem_avail )); then
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --memory $2"
|
||||
else
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --memory ${mem_avail}"
|
||||
fi
|
||||
shift 2
|
||||
;;
|
||||
--cpu )
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --vcpu $2"
|
||||
#cpu=$(sed -En "0,/^cpu cores/s/^cpu cores\s+:\s+([0-9]+)/\1/p" /proc/cpuinfo)
|
||||
cpu=$(lscpu | grep "^CPU(s):" | sed 's/.* //g')
|
||||
if (( $2 < cpu )); then
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --vcpu $2"
|
||||
else
|
||||
LIBVIRTOPTS="${LIBVIRTOPTS} --vcpu ${cpu}"
|
||||
fi
|
||||
shift 2
|
||||
;;
|
||||
--bridge )
|
||||
|
@ -199,12 +226,6 @@ if ! virsh --connect="${QEMU}" list | grep "${VM_NAME}-clone"; then
|
|||
|
||||
# finally, create the new vm
|
||||
|
||||
# TODO
|
||||
# # find macvtap interface MAC address:
|
||||
# MAC="$(ip link | grep -A1 "vm-macvtap" |
|
||||
# sed -nE "s%\s+link/ether ([[:xdigit:]:]{17}) .+%\1%p")"
|
||||
# sed -i -E -e "s/MACMACVTAP/$MAC/" "${VM_XML}"
|
||||
|
||||
virt-install \
|
||||
--osinfo "${LIBVIRTOSINFO}" \
|
||||
--name "${VM_NAME}-clone" \
|
||||
|
@ -220,14 +241,16 @@ if ! virsh --connect="${QEMU}" list | grep "${VM_NAME}-clone"; then
|
|||
--connect="${QEMU}" \
|
||||
--noautoconsole \
|
||||
${LIBVIRTOPTS}
|
||||
|
||||
# --dry-run \
|
||||
# --print-xml \
|
||||
# > /tmp/vm.xml
|
||||
# --features hyperv.synic.state=on,xpath1.set=./hyperv/vpindex/@state=on,xpath2.set=./hyperv/stimer/@state=on \
|
||||
# --network type=ethernet,target.dev=vm-macvtap,xpath1.set=./target/@managed=no \
|
||||
|
||||
# virsh --connect="${QEMU}" start "${VM_NAME}-clone"
|
||||
fi
|
||||
echo "starting viewer"
|
||||
trap exit_script SIGHUP SIGINT SIGTERM
|
||||
virt-viewer --connect="${QEMU}" --full-screen "${VM_NAME}-clone"
|
||||
if [[ $NO_VIEWER == 0 ]] ; then
|
||||
echo "starting viewer"
|
||||
trap exit_script SIGHUP SIGINT SIGTERM
|
||||
virt-viewer --connect="${QEMU}" --full-screen "${VM_NAME}-clone"
|
||||
fi
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue