User Tools

Site Tools


virtualbox

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
virtualbox [2010/05/22 14:19] – external edit 127.0.0.1virtualbox [2011/06/03 13:03] aorth
Line 1: Line 1:
-===== VirtualBox ===== +====== VirtualBox ====== 
-VirtualBox is a free/opensource Hypervisor from Sun Microsystems.  It has performance on par with VMware and is very mature.  We have two virtualization servers, [[biovbox]] and biovboxtesting.+VirtualBox is a free, open-source hypervisor from Oracle.  It has performance on par with VMware and is very mature.  We have two virtualization servers which run VirtualBox on top of CentOS, [[biovbox]] and biovboxtest.
  
   * [[http://www.virtualbox.org|VirtualBox homepage]]   * [[http://www.virtualbox.org|VirtualBox homepage]]
-===== Create a VM ===== +  * [[http://ubuntuforums.org/showthread.php?t=646613|Tips to optimize Linux guests and hosts]] 
-Copy an ISO to your home directory: + 
-<code>$scp ubuntu-9.04-desktop-i386.iso alan@172.26.0.200:~/</code> +====== Tips ====== 
-  * SSH to VM server172.26.0.200 +===== Optimal settings for Linux guests ===== 
-<code>$ ssh alan@172.26.0.200</code> +Guest operating systems are not like host operating systems These settings are generally regarded as improving the performance of guest virtual machines. 
-  * start the virtualbox application + 
-<code>VirtualBox</code> +  * Set the IO scheduler to ''noop''
-  * Follow the wizard to create VM with the following properties: +    * Edit the grub command line to set the default IO scheduler, usually in ///etc/default/grub//: ''elevator=noop'' 
-      Base Memoryless than 512 MB +  * Install guest additions (VirtualBox or VMware) 
-      - Network NAT +  * Run virtual machine-specific kernel
-      Hard disk size: less than 30Gb+    * Ubuntulinux-image-virtual 
 +  * Mount filesystems with ''noatime'' in ///etc/fstab//
  
 ===== Networking ===== ===== Networking =====
Line 31: Line 32:
 Then you can log in to the VM from your own computer using the port you've forwarded above: Then you can log in to the VM from your own computer using the port you've forwarded above:
 <code>$ ssh -p 2223 username@172.26.0.200</code> <code>$ ssh -p 2223 username@172.26.0.200</code>
-===== Updating VirtualBox ===== 
-To update VirtualBox to a new version you must shutdown all the running VMs.  You can do this by first looking to see which VMs are running (''ps auxw | grep VBox'') and then shutting down or saving the state of each one. 
-<file>[jmagochi@biovbox ~]$ VBoxManage controlvm CentOS savestate 
-VirtualBox Command Line Management Interface Version 3.0.8 
-(C) 2005-2009 Sun Microsystems, Inc. 
-All rights reserved. 
- 
-0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 
-[jmagochi@biovbox ~]$ sudo /etc/init.d/vboxdrv stop 
  
-$ yum install virtualbox-3.1 
-</file> 
 ===== Commonly-used commands ===== ===== Commonly-used commands =====
 ==== List your VMs ==== ==== List your VMs ====
Line 48: Line 38:
 ==== List your running VMs ==== ==== List your running VMs ====
 <code>$ VBoxManage list runningvms </code> <code>$ VBoxManage list runningvms </code>
-==== Autostart VMs at host boot ==== 
----- 
- 
-How do I get my VirtualBox Guest VM’s to start and stop when the host system reboots, shutdown, or starts. 
- 
-Solution / Answer: 
- 
-Create an init.d script so that VirtualBox Guest VM are controlled as a system service. 
-VBoxTool http://vboxtool.sourceforge.net 
- 
-http://www.kernelhardware.org/virtualbox-auto-start-vm-centos-fedora-redhat 
- 
----- 
-Create Config File for vboxcontrol service script 
- 
-<code># mkdir /etc/virtualbox</code 
-<code># touch /etc/virtualbox/machines_enabled</code> 
-The file “machines_enabled” located in “/etc/virtualbox” is where we list the names of the Guest VM’s that we want vboxcontrol to control. 
- 
-To get a list of your current Guest VM names execute the following command and notice the name is in ” “: 
-<file> 
-$ VBoxManage list vms 
-"Centos_HDLES_x86_1" {5087b02a-5816-4c76-b302-c13175623023} 
-"Centos_HDLES_x86_3" {bcae660a-f627-46d6-8c95-9da97363eeea} 
-"Centos_HDLES_LAMP" {3907173c-cc15-4820-a930-f0bb3c13cb7e}</file> 
-Add Guest VM’s to “machines_enabled” include one VM name per line 
-<file> 
-# vi /etc/virtualbox/machines_enabled 
-Centos_HDLES_x86_1 
-Centos_HDLES_x86_3 
-Centos_HDLES_LAMP</file> 
-Add VirtualBox VM Service script 
- 
-Create new init.d service script file and give execute permissions 
- 
-<code># touch /etc/init.d/vboxcontrol</code> 
-<code># chmod 755 /etc/init.d/vboxcontrol</code> 
-Copy the following code into file “/etc/init.d/vboxcontrol” 
- 
-<code bash> 
-#! /bin/sh 
-# vboxcontrol   Startup script for VirtualBox Virtual Machines 
-# 
-# chkconfig: 345 98 02 
-# description: Manages VirtualBox VMs 
-# processname: vboxcontrol 
-# 
-# pidfile: /var/run/vboxcontrol/vboxcontrol.pid 
-# 
-### BEGIN INIT INFO 
-# 
-### END INIT INFO 
-# 
-# Version 20090301 by Kevin Swanson <kswan.info> based on: 
-# Version 2008051100 by Jochem Kossen <jochem.kossen@gmail.com> 
-# http://farfewertoes.com 
-# 
-# Released in the public domain 
-# 
-# This file came with a README file containing the instructions on how 
-# to use this script. 
-# 
- 
-# Source function library. 
-if [ -f /etc/init.d/functions ] ; then 
-. /etc/init.d/functions 
-elif [ -f /etc/rc.d/init.d/functions ] ; then 
-. /etc/rc.d/init.d/functions 
-else 
-exit 1 
-fi 
- 
-################################################################################ 
-# INITIAL CONFIGURATION 
-VBOXDIR="/etc/virtualbox" 
-VM_USER="vmadmin" 
-USE_NAT="no" 
- 
-export PATH="${PATH:+$PATH:}/bin:/usr/bin:/usr/sbin:/sbin" 
- 
-if [ -f $VBOXDIR/config ]; then 
-. $VBOXDIR/config 
-fi 
- 
-SU="su $VM_USER -c" 
-VBOXMANAGE="VBoxManage -nologo" 
- 
-################################################################################ 
-# FUNCTIONS 
- 
-# Determine if USE_NAT is set to "yes" 
-use_nat() { 
-if [ "$USE_NAT" = "yes" ]; then 
-return `true` 
-else 
-return `false` 
-fi 
-} 
- 
-log_failure_msg() { 
-echo $1 
-} 
- 
-log_action_msg() { 
-echo $1 
-} 
- 
-# Check for running machines every few seconds; return when all machines are 
-# down 
-wait_for_closing_machines() { 
-RUNNING_MACHINES=`$SU "$VBOXMANAGE list runningvms" | wc -l` 
-if [ $RUNNING_MACHINES != 0 ]; then 
-sleep 5 
-wait_for_closing_machines 
-fi 
-} 
- 
-################################################################################ 
-# RUN 
-case "$1" in 
-start) 
-if [ -f /etc/virtualbox/machines_enabled ]; then 
- 
-cat /etc/virtualbox/machines_enabled | while read VM; do 
-log_action_msg "Starting VM: $VM ..." 
-$SU "$VBOXMANAGE startvm "$VM" -type vrdp" 
-RETVAL=$? 
-done 
-touch /var/lock/subsys/vboxcontrol 
-fi 
-;; 
-stop) 
-# NOTE: this stops all running VM's. Not just the ones listed in the 
-# config 
-$SU "$VBOXMANAGE list runningvms" | while read VM; do 
-log_action_msg "Shutting down VM: $VM ..." 
-$SU "$VBOXMANAGE controlvm "$VM" acpipowerbutton" 
-done 
-rm -f /var/lock/subsys/vboxcontrol 
-wait_for_closing_machines 
- 
-;; 
-start-vm) 
-log_action_msg "Starting VM: $2 ..." 
-$SU "$VBOXMANAGE startvm "$2" -type vrdp" 
-;; 
-stop-vm) 
-log_action_msg "Stopping VM: $2 ..." 
-$SU "$VBOXMANAGE controlvm "$2" acpipowerbutton" 
-;; 
-poweroff-vm) 
-log_action_msg "Powering off VM: $2 ..." 
-$SU "$VBOXMANAGE controlvm "$2" poweroff" 
-;; 
-status) 
-echo "The following virtual machines are currently running:" 
-$SU "$VBOXMANAGE list runningvms" | while read VM; do 
-echo -n "$VM (" 
-echo -n `$SU "VBoxManage showvminfo ${VM%% *}|grep Name:|sed -e 's/^Name:s*//g'"` 
-echo ')' 
-done 
-;; 
-*) 
-echo "Usage: $0 {start|stop|status|start-vm <VM 
-name>|stop-vm <VM name>|poweroff-vm <VM name>}" 
-exit 3 
-esac 
- 
-exit 0 
-</code> 
-Add vboxcontrol service to chkconfig registry 
- 
-<code># chkconfig --add vboxcontrol</code> 
-Tell chkconfig to create symlinks for runlevels and activate service vboxcontrol 
- 
-<code># chkconfig vboxcontrol on</code> 
  
 +===== Updating VirtualBox =====
 +=== Stop any running VMs ===
 +Either shut down or "save state" for any running VMs.  First, find any users who have "headless" VMs:
 +<code># ps aux | grep -i VBoxHeadless
 +jmagochi  4939  3.9  3.5 759372 72268 ?        Sl   Oct05 402:13 /usr/lib/virtualbox/VBoxHeadless -s nobu
 +jmagochi  4991 12.5  3.2 621588 67632 ?        Sl   Oct05 1281:41 /usr/lib/virtualbox/VBoxHeadless -s lims
 +aorth    18431  9.7  1.7 998940 36160 ?        Sl   Oct11 129:54 /usr/lib/virtualbox/VBoxHeadless -s b0237553-9653-4461-bd0e-d4d316c16d4f -v off</code>
 +As the user who owns the VM, save the VM's state:
  
 +<code># su - jmagochi
 +$ VBoxManage controlvm nobu savestate
 +$ VBoxManage controlvm lims savestate
 +$ exit
 +# su - aorth
 +$ VBoxManage controlvm b0237553-9653-4461-bd0e-d4d316c16d4f savestate
 +$ exit</code>
 +=== Update VirtualBox ===
 +<code># yum update VirtualBox-3.2</code>
 +=== Resume VMs ===
 +<code># su - jmagochi
 +$ VBoxHeadless -s nobu &
 +$ VBoxHeadless -s lims &
 +$ exit
 +# su - aorth
 +$ VBoxHeadless -s b0237553-9653-4461-bd0e-d4d316c16d4f -v off &</code>