!!! VirtualBox 4.1.2
[{TableOfContents }]
\\I started looking at VirtualBox again, to assess it as a feasible low-cost virtualization solution.\\
I have been running my (2) servers on older laptops running in a closet at home. The laptops runs Ubuntu 8.04 (LTS) with an [OpenVZ|http://openvz.org] kernel.
Since this is getting rather old now (almost 4 years), and every now and then you want to have something new (the only difference between a man and a box is the price of his toy) and I had some (not disclosed) issues with backups, I thought let's see if VirtualBox is any good here.
!! My wishlist/requirements.
__1) - (recent) Ubuntu Guest OS__
I first had a look at the [http://openvz.org] site, but concluded that running a recent Ubuntu server is not a "default route".\\
Since my hardware also
__2) - Easy Full Server Backup (off site)__
vbox clonehd ?
__3) - Easy re-sizing of disk images__
vbox modifyhd resize ?...
__4) - Remote console access__
vrde stuff with extension packs....
__5) - No Graphical (X) server required__
VBoxHeadless...
__6) - Capable of running 5 guests__
2 is minimal required...
__7) - Misc management capabilites__
stats , NATing, live migration ?
__8) - No dependency on hardware virtualization capabilities__
!! Resources
* [VirtualBox Home|http://www.virtualbox.org]
* [Downloads|https://www.virtualbox.org/wiki/Downloads]
* [User Manual|https://www.virtualbox.org/manual/UserManual.html]
* [Command Syntax|https://www.virtualbox.org/manual/ch08.html#idp5741680]
!! The Journey
Installation is smooth, o my testbed btw is my HP Dual Core 2GB laptop with {{Linux Mint 12 Lisa}}.
So simple installation with synaptic.
\\But after a couple of hours you discover that you also need the [Extensions Pack|http://download.virtualbox.org/virtualbox/4.1.8/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack], simply download and Startup VirtualBox => File => Preferences => Extensions. I needed the extensions to get VRDE to work, so I could startup a VM from the cmdline (so without a GUI) and get a VRDP session with it (using vinagre as vrdp client)
\\So the GUI now works fine, and we play a bit with creating VMs (Ubuntu 11.10 server), cloning, snapshot's, and this all works fine.
__TIP: Use VM names without blanks__
! Creating and modifying a VM
After fiddling a bit, I found the following command was good to create a VM:\\
%%(background-color : #d3ee03 )VBoxManage createvm --name Ubuntu2 --ostype Linux --register %%
%%small
{{{
metskem@gneisenau ~ $ VBoxManage createvm --name Ubuntu2 --ostype Linux --register
Virtual machine 'Ubuntu2' is created and registered.
UUID: 9e527adc-ddc4-41b9-8b9e-9e730f8b49a1
Settings file: '/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2.vbox'
}}} %%
Let's see what the default attributes are after we have only created a VM, this is done with the {{showvminfo}} cmd: \\
%%(background-color : #d3ee03 )VBoxManage showvminfo Ubuntu2 %%
%%small
{{{
metskem@gneisenau ~ $ VBoxManage showvminfo Ubuntu2
Name: Ubuntu2
Guest OS: Other Linux
UUID: 949c6764-b229-462b-9175-57ac6e9976b8
Config file: /home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2.vbox
Snapshot folder: /home/metskem/VirtualBox VMs/Ubuntu2/Snapshots
Log folder: /home/metskem/VirtualBox VMs/Ubuntu2/Logs
Hardware UUID: 949c6764-b229-462b-9175-57ac6e9976b8
Memory size: 128MB
Page Fusion: off
VRAM size: 8MB
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: off
Time offset: 0 ms
RTC: local time
Hardw. virt.ext: on
Hardw. virt.ext exclusive: on
Nested Paging: on
Large Pages: off
VT-x VPID: on
State: powered off (since 2011-12-31T12:12:45.649000000)
Monitor count: 1
3D Acceleration: off
2D Video Acceleration: off
Teleporter Enabled: off
Teleporter Port: 0
Teleporter Address:
Teleporter Password:
NIC 1: MAC: 080027707CC7, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 2: disabled
NIC 3: disabled
NIC 4: disabled
NIC 5: disabled
NIC 6: disabled
NIC 7: disabled
NIC 8: disabled
Pointing Device: PS/2 Mouse
Keyboard Device: PS/2 Keyboard
UART 1: disabled
UART 2: disabled
Audio: disabled
Clipboard Mode: Bidirectional
VRDE: disabled
USB: disabled
USB Device Filters:
<none>
Available remote USB devices:
<none>
Currently Attached USB Devices:
<none>
Shared folders: <none>
VRDE Connection: not active
Clients so far: 0
Guest:
Configured memory balloon size: 0 MB
OS type: Linux
Additions run level: 0
Guest Facilities:
No active facilities.
}}}
%%
Before you start creating things, you have to think about ''"how do I ever clean up the mess I created? "'', so the question here is, how do I delete the VM again?
Well that can be done with the {{unregister}} subcommand:\\
%%(background-color : #d3ee03 )VBoxManage unregistervm Ubuntu2 --delete %%
%%small
{{{
%%(background-color : #d3ee03 )
}}}
%%
I use the --delete option to really get rid of everything including harddisks, saved states and log files, simply I don't want to find anything of it anymore. (I reran the {{createvm}} subcommand again after deleting is.)
Now we are happy with most of the default, but a few changes would be nice, so we go to the subcommand {{modifyvm}} :\\
%%(background-color : #d3ee03 ) VBoxManage modifyvm Ubuntu2 --memory=256 --hwvirtex=off --hwvirtexexcl=off --vtxvpid=off --boot1=dvd --boot2=disk --boot3=none --nic1=bridged --bridgeadapter1=wlan0 --nicpromisc1=allow-all --vrde=on --vrdeport=13389 %%
%%small
{{{
VBoxManage modifyvm Ubuntu2 --memory=256 --hwvirtex=off --hwvirtexexcl=off --vtxvpid=off --boot1=dvd --boot2=disk --boot3=none --nic1=bridged --bridgeadapter1=wlan0 --nicpromisc1=allow-all --vrde=on --vrdeport=13389
}}}
%%
The {{modifyvm}} subcommand gives no output if it succeeds, if you want to see the result, issue the {{showvminfo}} command again.
! Creating and attaching storage devices
Now before we can boot the thing, we need a bootable ISO image, and a harddisk that can be used for installation.
I downloaded an Ubuntu 11.10 ISO in {{/home/metskem/iso/ubuntu-11.10-server-i386.iso}}.
First we have to define 2 controllers :
%%(background-color : #d3ee03 ) VBoxManage storagectl Ubuntu2 --name='IDE Controller' --add=ide --controller=PIIX4 --bootable=on %% \\
%%(background-color : #d3ee03 ) VBoxManage storagectl Ubuntu2 --name='SATA Controller' --add=sata --controller=IntelAhci --bootable=on
%%
The result with {{showvminfo}} :
%%small
{{{
metskem@gneisenau ~ $ VBoxManage showvminfo Ubuntu2|grep Storage
Storage Controller Name (0): IDE Controller
Storage Controller Type (0): PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0): 2
Storage Controller Port Count (0): 2
Storage Controller Bootable (0): on
Storage Controller Name (1): SATA Controller
Storage Controller Type (1): IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1): 30
Storage Controller Port Count (1): 30
Storage Controller Bootable (1): on
}}}
%%
Now let us attach the ISO image as a DVD drive with the {{storageattach}} subcommand:\\
%%(background-color : #d3ee03 ) VBoxManage storageattach Ubuntu2 --storagectl='IDE Controller' --port=1 --device=1 --type=dvddrive --medium=/home/metskem/iso/ubuntu-11.10-server-i386.iso %%
And also this can be listed, this time with the {{list}} subcommand: \\
%%(background-color : #d3ee03 ) VBoxManage list dvds %%
%%small
{{{
metskem@gneisenau ~ $ VBoxManage list dvds
UUID: 32feb261-654c-4562-8115-7b25e5aff798
Format: RAW
Location: /home/metskem/iso/ubuntu-11.10-server-i386.iso
State: created
Type: readonly
Usage: Ubuntu2 (UUID: df6e7d7d-3e48-43f9-8358-126a89428fe3)
}}}
%%
And now the hard disk, but we first have to create a hard disk, that can be done with the {{createhd}} subcommand: \\
%%(background-color : #d3ee03 ) VBoxManage createhd --filename '/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi' --size=5000 %%
%%small
{{{
metskem@gneisenau ~ $ VBoxManage createhd --filename '/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi' --size=5000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: daeb6941-e194-47ab-99a3-af74700b7e99
}}}
%%
Watch out, this hdd is not yet "registered" with VirtualBox, you first have to attach it to a VM with the {{storageattach}} subcommand:\\
%%(background-color : #d3ee03 ) VBoxManage storageattach Ubuntu2 --storagectl='SATA Controller' --port=1 --device=0 --type=hdd --medium='/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi' %%
This command gives no output if it succeeds. You can now list the available hdds with the {{list}} subcommand:
%%small
{{{
metskem@gneisenau ~ $ VBoxManage list hdds
UUID: daeb6941-e194-47ab-99a3-af74700b7e99
Parent UUID: base
Format: VDI
Location: /home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi
State: created
Type: normal
Usage: Ubuntu2 (UUID: df6e7d7d-3e48-43f9-8358-126a89428fe3)
}}}
%%
! Starting the thing
Now everything looks ready for the first boot, so use the {{startvm}} subcommand to boot : \\
%%(background-color : #d3ee03 )VBoxManage startvm Ubuntu2 --type=headless %%
%%small
{{{
metskem@gneisenau ~ $ VBoxManage startvm Ubuntu2 --type=headless
Waiting for VM "Ubuntu2" to power on...
VM "Ubuntu2" has been successfully started.
}}}
%%
Now to get the console, you have to use an RDP client (I used vinagre), and connect to localhost:13389, you should see a console with an Ubuntu LiveCD booting. %%small (I had the issue that my screen was larger than the window...but this was a normal Ubuntu install and I accepted all defaults) %%
!! Backing up the VM
!! Resizing HD
!! Misc..
!! Summary of commands
<summarize all handy VBoxManage cmds here........>