博文目录:
1. Xen的安装编译
2. 创建半虚拟化Guest OS
3. 创建全虚拟化Windows Guest OS
4. 创建全虚拟化Linux Guest OS
创建半虚拟化GuestOS
上一篇博客主要介绍了在ubuntu下如何安装和编译Xen,接下来开始正式使用Xen了。
l 概念理解
因为这段时间要做的工作是在虚拟机中实现自动添加设备和前后端驱动,所以对Xen中半虚拟化架构和分离设备驱动模型进行了调研:
Xen的半虚拟化设备架构采用前后端分离的设备驱动结构。虚拟设备驱动包含两个部分:domU中的前段设备驱动(fronted)和dom0中的后端设备驱动。后端设备驱动可以访问真实的硬件设备。
前端设备驱动从Guest OS接收io请求,然后将io请求转发到后端,而后端接收到前端转发的设备请求后,检查请求是否合法,然后通过本地的设备驱动访问真实的硬件设备。Io完成后,后端设备驱动通知前端设备驱动已经准备就绪,然后前端驱动向Guest OS报告io操作完成。
在Xen的半虚拟化架构中,同样需要一种机制来发现设备,连接设备和驱动,自动匹配设备和驱动。而且和linux不同的是,因为前端设备和后端设备是联动的关系,当某一方设备变动的时候,还必须通知另一方设备的变动情况。为了完成这个工作,xen提供了一条虚拟总线xenbus来管理所有的虚拟设备和驱动。Xen系统的所有虚拟设备都要注册到xenbus。Pci总线也是作为一个设备注册到xenbus ,通过注册的pci总线,执行扫描动作可以产生所有的pci设备。而所有的虚拟驱动也都要注册到xenbus,从而可以自动完成虚拟设备和驱动的匹配。
l 使用xen-tools(半虚拟化管理工具)安装虚拟机
① 安装xen-tools:apt-get install -y xen-tools
② 需要安装修改过的,支持半虚拟化的内核,此处使用host kernel。在/boot下的:
vmlinuz-3.19.0-30-generic initrd,img-3.19.0-30-generic
(我的系统内核是Linux3.19.0-30)
③ 修改xen-tools的配置文件,配置文件中的值只在创建实例过程中没有指定某个选项时提供默认值:/etc/xen-tools/xen-tools.conf
需要修改如下项:
[...]
dir=/home/xen #用于放置img文件的位置
[注]:修改好xen-tools.conf后,就需要创建刚才指定的放置img文件的目录位置:
# mkdir /home/xen
[...]
#指定实例的系统版本,xt-guess-suite-and-mirror --suite返回的是宿主机的系统版本
dist=`xt-guess-suite-and-mirror --suite`
[...]
# 指定实例所在网段
gateway =192.168.0.1
netmask =255.255.255.0
broadcast=192.168.0.255
[...]
# 指定实例使用的kernel,这里就使用之前安装的、支持半虚拟化的kernel
kernel= /boot/vmlinuz-3.0.0-12-virtual
initrd=/boot/initrd.img-3.0.0-12-virtual
[...]
④ 开始创建实例:
# xen-create-image --hostname=ubuntu.example.com --size=4G --swap=1G --memory=1G --ip=192.168.0.101 --arch=amd64 --role=udev(不要忘记角色)
⑤ 创建完成后,会在之前指定的目录中生成img文件,作为虚拟机实例的存储,并在/etc/xen下生成.cfg文件,作为虚拟机实例启动的配置文件。
⑥ 通过xl命令启动实例:
Xl create ubuntu.example.com.cfg -c
创建的虚拟机需要通过用户名(root)、密码登录,在配置文件(/var/log/xen-tools/ubuntu.example.com.log)里可查看密码。