前言
之前分享过使用 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
/bootsda2
swapsda3
/
标准安装结束后不要着急重启, 还需要额外单独安装两个包:
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