virtualbox VM용 init.d 제어 스크립트

virtualbox VM용 init.d 제어 스크립트

Virtualbox 가상 머신이 항상 실행되어야 하는 Ubuntu 서버가 있습니다. VM은 VMAdmin관리자 권한이 없는 특정 사용자가 관리합니다 . Virtualbox VM을 처리하기 위해 init.d 스크립트를 생성해야 합니다.
다음을 수행해야 합니다.

  • 호스트 시스템이 부팅될 때마다 VM을 시작합니다.
  • 호스트가 종료될 때마다 게스트 시스템의 상태를 저장합니다.
  • VM 시작, 종료, 재설정 및 백업을 위한 명령을 제공합니다.

답변1

다음 스크립트는 위의 모든 사항을 처리합니다.

#! /bin/sh
# /etc/init.d/vbox

#Edit these variables!
VMUSER=VMAdmin
VMNAME="cdb62186-7c30-4c25-a0b0-e4a32cfb0504"
BASEFOLDER=/home/VMAdmin/path/to/backups/

case "$1" in
    start)
        echo "Starting VirtualBox VM..."
        sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
        ;;
    reset)
        echo "Resetting VirtualBox VM..."
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" reset
        ;;
    stop)
        echo "Saving state of Virtualbox VM..."
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" savestate
        ;;
    shutdown)
        echo "Shutting down Virtualbox VM..."
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton
        ;;
    status)
        sudo -H -u $VMUSER VBoxManage list vms -l | grep -e ^"$VMNAME": -e ^State | sed s/\ \ //g | cut -d: -f2-
        ;;
    backup)
        echo ""
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton

        echo "Waiting for VM "$VMNAME" to poweroff..."
        until $(sudo -H -u $VMUSER VBoxManage showvminfo --machinereadable "$VMNAME" | grep -q ^VMState=.poweroff.)
        do
          sleep 1
        done

        FILENAME=$(date +"%Y_%m_%d-%T")
        echo "Backing up Virtualbox VM to '$BASEFOLDER$FILENAME'..."
        sudo -H -u $VMUSER VBoxManage clonevm "$VMNAME" --options keepallmacs --name $FILENAME --basefolder $BASEFOLDER

        echo "Restarting VirtualBox VM..."
        sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
        echo ""
        ;;
    *)
        echo "Usage: sudo service vbox {start|stop|status|shutdown|reset|backup}"
        exit 1
        ;;
esac

exit 0

스크립트가 가장 먼저 종료되고 마지막으로 시작되도록 지정합니다.

sudo update-rc.d vbox defaults 99 01

crontab에 백업 작업을 추가하려면 다음을 실행하세요.

sudo crontab -e

그리고 다음과 같은 줄을 추가하세요.

* 3 * * 5 service vbox backup

금요일 오전 3시에 주간 백업이 실행됩니다. crontab 작업 생성에 대한 자세한 내용은 다음을 참조하세요. http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

관련 질문:Virtualbox VM 종료를 기다리는 Bash 스크립트?

관련 정보