前言
之前分享过使用 oVirt 部署私有虚拟化环境, oVirt 是基于 KVM 虚拟化开发了一系列的管理工具, 以 Web Console /CLI 的方式交付使用. 今天记录和分享的是在 VMware Workstation 中使用 Alpine 作为基础操作系统部署 xen 虚拟化环境的简单测试.
xen 基本概念
xen 可以理解为对标 kvm, 都是偏底层的虚拟化技术. 在此基础上进行开发的商业级应用可以对标 RHEV / oVirt 这样的产品, 例如:
-
Citrix XenServer

-
Oracle VM Server for x86

-
Huawei FusionSphere

xen中最基础的概念就是dom0, 可以理解为是oVirt中的Manager Node, 主要功能就是用来管理整个虚拟环境. 不过dom0是在创建xen环境时自动/必须启动的第一台VM, 貌似并不能像oVirt那样可以用另外一台物理机替代. 而后面再创建的所有其他虚拟机都称之为domU, 即一个domU可以理解为就是一台虚拟机:

xen vs KVM

部署 Dom0
首先下载包含了 xen 依赖的 Alpine ISO 镜像, 直接从清华大学镜像站下载就行, 文件不大, 分分钟搞定, 注意下载包含 xen 的版本:

在 VMware Station 中新建虚拟机, 安装程序光盘影响选择上面下载好的 ISO 文件, 客户机操作系统选择 其他 Linux 5.x 内核 64 位, 内存分配 1GB, 硬盘 20GB, 网络使用 桥接 (方便后面从本地 SSH 访问), 其他选项默认即可.
启动虚拟机后引导至 alpine 系统, 登陆账号输入 root, 没有密码直接进到系统中. 开始安装过程:
# 初始化 xen 安装
setup-xen-dom0
会有 xenqemu 服务报错的提示, 先不用管它:

继续标准安装过程, 根据提示完成设置即可.
setup-alpine
- Hostname 叫成
dom0 - 桥接
br0默认网卡eth1, IP 地址使用静态配置192.168.1.10/24 - 选择镜像站点时可以直接输入编号
14使用清华大学的服务器. - 不创建新用户
- 使用默认
openssh - Allow root ssh login?
yes(方便后面远程登陆) - 安装到磁盘
sda, 安装目的sys, 安装完成后会自动创建 3 个分区:sda1/bootsda2swapsda3/
标准安装结束后不要着急重启, 还需要额外单独安装两个包:
apk add xen-hypervisor bridge
reboot
首次重启后在出现引导菜单时注意手动切换到 Xen + Linux lts, 否则默认启动的 Linux lts 会报错:

这时就可以用 SSH 远程登陆, 使用安装时设置的密码登陆 root 账户, 继续下面操作:
# 启用 Alpine community repository
sed -i '3s/#//' /etc/apk/repositories
apk update
# 安装 xen vm 需要用到的 bios 固件
apk add seabios ovmf
# 修改默认引导菜单由 Linux lts 为 Xen + Linux lts
sed -ie '/MENU DEFAULT/d;/LABEL xen-lts/a \ \ MENU DEFAULT' /boot/extlinux.conf
部署 domU
下面操作仍在 dom0 虚机中进行
# 下载 virt 版本的 alpine 系统 ISO 镜像
wget https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/releases/x86_64/alpine-virt-3.18.0-x86_64.iso
# 挂载 ISO
mount -t iso9660 -o loop alpine-virt-3.18.0-x86_64.iso /media/cdrom
# 创建磁盘镜像
dd if=/dev/zero of=/root/a1.img bs=1M count=3000
# 创建配置文件
vi /etc/xen/a1.cfg
a1.cfg 内容:
# Kernel paths for install
kernel = "/media/cdrom/boot/vmlinuz-virt"
ramdisk = "/media/cdrom/boot/initramfs-virt"
extra="modules=loop,squashfs console=hvc0"
# Path to HDD and iso file
disk = [
'format=raw, vdev=xvda, access=w, target=/root/a1.img',
'format=raw, vdev=xvdc, access=r, devtype=cdrom, target=/root/alpine-virt-3.18.0-x86_64.iso'
]
# Network configuration
vif = ['bridge=br0']
# DomU settings
memory = 512
name = "alpine-dom1"
vcpus = 1
maxvcpus = 1
接下来就可以使用配置文件启动和初始化 domU, -c 参数可以直接连接到启动的 domU 控制台
xl create -f /etc/xen/a1.cfg -c
开头会提示:
libxl: info: libxl_create.c:122:libxl__domain_build_info_setdefault: qemu-xen is unavailable, using qemu-xen-traditional instead: No such file or directory
这是因为我们没有安装 qemu-xen 这个包, 所以使用了 qemu-xen-traditional 代替, 影响不大.
安装结束后会进入登陆界面, 注意 Kernel 6.1.27-2-virt on an x86_64 (/dev/hvc0), 这里的 /dev/hvc0 就是 xen 的 Hypervisor 对应的设备名称. 使用 root 账号登陆(没有密码)
# 标准化安装 alpine
setup-alpine
- 主机名
dom1 - IP
192.168.1.11/24 - Allow root ssh login?
yes - 安装磁盘
xvda, 安装模式sys - 其它选项与安装
dom0的时候一样
安装结束后 reboot 重启系统, 会自动断开当前 domU 的控制台连接, 回到 dom0 的控制台.
xen 常用命令
# 检查 xen 环境基本信息
xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 384 4 r----- 13.2
# 检查当前运行的 domX
xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 384 4 r----- 62.7
alpine-dom1 3 512 1 -b---- 4.1
# 连接到 alpine-dom1 ID=3 的控制台
xl console 3
# Ctrl + ] 可以退出当前控制台连接, 返回 dom0
# 查看所有 domain 资源占用状态
xentop
# 等同于
xl top
总结
以上只是 xen 虚拟化技术的简单尝试, 对于复杂的虚拟化网络, 存储, 权限等相关配置来说, 还有很深的技术需要挖掘了.
参考资料
Xen Project Beginners Guide
Xen Dom0
Create Alpine Linux PV DomU
xl - Xen management tool, based on libxenlight














