使用virtualbox轻松实现服务器虚拟化[译]

现在市面上有很多种虚拟化解决方案,商业化或开源的,小公司到大企业。

本中文我将会描述,如何通过VirtualBox在基于Debian的服务器上安装一个无图形化界面的虚拟化服务,并托管多个其他基于Debian的服务器[译者注,实际上VirtualBox支持的系统很多,包括Windows]。我们将使用phpVirtualBox来管理Virtualbox,它是一个开源的,用ajax实现的VirtualBox用户界面,用PHP写成(PHP是最好的语言?)。

1) 物理服务器配备 我们选了一台 I7 的服务器,32G内存,2块1T的系统盘,4块数据盘用来存储虚拟机镜像文件。

1) 安装基本系统 我们就使用Debian 最新测试版(jessie)的默认安装就可以了,不需要图形界面,只需要一个SSH服务就可以了。注意选择配置磁盘的使用,我们选了软RAID(RAID1)来管理系统盘和数据盘。

2) 安装VirtualBox 你可以在这里下载VirtualBox https://www.virtualbox.org/wiki/Linux_Downloads。因为没有给 jessie (就是Debian Testing) 用的deb包,我们就选了给 wheezy(Debian 7)的(virtualbox-4.3_4.3.6-91406~Debian~wheezy_amd64.deb),安装很简单

sudo dpkg -i virtualbox-4.3_4.3.6-91406~Debian~wheezy_amd64.deb

3) 安装vboxweb-service

默认的VirtualBox安装是不允许vboxweb-service 启动的,但是我们的phpVitualbox需要用到这个服务。

首先我们新建一个系统用户,叫vbox

sudo useradd -m vbox
sudo passwd vbox

创建文件 /etc/default/virtualbox ,并加上这一行

VBOXWEB_USER=vbox #注意这里是刚才你创建的用户,如果不是vbox请替换成正确的

这样 VirtualBox 的 SOAP API 就会以 vbox 这个用户运行。

运行下面的命令让vboxweb-service随系统启动,并启动它。

sudo update-rc.d vboxweb-service defaults
sudo /etc/init.d/vboxweb-service start

你也可以安装一下 Oracle 的扩展包 就可以通过RDP协议(就是windows远程桌面用的协议)访问虚拟机的终端啦。扩展包还是从这个地址下载, https://www.virtualbox.org/wiki/Downloads。比如我下载的是 Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack,就这样安装

sudo VBoxManage extpack install  Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack

4) 安装phpVirtualBOX

先安装依赖包(注意,目的是安装一个带php的web环境,如果你用nginx也是可以的)

sudo apt-get install apache2  apache2-utils apache2.2-bin apache2 apache2-doc apache2-suexec libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libapr1 php5-common php5-mysql  php-pear wget

从这里下载phpVirtualBox的安装包, http://sourceforge.net/projects/phpvirtualbox/ ,比如 phpvirtualbox-4.3-1.zip。 因为我们这台服务器上没有托管其他网站,我们可以把 /var/www/html 目录清空,并把phpVirtualBOx解压到这里

cd /var/www/html
cp config.php-example config.php
vi config.php

修改下面的内容,

var $username = ‘vbox'; #这个是上面你创建的用户
var $password = ‘thePasswordYouUsed'; #这是那个用户的密码

现在在浏览器中访问 http://服务器ip/ 应该就可以看到界面了,默认的用户名和密码都是 admin。 登陆以后可以点击 File > Change Password 修改密码

5)添加虚拟机镜像,并设置开机自启

这里你既可以创建一个新的虚拟机,也可以导入已有的。我已经有好几个导出成OVA格式的虚拟机镜像了,所以可以很方便的通过phpVirtualBox导入。注意我们选择的网络类型是 bridged network (桥接) ,为了开始远程显示,我们可以这么设置

Image

设置虚拟机的开机自启是这样的 在 /etc/defaults/virtualbox 下面追加两行

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.conf

然后修改权限

sudo chgrp vbox /etc/vbox
sudo chmod 1775 /etc/vbox

编辑 /etc/vbox/autostart.conf 包含下列内容

# Default policy is to deny starting a VM, the other option is “allow”.
default_policy = deny
# user vbox is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
#注意这里的vbox是你之前创建的用户
vbox = {
allow = true
startup_delay = 10
}

以 vbox 用户的身份,设置自启动数据路径

VBoxManage setproperty autostartdbpath /etc/vbox

同样以 vbox 用户的身份,设置你要自启动的虚拟机

VBoxManage modifyvm 虚拟机名称 --autostart-enabled on

运行之后,在/etc/vbox 路径下你应该会看到一个 名为 vbox.start 的文件

重启 vboxautostart-service 服务

service vboxautostart-service stop
service vboxautostart-service start

来源:http://blog.datascouting.com/?p=158

22,069 views, since 2014-12-31