Xen 可以在 Linux 上虚拟各种 Linux 系统,使用 HVM 方式还可以虚拟 Window,可以充分利用计算资源,特别是对于服务器。
安装 Xen(dom0)对于 Debian 6.0 可以直接 apt-get 安装:
apt-get install xen-linux-system
会自动地安装 hypervisor, xen aware kernel 和 xen tools 组件。
如果使用 img 加载虚拟机,还需要修改 loop 设备的数量为最大(如果使用 LVM 方式的虚拟机,就不需要改了,不过一般简单的虚拟机还是用 img 方式)
修改方式为打开 /etc/modules 文件,将其中 loop 那一行改为
loop max_loop=64
就可以了。
然后修改网络连接方式为桥接,编辑文件 /etc/xen/xend-config.sxp 找到
(vif-script vif-bridge)
这一行,在这一行的上边一行添加
(network-script 'network-bridge antispoof=yes')
特别注意是不是出现了重复的配置(默认的安装没有上面这一行的)。
接下来修改启动方式为 Xen hypervisor
mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2
看到完成后重启系统:
reboot
再次进入系统,看看是不是 Xen 的内核:
uname -r
如果回显的文字里面包含 xen,说明内核是 Xen 的。然后看看 hypervisor 是否正常:
xm dmesg
如果显示
WARNING! Can't find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is
xend running?
说明没运行,查看 grub2 是不是配置正确。
上面的全部正常后,就完成了 Xen 的安装。运行
xm list
可以查看正在运行的 domain,目前只运行了 dom0,也就是本机的系统,还没有其它的虚拟机。
建立虚拟机(domU)安装 Linux 可以使用半虚拟化方式,效率比较高。Windows 只能用全虚拟化方式。
半虚拟化方式先编辑文件 /etc/xen-tools/xen-tools.conf,修改相应的配置
dir = /home/xen
passwd = 1
serial_device = hvc0 #default
disk_device = xvda #default
然后建立 /home/xen 目录:
mkdir /home/xen
新建虚拟机的时候就可以使用 xen-create-image 来建立。
要安装和 dom0 一样的发行版,使用
xen-create-image --hostname=xen.dom1 --size=10Gb --swap=256Mb --ip=192.168.1.2 --memory=256Mb --arch=amd64 --role=udev
注意其中的 hostname,ip 要相应修改,arch=amd64 安装 64-bit 操作系统,如果要安装 32-bit 的就使用 arch=i386 代替。
要安装其它的发行版,比如 Ubuntu(xen-tools 的 xen-create-image 似乎就支持 Debian,Ubuntu 和 CentOS)
xen-create-image --hostname=xen.dom1 --size=10Gb --swap=256Mb --ip=192.168.1.2 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu
安装通过网络方式,因此会根据网络连接的速度很快或很慢。而且没有进度条,耐心等待吧。
全虚拟化(HVM)方式全虚拟化的方式可以安装 Linux 和 Windows,通过 VNC 来打开图形界面,因此可以 GUI 安装,不需要使用 xen-create-image 建立。
这种方式需要 CPU 支持虚拟化指令,并且在 CMOS 设置中打开虚拟化支持。
安装
apt-get install xen-qemu-dm
然后建立磁盘 img
mkdir /home/xen/domains/w1
dd if=/dev/zero of=/home/xen/domains/w1/disk.img bs=1M
count=8192
里面的 count=8192 就是建立一个 8G 的文件。
之后建立配置文件 /etc/xen/w1.cfg 内容为
kernel = '/usr/lib/xen-4.0/boot/hvmloader'
builder = 'hvm'
memory = '256'
device_model='qemu-dm'
# Disks
disk = [ 'file:/home/xen/domains/w1/disk.img,ioemu:hda,w',
'file:/home/xen/isos/w-system.iso,ioemu:hdc:cdrom,r' ]
# Hostname
name='w1'
# Networking
vif = ['bridge=eth0']
# Behaviour
boot='d'
vnc=1
vncviewer=1
serial='pty'
vnclisten=""
vncpasswd=""
usbdevice='tablet'
sdl=0
里面的 vnclisten,vncpasswd,name,file:/home/xen/isos/w-system.iso 之类的可以根据需要修改。
然后启动虚拟机
xm create w1.cfg
一切正常的话,可以通过 VNCViewer(比如 TightVNC 等)连接 ip:5900 (5900 如果被占用,就是 5901,以此类推)看到图形界面了。
运行虚拟机启动可以用 xm create xen.dom1.cfg 关机可以用 xm shutdown xen.dom1 注意其中的 xen.dom1 是 xen-create-image 里面的 hostname,需要根据情况修改。
进入 xen.dom1 虚拟机的控制台用 xm console xen.dom1 退出控制台用 Ctrl+] 快捷键。
如果要虚拟机自动随着 dom0 启动,需要做一个符号链接
mkdir /etc/xen/auto
ln -s /etc/xen/xen.dom1.cfg /etc/xen/auto
不需要的时候就把符号链接删除。
查看正在运行的虚拟机,使用 xm list,里面会列出详细的信息。