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
|
@ -10,6 +10,7 @@ command:
|
|||
get_file
|
||||
get_image
|
||||
delete_outdated_image
|
||||
update_usage_information
|
||||
EOF
|
||||
}
|
||||
|
||||
|
@ -18,6 +19,22 @@ get_torrent() {
|
|||
echo "No torrent-File found"
|
||||
exit 1
|
||||
fi
|
||||
cd "${VM_SYSDIR}"
|
||||
echo Size needed: $(get_image_size "${VM_NAME}.qcow2.torrent")
|
||||
echo Size available: $(df --block-size=1 --output=avail "${VM_SYSDIR}" | sed 1d)
|
||||
while [[ $(get_image_size "${VM_NAME}.qcow2.torrent") -gt $(df --block-size=1 --output=avail "${VM_SYSDIR}" | sed 1d) ]]; do
|
||||
echo "Not enough space to get ${VM_NAME}."
|
||||
FILENAME="$(head -1 vm_usage_information.txt)"
|
||||
if [[ -z $FILENAME ]]; then
|
||||
echo "No more old VM-files to delete. Unable to get ${VM_NAME}. Please contact system administrator."
|
||||
exit 1
|
||||
fi
|
||||
echo "Deleting $FILENAME"
|
||||
sudo vm-aria2 stop "$(basename "${FILENAME}" .qcow2)"
|
||||
rm -f "${FILENAME}"
|
||||
[[ -f "${VM_DIR}/${FILENAME}" ]] && rm -f "${VM_DIR}/${FILENAME}"
|
||||
sed -i -e 1d vm_usage_information.txt
|
||||
done
|
||||
lockfile="/tmp/sync-vm-${VM_NAME}.lock"
|
||||
if ! flock -n "$lockfile" echo "try to acquire lock"; then
|
||||
echo torrent seems to be in process.
|
||||
|
@ -37,7 +54,7 @@ get_torrent() {
|
|||
sudo vm-aria2 stop "${VM_NAME}"
|
||||
cd "${VM_SYSDIR}"
|
||||
# get image
|
||||
aria2c --seed-time=0 --dht-file-path=$DHTDAT \
|
||||
aria2c --seed-time=0 --dht-file-path="$DHTDAT" \
|
||||
--dht-entry-point="${SEEDBOX_HOST}:${SEEDBOX_PORT}" \
|
||||
"${VM_SYSDIR}/${VM_NAME}.qcow2.torrent"
|
||||
# and seed
|
||||
|
@ -67,9 +84,18 @@ delete_outdated_image() {
|
|||
fi
|
||||
}
|
||||
|
||||
update_usage_information() {
|
||||
cd "${VM_SYSDIR}"
|
||||
[[ -f vm_usage_information.txt ]] || ls -tr *.qcow2 > vm_usage_information.txt || touch vm_usage_information.txt
|
||||
FILENAME="$(basename $FILENAME)"
|
||||
echo sed -i "/${FILENAME}/d" vm_usage_information.txt
|
||||
sed -i "/${FILENAME}/d" vm_usage_information.txt
|
||||
echo "${FILENAME}" >> vm_usage_information.txt
|
||||
}
|
||||
|
||||
get_file() {
|
||||
cd "${VM_SYSDIR}"
|
||||
curl --fail --noproxy ${SEEDBOX_HOST} -o "${FILENAME}" \
|
||||
curl --fail --noproxy "${SEEDBOX_HOST}" -o "${FILENAME}" \
|
||||
"http://${SEEDBOX_HOST}/aria2/${FILENAME}" || echo "File not found on seedbox"
|
||||
}
|
||||
|
||||
|
@ -130,6 +156,11 @@ case "$command" in
|
|||
delete_outdated_image
|
||||
done
|
||||
;;
|
||||
update_usage_information)
|
||||
for FILENAME in "$@"; do
|
||||
update_usage_information
|
||||
done
|
||||
;;
|
||||
*)
|
||||
show_help
|
||||
exit 1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue