XCP-ng是Citrix Hypervisor(原XenServer)的开源分支,由Vates公司主导维护,其核心仍基于成熟的Xen虚拟机监视器。它把企业级虚拟化能力免费开放给社区,去掉了原商业版的功能锁与授权验证,同时集成了Xen Orchestra这一Web端编排组件,用来统一管理多台宿主机与虚拟机生命周期。

在硬件选型上,XCP-ng对Intel与AMD的虚拟化扩展指令集都有良好支持,建议开启BIOS中的VT-x或AMD-V以及VT-d/IOMMU以便做设备直通。内存方面,每台宿主机至少预留4GB给控制域dom0,其余可按虚拟机密度灵活分配。网络最好准备两块以上物理网卡,一块专供管理流量,另一块走业务与存储流量,降低拥塞风险。
很多刚接触的人会混淆XCP-ng与Xen的关系:Xen是底层hypervisor,负责CPU与内存的隔离调度;XCP-ng则是把Xen、Linux控制域、存储栈与API层打包成的完整发行版。理解这一点,才能在后续编排时清楚哪些操作是内核级、哪些只是控制面配置。
一、安装XCP-ng宿主机
最便捷的方式是从官网获取ISO镜像,通过BalenaEtcher写入U盘后引导物理服务器。安装界面沿用了原XenServer的风格,先选择键盘与时区,再指定系统盘。需要注意的是,安装程序会清空所选磁盘并创建默认分区,若服务器已有数据务必提前备份。
安装完成后,控制台会显示宿主机IP与Xen Orchestra的接入提示。此时可通过浏览器访问该IP的80端口,页面会自动跳转到Xen Orchestra Lite,或者另外部署完整的Xen Orchestra虚拟机来集中管理。对于单机环境,Lite版已能完成基础开关机与控制台查看。
二、Xen Orchestra的部署与初始化
Xen Orchestra(简称XO)是XCP-ng生态里的编排中枢,它用Node.js编写,提供REST API与可视化界面。社区版可自己用官方提供的部署脚本在Ubuntu虚拟机里安装,命令大致为添加软件源后执行xo-server与xo-web服务。启动后创建管理员账号,并在Settings里添加XCP-ng主机连接,填入宿主机IP、用户名与密码即可纳管。
纳管成功后,XO左侧会列出该宿主机的资源树,包括存储仓库(SR)、网络、虚拟机模板。编排的第一步通常是建立共享存储,比如用NFS或iSCSI创建一个SR,这样多台宿主机才能做动态迁移。在XO的Storage菜单点New,选类型填地址,系统会自动扫描并挂载为可用磁盘池。
三、用Xen编排实现虚拟机批量管理
所谓Xen编排,在XCP-ng语境下主要指通过XO或xe命令行对Xen虚拟机做模板化创建、快照链管理与跨主机调度。例如先装好一台CentOS模板机,转为模板后,用XO的Quick Deploy功能填数量与命名规则,后台会调用Xen API克隆出多台具备相同磁盘与网卡的子机,大幅省去重复安装时间。
网络编排上,XO支持创建Bond与VLAN。在Network标签页可将两张物理网卡做active-backup绑定,再叠加VLAN子接口,使不同租户虚拟机走逻辑隔离通道。这种操作本质是对Xen后端的bridge与openvswitch配置做封装,比手工改配置文件稳妥,也方便回滚。
| 操作方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| xe命令行 | 脚本化批量运维 | 可写进cron自动执行 | 参数多,记忆成本高 |
| Xen Orchestra界面 | 日常巡检与排错 | 可视化,误操作少 | 大规模并发时响应慢 |
| REST API调用 | 对接外部云平台 | 灵活集成 | 需自行开发鉴权逻辑 |
四、常见故障与规避
社区版最容易踩的坑是网卡驱动缺失,尤其某些国产主板板载网卡不在默认内核里。解决办法是在安装前查硬件兼容列表,或装完后用yum装入额外驱动包。另一个问题是dom0内存吃紧导致宿主机卡顿,可在启动项调整dom0-memory参数,把控制域上限设到8GB以内并开启 ballooning。
快照链过长也会拖慢Xen存储提交,建议编排策略里加定期合并:用XO的Snapshot Rollup规则,只保留最近三天每日快照与每周合成备份。这样既满足恢复点目标,又避免SR被无效差分卷占满。经历上述步骤,一套能用的XCP-ng开源虚拟化与Xen编排环境就成型了。