Virtual Box en mode comanda: VBoxManage

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció

Interessa utilitzar Virtual Box en mode comanda per tal d'implementar còpies de seguretat automàtiques d'una màquina virtual que implica:

VBoxManage

Es tracta d'utilitzar VirtualBox des de la consola.

La idea és apagar una màquina virtual, clonar-la (fer una còpia de seguretat), i tornar-la a engegar. Tot això ficat en un cron que s'executa el cap de setmana

$ VBoxManage list vms
"Ubuntu-Server 12.04-Moodle" {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601}

Informació sobre una màquina virtual

$ VBoxManage showvminfo {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601}
Name:            Ubuntu-Server 12.04-Moodle
Guest OS:        Ubuntu
UUID:            7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601
Config file:     /home/user/VirtualBox VMs/Ubuntu-Server 12.04-Moodle/Ubuntu-Server 12.04-Moodle.vbox
Snapshot folder: /home/user/VirtualBox VMs/Ubuntu-Server 12.04-Moodle/Snapshots
Log folder:      /home/user/VirtualBox VMs/Ubuntu-Server 12.04-Moodle/Logs
Hardware UUID:   7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601
Memory size:     768MB
Page Fusion:     off
VRAM size:       12MB
CPU exec cap:    100%
HPET:            off
Chipset:         piix3
Firmware:        BIOS
Number of CPUs:  1
Synthetic Cpu:   off
CPUID overrides: None
Boot menu mode:  message and menu
Boot Device (1): Floppy
Boot Device (2): DVD
Boot Device (3): HardDisk
Boot Device (4): Not Assigned
ACPI:            on
IOAPIC:          off
PAE:             on
Time offset:     0 ms
...

Per apagar una Màquina Virtual:

$ VBoxManage controlvm <uuid>|<name> poweroff
$ VBoxManage controlvm {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601} poweroff


La carpeta del Virtual Box està a:

$ cd ~/VirtualBox\ VMs/

i la carpeta de la Màquina que vull clonar està a:

$ cd /Ubuntu-Server\ 12.04-Moodle

Per clonar una Màquina Virtual farem: (http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm)

$ VBoxManage clonevm {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601} --name UbuntuServerMoodle_120607
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Machine has been successfully cloned as "UbuntuServerMoodle_120607"

S'ha creat la carpeta UbuntuServerMoodle_120607/, on hi ha el fitxer .vbox (que és el fitxer XML que conté tota la definició) i el fitxer .vdi Per tornar a arrencar una Màquina Virtual:

$ VBoxManage startvm <uuid>|<name> [--type gui|vrdp|headless]
$ VBoxManage startvm {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601}

El que volem ara és crear una nova màquina virtual a partir de la clonada, per assegurar-nos de què és un clon correcte. El que hem de fer és registrar la màquina virtual que s'ha creat en l'anterior clonació:

$ VBoxManage registervm /home/user/VirtualBox\ VMs/UbuntuServerMoodle_120607/UbuntuServerMoodle_120607.vbox

$ VBoxManage list vms
"Ubuntu-Server 12.04-Moodle" {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601}
"UbuntuServerMoodle_120607" {c4787df0-3770-40ed-9673-73e9a52917b3}

i ja la podem arrencar:

$ VBoxManage startvm {c4787df0-3770-40ed-9673-73e9a52917b3}
o bé
$ VBoxManage startvm UbuntuServerMoodle_120607

Funciona correctament, excepte la xarxa, doncs quan faig ifconfig només es veu la targeta virbr0 i no la eth0. Apago i des de la consola gràfica li assigno eth0. Però continuo veient només la virbr0. Entro al fitxer /etc1network/interfaces i localment funciona molt bé i l'Apache també, però des de la màquina anfitriona no puc accedir.

Problema en la configuració de la xarxa

Solució 1:

Les dues màquines són iguals excepte que s'assigna una MAC diferent. Si a la màquina clon li fico la mateixa MAC que la màquina original (080027E74E9E) aleshores ja funciona.

Finalment, en aquesta màquina ja puc ficar la IP que serà definitiva en el fitxer /etc/network/interfaces (la definitiva serà la 192.168.0.15) i ja puc accedir al servidor Apache de la màquina virtual des de tota la xarxa del centre. Per ex,

Solució 2:

Efectivament el problema que em trobo té a veure amb l'assignació de la MAC:

$ dmesg | grep eth

El problema està en què en la màquina original la MAC està fixada en el fitxer /etc/udev/rules.d/z25_persistent-net.rules. Per tant, dues possibles solucions:

Snapshot: captura d'una màquina virtual

Les captures serveixen per capturar un estat concret de la màquina virtual en un instant de temps, de manera que poguem recuperar aquest estat de la MV si cal, a partir de l'últim clon. Hi ha molta similitud amb les còpies de seguretat, on véiem els conceptes de còpia de seguretat completa i incremental.

Així doncs, si volem restaurar una màquina virtual a un estat concret en una altra màquina real, necessitarem l'últim clon i restaurar el snapshot adient.

Per fer un snapshot:

$ VBoxManage snapshot {9de47e53-d7d3-4ecc-8477-387770a8a794} take LinuxCNC_140422_snapshot

Evidentment, triga molt menys que fer un clon.

Script per fer la còpia de seguretat automàticament de la màquina virtual

copia_seg_maq_virtual_v1.sh:

#!/bin/bash
##############################  #Script by Joan Q, Còpia de seguretat de la màquina virtual del IES Jaume Balmes  ##############################    

tdate=`date +%d%m%y`
#echo $tdate

#per apagar la màquina virtual
/usr/bin/VBoxManage controlvm {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601} poweroff
sleep 4

#Per clonar una Màquina Virtual farem. Queda copiat a /home/user/VirtualBox VMs
/usr/bin/VBoxManage clonevm {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601} --name UbuntuServerMoodle_$tdate
sleep 180

#copiem la còpia de la MV al disc de xarxa (el script s'ha d'executar com a root per tenir permisos sobre la carpeta vbox)
#cp -R /home/user/VirtualBox\ VMs/UbuntuServerMoodle_$tdate /home/user/vbox
#sleep 600

#Per tornar a arrencar una Màquina Virtual:
/usr/bin/VBoxManage startvm {7fa5f9a3-57e5-47ec-9dc0-8f81a78bd601}
sleep 4

#Enviem la informació dels fitxers generats a wiki.joanillo.org
ls -la VirtualBox\ VMs/UbuntuServerMoodle_$tdate > /home/user/lsUbuntuServerMoodle_$tdate.txt
scp /home/user/lsUbuntuServerMoodle_$tdate.txt joan@wiki.joanillo.org:/home/joan/lsUbuntuServerMoodle.txt

#necessari el codi d'èxit per tal que no es torni a executar el script si el poso en el crontab
exit 0

Feina per l'alumne


creat per Joan Quintana Compte, juny 2012

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines