在 NetBSD 上安装和配置 Xen

到目前为止,VPSee 已经陆续介绍了:在 CentOS 上安装和配置 Xen在 Ubuntu 上安装和配置 Xen在 Debian 上安装和配置 Xen在 OpenSolaris 上安装和配置 Xen,加上这篇 “在 NetBSD 上安装和配置 Xen” 就完整了,这是我们目前所有应用在生产环境的 Xen 系统。有人可能会问为什么要用这么多种系统?管理起来不是更复杂吗?其实没想像的那么复杂,我们实验室应用的虚拟机生产环境和我们销售的 VPS 不同,因为可以不考虑成本,所以采用了昂贵的存储设备,虚拟机都是存储在专门的 iSCSI 存储系统上,Xen 服务器只不过是一个 node 用来连接和启动存储网络上的虚拟机镜像,所以使用什么系统做 node 不是很重要,事实上 NetBSD 是这几个系统里面最容易配置和安装的系统,没有 trouble shooting,没有 work around,安装即成功,非常的赞!以下操作在 NetBSD 5.0.2 上完成。

安装 Xen

在 NetBSD 上使用 pkg_add 来安装软件包,相当于 CentOS/Fedora 的 yum 和 Ubuntu/Debian 的 apt-get,如果在公司或者学校使用代理上网的话需要先配置代理服务器:

# vi .kshrc
...
PKG_PATH=http://ftp.us.netbsd.org/pub/pkgsrc/packages/NetBSD/ \
amd64/5.0.2_2010Q3/All

export HTTP_PROXY=http://username:[email protected]:3128/
export FTP_PROXY=http://username:[email protected]:3128/

安装 xen hypervisor 和 xen tools:

# pkg_add -v xenkernel33
# pkg_add -v python26
# pkg_add -v xentools33
# pkg_add -v e2fsprogs

在上面的步骤安装 xentools33 的是后屏幕会打印提示需要从 /usr/pkg/share/examples/rc.d/ 拷贝一些配置文件到 /etc/rc.d 以便开机启动后自动运行:

# cd /etc/rc.d
# cp /usr/pkg/share/examples/rc.d/xendomains .
# cp /usr/pkg/share/examples/rc.d/xend .
# cp /usr/pkg/share/examples/rc.d/xenbackendd .

# vi /etc/rc.conf
...
xend=yes
xenbackendd=yes
xendomains=yes

确定 xend 需要的 xen 设备存在(没有的话创建一个):

# cd /dev && sh MAKEDEV xen

把上面安装的 Xen Hypervisor (xen.gz) 拷贝到根目录下 /:

# cp /usr/pkg/xen3-kernel/xen.gz /

下载和安装 Xen dom0 kernel:

# cd /
# wget http://ftp.us.netbsd.org/pub/NetBSD/NetBSD-5.0.2/amd64/ \
binary/kernel/netbsd-XEN3_DOM0.gz
# gunzip netbsd-XEN3_DOM0.gz

配置 NetBSD 开机引导,比 Linux 的 Grub 和 LILO 都简单多了:

# vi /boot.cfg
...
menu=NetBSD/XEN:load /netbsd-XEN3_DOM0;multiboot /xen.gz dom0_mem=64M
installboot -v -o timeout=5 /dev/rwd0a /usr/mdec/bootxx_ffsv1

配置 bridge:

# vi /etc/ifconfig.bridge0
create
!brconfig $int add re0 up

重启系统,选择 NetBSD/Xen 内核登陆,登陆后用 xm 检查 xen 是否正常运行:

# shutdown -r now

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0    64     1     r-----     18.5

安装虚拟机

先做个连接,方便以后使用:

# ln -sf /usr/pkg/etc/xen/ xen

在 NetBSD 上没有 xen-create-image, virt-install 等工具,而且没有 lvm,文件系统又不同,所以要创建 Linux 虚拟机(domU)比较麻烦,这里 VPSee 直接从另外一台 Linux Xen 服务器上拷贝一个虚拟机镜像(模版)过来运行,只需要编辑 debian.cfg 配置文件就可以了:

# vi /etc/xen/debian.cfg
bootloader = "/usr/pkg/bin/pygrub"
memory = 128
name = "debian"
vif = [ 'bridge=bridge0' ]
disk = ['file:/home/vpsee/debian.img,sda1,w']
root = "/dev/sda1"
extra = "fastboot"
extra = "xencons=tty1"

启动和查看 debian 虚拟机:

# xm create debian.cfg

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0    64     1     r-----   4764.1
debian                                      10   128     1     ------      6.6

评论 (4 Comments)

  1. 看到你介绍了这么多种 xen 的平台,有一个比较 newbie 的问题请教一下:是不是 ubuntu 的 host 只能安装 ubuntu 的 guest,debian 的 host 只能安装 debian 的 guest?即使 ubuntu 跟 debian 两者非常接近也不能混用?另外如果不能混用的话,那 64 的 host 能不能上 32 的 guest?

  2. 不是,ubuntu host 能装所有 guest,同样的 debian host 也能装任意 guest,甚至 netbsd 也能装任意 guest,xen 和 vmware/virtualbox 一样能任意装不同的操作系统,当然64位 host 也可以装32位或64位 guest.

  3. Hi,

    我的服务器有2张网卡,eth0是一个机房的内部网络,eth1连着公网,有几个IP地址,分别是 eth1:1 eth1:2之类的。
    现在出现了一个比较大的问题,我不知道如何把公网ip分配给domu。

    domU可以启动,但是用 xm console 进去之后,发现 domU 的 eth0 分配的是内网ip,似乎走的是virbr0,而不是xenbr1

    (我没有xenbr0只有xenbr1, virbr0是xen分配的内部IP)

    不知您能否给我提供一些帮助,谢谢您。

  4. have you ever encounter this problem?

    NetBSD-5# xm list
    /usr/pkg/lib/python2.6/
    xmlrpclib.py:612: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead.
    import xmllib # lazy subclassing (!)
    Name ID Mem VCPUs State Time(s)
    Domain-0 0 256 1 r—– 193.0

    how to get rid of the warning message, although it’s harmless
    My dom0 is netbsd-5.1 stable, xen 3.3.2

发表评论