Skip to content

XCP-ng

在这篇文章中

信息

XCP-ng (Xen Cloud Platform - New Generation) 是一个基于 Xen Project 的免费开源 Hypervisor。在 Citrix 限制免费版 XenServer 的功能后,XCP-ng 作为 Citrix XenServer 的开源替代品被创建出来。该项目提供了一个功能齐全的企业级虚拟化平台,没有任何人为限制,支持实时迁移、高可用性、存储管理以及与编排系统的集成。XCP-ng 在 GPLv2 和兼容的免费许可证下分发。

XCP-ng 关键特性

  • 虚拟化: XCP-ng 支持在单个物理服务器上运行多个虚拟机,实现完全隔离和高效的资源分配。支持的来宾操作系统包括 Linux、Windows 等。
  • 实时迁移: 能够在主机之间移动正在运行的虚拟机而无需停机,确保硬件维护期间的服务连续性。
  • 高可用性 (HA): 在服务器故障时,自动在其他池主机上重启虚拟机。
  • 存储管理: 支持各种类型的存储库 (Storage Repositories),包括本地磁盘、NFS、iSCSI、Ceph 等。
  • 快照和备份: 创建虚拟机状态的即时快照,以便快速恢复和备份。
  • 资源池: 将多个 XCP-ng 主机组合成一个池,以实现集中管理和负载分配。
  • 网络功能: 支持 VLAN、网络接口绑定、SR-IOV 和软件定义网络。
  • Web 管理界面: XCP-ng 包含内置的 XO Lite Web 界面用于基本管理,而功能齐全的 Xen Orchestra (XO) 提供高级自动化、监控和备份功能。

XCP-ng 管理选项

有几种管理界面可用于操作 XCP-ng:

XO Lite (内置,免费):

  • 在 XCP-ng 安装后立即在 https://<server_IP_address> 可用;
  • 用于创建和管理虚拟机的基本 Web 界面;
  • 资源监控和基本操作;
  • 适用于家庭实验室和小型项目;
  • 无需额外配置。

从源码安装的 Xen Orchestra (免费,需要安装):

  • 功能齐全的开源管理系统;
  • 自动备份、复制、高级监控;
  • 集中管理多个主机;
  • 需要创建单独的虚拟机并手动安装 (Ubuntu/Debian);
  • 维护和更新需手动执行;
  • 通过社区论坛提供支持。

Xen Orchestra Appliance (XOA) (付费订阅,需要部署):

  • 预装 Xen Orchestra 的即用型虚拟机;
  • 通过 XO Lite 界面中的 Deploy XOA 按钮部署;
  • 来自 Vates 的官方技术支持 (24/7);
  • 自动更新和 SLA 保证;
  • 小型企业计划:€2,000/年 (ESSENTIAL,最多 3 个主机) 或 €4,000/年 (ESSENTIAL+,完全访问权限) – 详情
  • 推荐用于有支持要求的生产环境。

选项的选择取决于基础设施规模和技术支持要求。内置的 XO Lite 足以入门,而更高级的功能可以通过安装功能齐全的 Xen Orchestra 获得。

部署功能

ID OS Name Alias Active BM GPU VPS VDS Family OS Group CloudInit Avilible
306 XCP-ng 8.3 - Yes + + + - XCP-ng Others No ORDER

最低服务器要求:

  • RAM: 8 GB;
  • HDD: 60 GB;
  • 虚拟化: 支持嵌套虚拟化。

部署后开始使用 XCP-ng

支付订单后,您将在注册时提供的电子邮件地址收到通知,表明您的服务器已准备就绪。该电子邮件将包含 VPS IP 地址和登录凭据。我们的客户通过 服务器管理面板和 APIInvapi 来管理他们的设备。

您可以在服务器管理面板的 Configuration >> Tags 部分或收到的电子邮件中找到授权详细信息:

  • Login: root;
  • Password: 软件部署完成后,服务器准备就绪时会发送到您的电子邮件地址。

授权

有两种方法可以访问 XCP-ng 服务器:通过 XO Lite Web 界面和通过 SSH。

通过 XO Lite 连接

XO Lite 是用于管理 XCP-ng 的内置 Web 界面,可直接从主机访问。

  • 打开浏览器并导航到 https://<server_IP_address>:

  • 输入登录名 root 和电子邮件中的密码,然后点击 Login 按钮。

信息

浏览器可能会显示关于不受信任证书警告 - 对于自签名证书这是正常的。添加例外以继续。

通过 SSH 连接

  • 打开终端并使用以下命令连接到服务器:
ssh root@<server_IP_address>
  • 提示时输入密码。成功连接后,您将进入 XCP-ng 命令行。

通过原生控制台连接

您还可以使用 Invapi 控制面板中的原生控制台来访问主机控制台:

控制台提供了一个配置菜单,允许您配置网络参数、身份验证、虚拟机管理和其他系统参数。

使用 xsconsole

通过 SSH 或 VNC 控制台连接时,您可以使用 xsconsole - XCP-ng 配置和主机管理的内置文本管理控制台。

要启动 xsconsole,请输入命令:

xsconsole

启动后,将打开系统管理菜单:

xsconsole 主要部分

状态显示

  • 主机状态监控 (CPU、内存、网络、存储);
  • 查看正在运行的虚拟机;
  • 一般系统信息。

网络和管理界面

  • 网络接口配置;
  • IP 地址配置 (静态/DHCP);
  • 网关和 DNS 服务器配置。

身份验证

  • 更改 root 密码;
  • SSH 访问管理;
  • 账户配置。

虚拟机

  • 查看虚拟机列表;
  • 基本 VM 管理 (启动、停止);
  • 来宾系统状态控制。

磁盘和存储库

  • 查看连接的磁盘;
  • 存储库管理;
  • SR 创建和删除。

资源池配置

  • 从多个主机创建池;
  • 加入现有池;
  • 服务器集群管理。

硬件和 BIOS 信息

  • 处理器和内存信息;
  • 网卡数据;
  • BIOS 和固件版本。

键盘和时区

  • 键盘布局配置;
  • 系统时区设置。

远程服务配置

  • 远程访问配置;
  • SSH 配置;
  • SSL 证书管理。

备份、恢复和更新

  • 主机配置备份;
  • 设置恢复;
  • 系统更新检查和安装。

技术支持

  • 生成技术支持报告 (错误报告);
  • 系统日志收集;
  • 诊断信息。

本地命令 Shell

  • 退出到标准 bash 命令行;
  • 用于执行任意命令和脚本。

重启或关机

  • 主机重启;
  • 正确关闭系统。

xsconsole 中的导航

  • Enter - 选择菜单项/确认操作;
  • ↑/↓ - 在菜单项之间移动;
  • Tab - 在表单元素之间切换;
  • Escq - 返回上一级菜单/退出。

提示

xsconsole 在初始服务器设置、紧急访问恢复或 XO Lite Web 界面不可用时的网络配置中特别有用。要退出 xsconsole 到常规命令行,请选择 Local Command Shell

使用 XO Lite

在 XO Lite 中授权后,将打开主管理面板 (Dashboard):

XO Lite 界面包含以下部分:

  • DASHBOARD: 主机状态、虚拟机状态、存储使用情况和通知的总体概览;
  • ALARMS: 查看系统警告和警报;
  • STATS: 性能和资源使用统计;
  • SYSTEM: 主机系统设置;
  • NETWORK: 网络接口和虚拟网络管理;
  • STORAGE: 数据存储管理 (存储库);
  • TASKS: 正在运行和已完成任务的日志;
  • HOSTS: 池中主机的信息;
  • VMS: 虚拟机管理。

网络管理

NETWORK 选项卡显示可用网络及其参数:

在这里您可以查看池范围网络 (对池中所有主机可用) 和主机内部网络,以及创建新的网络连接。

创建虚拟机

准备:加载 ISO 镜像

在创建虚拟机之前,您需要将操作系统的 ISO 镜像加载到存储库中。

通过 SSH 加载 ISO

XO Lite 不支持通过 Web 界面上传 ISO 镜像。要上传 ISO,必须使用命令行:

  1. 通过 SSH 连接到服务器

        ssh root@<server_IP_address>
    
  2. 如果连接后打开 xsconsole,通过选择 Local Command Shell 菜单项或按 Ctrl+C 退出到常规命令行。

  3. 查找 ISO 存储的 UUID

        xe sr-list content-type=iso
    
    复制名为 "XCP-ng Tools" 的存储的 UUID。

  4. 导航到 ISO 存储目录

        cd /opt/xensource/packages/iso
    
  5. 下载 ISO 镜像

    从互联网下载:

        wget https://repo.almalinux.org/almalinux/9/isos/x86_64/AlmaLinux-9-latest-x86_64-boot.iso
    

    或从本地计算机上传 (在您的 PC 上执行)

        scp /path/to/file.iso root@<server_IP>:/opt/xensource/packages/iso/
    
  6. 重新扫描存储

        xe sr-scan uuid=<UUID_SR>
    
    其中 <UUID_SR> 是步骤 3 中获得的 UUID。

    此后,ISO 镜像将出现在创建虚拟机时的可用镜像列表中。

通过 XO Lite 创建 VM

  • 点击界面右上角的 New VM 按钮。

  • 在打开的窗口中,填写虚拟机参数:

    • Template: 选择操作系统模板 (例如,AlmaLinux 9);
    • Install settings: 选择安装方法:
      • ISO/DVD: 从 ISO 镜像安装 (推荐) - 从列表中选择加载的 ISO;
      • PXE: 网络安装 (需要配置 PXE 服务器)。
    • System: 指定 VM 名称、描述、固件类型 (BIOS/UEFI);
    • Memory: 设置 vCPU 数量和 RAM 大小。
  • 配置网络连接和存储:

    • Network: 选择 VM 连接的网络接口;
    • Storage: 选择存储并指定磁盘大小;
    • Settings: 启用启动时自动启动 VM (可选)。
  • Summary 部分查看最终配置并点击 Create 按钮。

创建后,虚拟机将自动启动,并开始从 ISO 镜像引导。XO Lite 界面将打开已创建 VM 的 Dashboard 页面:

Dashboard 页面显示:

  • Quick info: 基本 VM 信息 (状态、UUID、主机、资源);
  • CPU usage: 处理器使用率图表;
  • RAM usage: 内存使用率图表;
  • Network throughput: 网络活动图表;
  • VDI throughput: 磁盘活动图表;
  • Change state: VM 状态管理菜单 (启动、暂停、重启、关机)。

要访问虚拟机控制台并开始操作系统安装,请转到 CONSOLE 选项卡。

提示

对于网络安装 (引导 ISO),请确保虚拟机通过配置的网络具有互联网访问权限,因为安装程序包将从存储库下载。

ISO 镜像选择

选择 ISO 镜像时,请考虑镜像类型:

对于 Linux (以 AlmaLinux 为例):

  • DVD/Full ISO (~4-10 GB) - 完整镜像,包含所有程序包,不需要互联网
    • AlmaLinux-9-latest-x86_64-dvd.iso;
    • Ubuntu-22.04-server.iso.
  • Boot/Minimal ISO (~1 GB) - 最小镜像,需要活动的互联网连接以下载程序包
    • AlmaLinux-9-latest-x86_64-boot.iso;
    • Ubuntu-22.04-live-server.iso.

建议: 为了可靠安装,请使用完整 ISO 镜像 (DVD/Full),特别是如果 VM 没有互联网连接或连接不稳定。

固件选择建议

  • UEFI - 推荐用于现代操作系统:
    • Linux: AlmaLinux 9+, Ubuntu 20.04+, Debian 11+;
    • Windows: Windows Server 2016+, Windows 10/11.
  • BIOS - 用于兼容性:
    • 较旧的操作系统版本;
    • 遇到 UEFI 引导问题时;
    • 特定场景 (遗留应用程序)。

软件选择

安装 Linux 发行版时,有各种环境选项:

  • Minimal Install - 没有 GUI 的基本系统 (~400-600 个程序包,5-10 分钟安装)
    • 推荐用于服务器和生产;
    • 资源消耗最小。
  • Server with GUI - 带图形界面的完整系统 (~1000-1500 个程序包,15-30 分钟安装)
    • 便于学习和测试;
    • 需要更多资源 (RAM、CPU、磁盘)。

对于生产服务器,推荐 Minimal Install

安装 XCP-ng 来宾工具

安装操作系统后,**至关重要**的是为虚拟机安装 XCP-ng 来宾工具,以便其正确运行。

为什么需要来宾工具

来宾工具提供:

  • 正确的 VM 关机和重启 (软关机);
  • 在 XCP-ng 界面中显示 IP 地址和 VM 状态;
  • 改进的网络和磁盘性能;
  • 主机和来宾操作系统之间的时间同步;
  • 支持带静默的快照 (一致快照);

重要

如果不安装来宾工具,虚拟机可能工作不稳定,特别是在网络连接和状态管理方面。

来宾工具安装顺序

步骤 1: 完成操作系统安装

安装操作系统后,当出现完成消息或显示重启提示时:

重要

不要立即重启 虚拟机。首先,您需要用 guest-tools.iso 替换安装 ISO。

例外: 如果您已经重启了 VM,没关系 - 可以在安装的系统第一次启动后连接 ISO。

步骤 2: 用来宾工具替换 ISO (在 XCP-ng 主机上)

通过 SSH 连接到 XCP-ng 主机并执行命令。

查找您的 VM 的 UUID:

xe vm-list name-label="VM_NAME"

或获取所有正在运行的 VM 列表:

xe vm-list power-state=running

示例输出:

uuid ( RO)           : 0218d2ca-bfb7-fdfb-0c78-7a115a69ecdc
     name-label ( RW): AlmaLinux 9
    power-state ( RO): running

弹出安装 ISO (如果已连接):

xe vm-cd-eject uuid=<UUID_VM>

插入来宾工具 ISO:

xe vm-cd-insert uuid=<UUID_VM> cd-name="guest-tools.iso"

验证 ISO 是否已替换:

xe vbd-list vm-uuid=<UUID_VM> type=CD

示例输出:

uuid ( RO)             : 5f644369-7b28-a39d-6bc0-2221ec2b92d3
          vm-uuid ( RO): 0218d2ca-bfb7-fdfb-0c78-7a115a69ecdc
    vm-name-label ( RO): AlmaLinux 9
         vdi-uuid ( RO): dd994bfa-83a6-482a-a2c4-f952a5d8ab81
            empty ( RO): false
           device ( RO): xvdd
注意 device 参数 - 这是来宾系统中的设备名称 (在本例中为 xvdd)。

步骤 3: 重启 VM

  • 如果您尚未在安装后重启: 在 VM 控制台中,按 "Reboot System" 或执行 reboot 命令;
  • 如果已在运行系统中: 不需要重启,继续步骤 4。

步骤 4: 在来宾操作系统中安装来宾工具

安装过程取决于操作系统:

对于 Linux (基于 RHEL: AlmaLinux, Rocky, CentOS, RHEL)

root 身份登录系统并执行命令。

创建挂载点:

mkdir -p /mnt/cdrom

挂载来宾工具 ISO:

mount /dev/sr0 /mnt/cdrom

如果 /dev/sr0 不起作用,请尝试其他选项:

mount /dev/cdrom /mnt/cdrom

mount /dev/xvdd /mnt/cdrom

检查内容:

ls -la /mnt/cdrom/Linux/

导航到目录:

cd /mnt/cdrom/Linux

运行安装:

bash install.sh

示例输出:

Detected 'AlmaLinux release 9.7 (Moss Jungle Cat)' (almalinux version 9).


The following changes will be made to this Virtual Machine:
 * update arp_notify sysctl
 * packages to be installed/upgraded:
   - xe-guest-utilities-7.30.0-12.x86_64.rpm


Continue? [y/n] y

y 并等待安装完成。

备注

安装可能在 100% 处挂起 30-60 秒 - 这是正常的。如果挂起超过 2 分钟 - 按 Ctrl+C 并检查结果。

验证安装:

rpm -qa | grep xe-guest
应输出类似内容:
xe-guest-utilities-7.30.0-12.legacy.x86_64

检查 init.d 脚本:

ls /etc/init.d/ | grep xe

应显示:

xe-linux-distribution

对于 AlmaLinux 9 / RHEL 9 / Rocky 9 的重要事项:

现代发行版中的 systemd 问题

install.sh 脚本仅安装 init.d 脚本,但**不创建** systemd 单元文件。这意味着 systemctl status xe-linux-distributionchkconfig 命令将不起作用。

症状:

systemctl status xe-linux-distribution
Unit xe-linux-distribution.service could not be found.

chkconfig xe-linux-distribution on
bash: chkconfig: command not found...

解决方案: 手动创建 systemd 单元文件。创建文件的示例:

cat > /etc/systemd/system/xe-linux-distribution.service << 'EOF'
[Unit]
Description=XCP-ng Guest Utilities
After=network.target


[Service]
Type=oneshot
ExecStart=/etc/init.d/xe-linux-distribution start
ExecStop=/etc/init.d/xe-linux-distribution stop
RemainAfterExit=yes


[Install]
WantedBy=multi-user.target
EOF
激活并启动服务:

systemctl daemon-reload
systemctl enable xe-linux-distribution
systemctl start xe-linux-distribution

检查服务状态:

systemctl status xe-linux-distribution

卸载 ISO:

cd ~
umount /mnt/cdrom

重启系统以应用更改:

reboot

对于 Linux (基于 Debian: Ubuntu, Debian)

以 root 身份登录系统或使用 sudo。

创建挂载点:

sudo mkdir -p /mnt/cdrom

挂载来宾工具 ISO:

sudo mount /dev/sr0 /mnt/cdrom

导航到目录:

cd /mnt/cdrom/Linux

运行安装:

sudo bash install.sh

验证安装:

dpkg -l | grep xe-guest

检查服务状态:

sudo systemctl status xe-linux-distribution

卸载 ISO:

cd ~
sudo umount /mnt/cdrom

重启系统:

sudo reboot

Linux 的替代方法:通过存储库安装

如果 ISO 挂载不起作用或您想通过包管理器安装来宾工具。

对于基于 RHEL (AlmaLinux, Rocky, CentOS) 安装 EPEL 存储库:

sudo dnf install -y epel-release

安装 xe-guest-utilities:

sudo dnf install -y xe-guest-utilities

启用服务:

sudo systemctl enable xe-linux-distribution

启动服务:

sudo systemctl start xe-linux-distribution

检查状态:

sudo systemctl status xe-linux-distribution

备注

通过存储库安装需要 VM 中的活动互联网连接。

步骤 5: 验证来宾工具运行

重启和安装来宾工具后,验证其运行。

在来宾操作系统 (Linux) 中 检查服务状态:

systemctl status xe-linux-distribution

或通过 init.d:

/etc/init.d/xe-linux-distribution status

正确输出的示例:

os_distro="almalinux"
os_majorver="9"
os_minorver="7"
os_uname="5.14.0-611.5.1.el9_7.x86_64"
os_name="AlmaLinux release 9.7 (Moss Jungle Cat)"

在 XCP-ng 主机上 检查网络信息显示:

xe vm-param-get uuid=<UUID_VM> param-name=networks

检查 PV 驱动程序状态:

xe vm-param-get uuid=<UUID_VM> param-name=PV-drivers-version

获取一般 VM 信息:

xe vm-param-list uuid=<UUID_VM> | grep -E "PV-drivers|networks"
在 XO Lite 界面中

启动 xe-linux-distribution 服务后,VM Dashboard 应显示 (10-30 秒后更新):

  • IP address: VM IP 地址;
  • Guest tools: 已安装的来宾工具版本 (例如,7.30.0-12);
  • OS name: 检测到的操作系统 (例如,AlmaLinux release 9.7):

虚拟机管理

VMS 选项卡显示所有虚拟机列表及管理功能:

可用操作:

  • Change state: 启动、停止、重启 VM;
  • Migrate: 将 VM 迁移到另一台主机;
  • Copy: 创建虚拟机的副本;
  • Edit config: 编辑 VM 配置;
  • Snapshot: 创建状态快照;
  • Export: 将 VM 导出到文件;
  • Delete: 删除虚拟机。

使用存储、ISO 和网络

管理存储库 (SR)

查看所有存储:

列出所有 SR

xe sr-list
特定 SR 的详细信息

xe sr-param-list uuid=<UUID_SR>
查看磁盘空间使用情况

xe sr-list params=name-label,physical-size,physical-utilisation,uuid

使用 ISO 存储:

查找 ISO SR

xe sr-list content-type=iso
获取 ISO SR 路径

xe pbd-list sr-uuid=<UUID_SR>
导航到 ISO 目录 (通常为 /opt/xensource/packages/iso)

cd /opt/xensource/packages/iso
查看可用 ISO

ls -lh
从互联网下载 ISO

wget https://example.com/os.iso
从本地计算机上传 ISO

scp /path/to/file.iso root@<server_IP>:/opt/xensource/packages/iso/

注意

添加 ISO 后必须重新扫描 SR

xe sr-scan uuid=<UUID_SR>
验证 ISO 是否出现

xe vdi-list sr-uuid=<UUID_SR>

管理本地存储

查看虚拟磁盘 (VDI):

xe vdi-list sr-uuid=

检查可用空间:

df -h

查看快照列表:

xe snapshot-list | grep snapshot

删除快照:

xe snapshot-uninstall snapshot-uuid=

网络管理

查看所有网络:

xe network-list

详细网络信息:

xe network-param-list uuid=

查看物理接口 (PIF):

xe pif-list

特定 PIF 详细信息:

xe pif-param-list uuid=

检查主机 IP 地址:

ip addr show

创建内部网络:

xe network-create name-label="Internal Network" name-description="Private VM network"

创建 VLAN 网络:

xe network-create name-label="VLAN100" name-description="VLAN 100" vlan=100 pif-uuid=

查看 VM 网络接口:

xe vif-list vm-uuid=

为 VM 创建新网络接口:

xe vif-create vm-uuid= network-uuid= device=0

基本 CLI 命令

虚拟机管理

列出所有 VM:

xe vm-list

仅正在运行的 VM:

xe vm-list power-state=running

详细 VM 信息:

xe vm-param-list uuid=<UUID_VM>

启动 VM:

xe vm-start uuid=<UUID_VM>

关闭 VM:

xe vm-shutdown uuid=<UUID_VM>

重启 VM:

xe vm-reboot uuid=<UUID_VM>

挂起 VM:

xe vm-suspend uuid=<UUID_VM>

强制关闭 VM:

xe vm-shutdown uuid=<UUID_VM> force=true

创建快照:

xe vm-snapshot uuid=<UUID_VM> new-name-label="backup-$(date +%Y%m%d)"

列出快照:

xe snapshot-list

从快照恢复:

xe snapshot-revert snapshot-uuid=<UUID_snapshot>

删除快照:

xe snapshot-uninstall snapshot-uuid=<UUID_snapshot>

导出 VM:

xe vm-export uuid=<UUID_VM> filename=/path/to/backup.xva

导入 VM:

xe vm-import filename=/path/to/backup.xva

监控和诊断

主机信息:

xe host-list params=all

进程监控:

top

高级进程监控:

htop

检查内存使用情况:

free -h

主机可用内存:

xe host-param-get uuid=<UUID_host> param-name=memory-free

虚拟机的 CPU 使用情况:

xe vm-list params=name-label,power-state,VCPUs-utilisation

查看主 XCP-ng 日志:

tail -f /var/log/xensource.log

系统日志:

journalctl -xe

查看系统消息:

tail -f /var/log/messages

Xen 日志:

xl dmesg

创建错误报告 (包含所有诊断信息):

xen-bugtool -y

报告位置

结果将保存到 /var/opt/xen/bug-report/

管理 ISO 镜像和 CD 驱动器

列出可用 ISO 镜像:

xe cd-list

SR 中 ISO 的详细信息:

xe vdi-list sr-uuid= content-type=iso

将 ISO 附加到 VM:

xe vm-cd-insert uuid= cd-name=".iso"

从 VM 弹出 ISO:

xe vm-cd-eject uuid=

检查连接到 VM 的 CD/ISO:

xe vbd-list vm-uuid= type=CD

导航到主机上的 ISO 目录:

cd /opt/xensource/packages/iso

从互联网下载 ISO:

wget https://example.com/os.iso

加载 ISO 后重新扫描 SR:

xe sr-scan uuid=

检查来宾工具状态

检查 PV 驱动程序版本:

xe vm-param-get uuid= param-name=PV-drivers-version

检查 PV 驱动程序是否最新:

xe vm-param-get uuid= param-name=PV-drivers-up-to-date

获取来宾操作系统信息:

xe vm-param-get uuid= param-name=os-version

检查 PV 驱动程序检测:

xe vm-param-get uuid= param-name=PV-drivers-detected

获取 VM 网络信息:

xe vm-param-get uuid= param-name=networks

常见问题及解决方案

问题:VM 引导进入紧急/恢复模式

症状:

出现消息 "You are in emergency mode" 或 "Welcome to emergency mode";

典型原因:

  • 引导配置错误 (Linux 的 fstab);
  • 文件系统损坏;
  • 虚拟化问题;
  • VM 关机不正确。

Linux 的解决方案:

使用 root 密码登录系统 (或按 Ctrl+D 继续)。

检查系统日志:

journalctl -xb | grep -i error

检查内核消息:

dmesg | grep -i error

检查文件系统:

cat /etc/fstab

检查磁盘使用情况:

df -h

检查块设备:

lsblk

如果问题出在 fstab (例如,缺少 swap 或磁盘),请编辑文件:

nano /etc/fstab

通过在开头添加 # 注释掉有问题的行。示例:

# /dev/mapper/almalinux-swap none swap defaults 0 0

如果需要检查文件系统,请先卸载分区:

umount /dev/xvda2

检查并修复文件系统:

fsck -y /dev/xvda2

重启系统:

systemctl reboot

问题:GRUB 不加载或挂起

症状:

  • VM 在 TianoCore (UEFI) 屏幕上挂起;
  • 出现 "Welcome to GRUB" 且无反应;
  • BIOS/UEFI 后出现黑屏和光标。

典型原因:

  • boot order 不正确;
  • ISO 仍作为第一个引导设备连接;
  • GRUB 引导加载程序损坏;
  • UEFI/BIOS 不兼容。

解决方案 1: 检查和更改引导顺序

在 XCP-ng 主机上检查当前 boot order

xe vm-param-get uuid=<UUID_VM> param-name=HVM-boot-params

可能的顺序值: - cdn - HDD ©, CD (d), Network (n) - dcn - CD (d), HDD ©, Network (n) - c - 仅 HDD

对于操作系统安装,将 CD 设置为第一:

xe vm-param-set uuid=<UUID_VM> HVM-boot-params:order=dcn

操作系统安装后,设置为仅从 HDD 引导:

xe vm-param-set uuid=<UUID_VM> HVM-boot-params:order=c

如果仍连接安装 ISO,请弹出:

xe vm-cd-eject uuid=<UUID_VM>

重启 VM:

xe vm-reboot uuid=<UUID_VM> --force

解决方案 2: 通过 GRUB Rescue 引导 (对于 Linux)

如果您进入 GRUB 命令行 (出现 grub> 提示符),请执行以下命令。

查找可用分区:

ls
输出将类似于:(hd0) (hd0,msdos2) (hd0,msdos1)

查找包含 /boot 的分区 (通常为 msdos1 或 gpt1):

ls (hd0,msdos1)/

检查引导内容:

ls (hd0,msdos1)/boot/

您应该看到 vmlinuz、initramfs 文件和 grub2 文件夹。

对于 BIOS 系统执行:

set root=(hd0,msdos1)
set prefix=(hd0,msdos1)/grub2
insmod normal
normal

对于 UEFI 系统执行:

set root=(hd0,gpt1)
set prefix=(hd0,gpt1)/boot/grub2
insmod normal
normal

系统引导后,恢复 GRUB。

对于基于 RHEL (AlmaLinux, Rocky, CentOS):

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

对于 UEFI 系统:

sudo grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg

对于基于 Debian (Ubuntu, Debian):

sudo update-grub

如果需要重新安装 GRUB (对于 BIOS):

sudo grub2-install /dev/xvda

解决方案 3: 在 UEFI 和 BIOS 之间切换

如果问题仍然存在,在 XCP-ng 主机上检查当前模式:

xe vm-param-get uuid=<UUID_VM> param-name=HVM-boot-params

切换到 BIOS (可能需要重新安装操作系统):

xe vm-param-remove uuid=<UUID_VM> param-name=HVM-boot-params param-key=firmware

或明确设置 BIOS:

xe vm-param-set uuid=<UUID_VM> HVM-boot-params:firmware=bios

问题:安装后网络不工作

症状:

  • VM 未获取 IP 地址;
  • 网络接口显示 "disconnected" 或 "no carrier";
  • Ping 不工作;
  • XCP-ng 界面中未显示 IP 地址;

典型原因:

  • 未安装来宾工具 (主要原因);
  • VM 中的网络配置不正确;
  • 虚拟网络适配器问题;
  • 防火墙阻止连接。

解决方案:

  1. 安装来宾工具 (见上文) - 这将解决 90% 的网络问题

  2. 检查来宾操作系统中的网络接口状态

    对于 Linux 检查接口状态:

    ip link show
    

    检查 IP 地址:

    ip addr show
    

    对于带有 NetworkManager 的系统:

    nmcli device status
    

    检查连接:

    nmcli connection show
    

    对于带有 systemd-networkd 的系统:

    networkctl status
    

    检查路由:

    ip route show
    

  3. 启用和配置接口

    对于带有 NetworkManager 的基于 RHEL 启用接口:

    sudo nmcli device set eth0 managed yes
    

    启动连接:

    sudo nmcli connection up eth0
    

    或重启 NetworkManager:

    sudo systemctl restart NetworkManager
    

    对于基于 Debian 检查配置 (Ubuntu 18.04+):

    cat /etc/netplan/00-installer-config.yaml
    

    对于 Debian/旧版 Ubuntu:

    cat /etc/network/interfaces
    

    启用接口:

    sudo ip link set eth0 up
    

    通过 DHCP 请求 IP:

    sudo dhclient eth0
    

  4. 检查 XCP-ng 设置

    在 XCP-ng 主机上检查 VM 虚拟网络接口:

    xe vif-list vm-uuid=<UUID_VM>
    

    检查可用网络:

    xe network-list
    

    如果缺少 VIF 或不正确,获取网络 UUID:

    xe network-list name-label="Pool-wide network associated with eth0"
    

    创建新 VIF:

    xe vif-create vm-uuid=<UUID_VM> network-uuid=<UUID_NETWORK> device=0
    

  5. 检查防火墙

    对于 Linux (firewalld) 检查状态:

    sudo systemctl status firewalld
    

    临时禁用以进行测试:

    sudo systemctl stop firewalld
    

    对于 Linux (iptables) 检查规则:

    sudo iptables -L -n
    

    临时清除规则以进行测试:

    sudo iptables -F
    

问题:操作系统安装非常缓慢

症状:

  • 安装需要几个小时而不是 15-30 分钟;
  • 程序包复制非常慢;
  • VM 在 "Installing packages" 或 "Configuring" 阶段挂起。

典型原因:

  • 主机磁盘子系统缓慢 (HDD 而不是 SSD);
  • 存储库过载;
  • VM 资源不足 (CPU、RAM);
  • 主机性能问题。

解决方案:

  1. 对于 Linux 使用最小安装:

    • 最小安装包含 ~400-600 个程序包,而不是 1000-1500 (带 GUI 的服务器);
    • 安装需要 5-10 分钟,而不是几个小时;
    • 对于生产服务器,通常不需要 GUI;
    • 您可以在安装后安装所需的程序包。
  2. 临时增加 VM 资源

    在 XCP-ng 主机上 (启动前或安装期间) 增加 RAM:

    xe vm-param-set uuid=<UUID_VM> memory-static-max=8GiB memory-dynamic-max=8GiB
    

    增加 vCPU:

    xe vm-param-set uuid=<UUID_VM> VCPUs-max=4 VCPUs-at-startup=4
    

  3. 检查磁盘性能

    在 XCP-ng 主机上检查 I/O:

    iostat -x 1
    

    检查磁盘负载:

    iotop
    

    检查 SR 状态:

    xe sr-list
    

    获取 SR 详细信息:

    xe sr-param-list uuid=<UUID_SR>
    

  4. 使用更快的存储:

    • 如果有多个 SR 可用,请使用 基于 SSD 的存储
    • 考虑迁移到另一个 SR。

问题:无法连接 ISO

症状:

  • 错误 "The VM has no empty CD drive (VBD)";
  • 错误 "No matching VMs found";
  • ISO 未出现在可用列表中。

解决方案 1: VM 没有空的 CD 驱动器

检查现有 VBD (虚拟块设备):

xe vbd-list vm-uuid=<UUID_VM>

如果 CD 驱动器被另一个 ISO 占用,请弹出它:

xe vm-cd-eject uuid=<UUID_VM>

现在插入所需的 ISO:

xe vm-cd-insert uuid=<UUID_VM> cd-name="guest-tools.iso"

如果完全缺少 CD 驱动器,首先查找所需的 ISO UUID:

xe cd-list name-label="guest-tools.iso"

手动创建 VBD:

xe vbd-create vm-uuid=<UUID_VM> vdi-uuid=<UUID_ISO> device=3 bootable=false mode=RO type=CD

解决方案 2: 未找到匹配的 VM

问题:使用控制域 UUID 而不是 VM。

正确检查 VM 列表 (排除控制域):

xe vm-list is-control-domain=false

通过检查确保使用正确的 UUID:

xe vm-param-list uuid=<UUID_VM> | grep "is-control-domain"

应为:is-control-domain ( RO): false

解决方案 3: ISO 未出现在列表中

检查 ISO 是否已加载:

xe cd-list

如果 ISO 不在列表中,查找 ISO 的 SR:

xe sr-list content-type=iso

导航到 ISO 目录:

cd /opt/xensource/packages/iso

检查文件是否存在:

ls -lh

如果文件缺失,从互联网下载:

wget https://example.com/your-iso.iso

或从本地计算机 (在您的 PC 上执行):

scp /local/path/file.iso root@<IP-host>:/opt/xensource/packages/iso/

重新扫描 SR:

xe sr-scan uuid=<UUID_SR>

再次检查:

xe cd-list

问题:VM 无法正确关机

症状:

  • xe vm-shutdown 不起作用或挂起
  • VM 只能通过 --force 关闭
  • 日志中出现超时错误

原因:

  • 未安装或来宾工具不工作
  • 操作系统未响应 ACPI 事件
  • 来宾操作系统中的进程卡住

解决方案:

  1. 安装/检查来宾工具 (主要原因)

  2. 检查来宾工具状态

    在 XCP-ng 主机上检查 PV 驱动程序版本:

    xe vm-param-get uuid=<UUID_VM> param-name=PV-drivers-version
    

    检查驱动程序是否最新:

    xe vm-param-get uuid=<UUID_VM> param-name=PV-drivers-up-to-date
    

  3. 使用正确的关机命令

    软关机 (需要来宾工具):

    xe vm-shutdown uuid=<UUID_VM>
    

    强制关机 (相当于按电源按钮):

    xe vm-shutdown uuid=<UUID_VM> --force
    

硬关机 (相当于拔掉电源线,仅作为最后手段使用):

xe vm-destroy uuid=<UUID_VM>

一般诊断提示

出现问题时,始终检查日志。

在来宾操作系统 (Linux) 中 检查最近的事件:

journalctl -xe

检查内核消息:

dmesg | tail -50

查看系统日志 (基于 RHEL):

tail -f /var/log/messages

查看系统日志 (基于 Debian):

tail -f /var/log/syslog

在 XCP-ng 主机上 查看主日志:

tail -f /var/log/xensource.log

检查 Xen Hypervisor 消息:

xl dmesg

检查系统事件:

journalctl -xe

在 XCP-ng 主机上创建诊断报告

xen-bugtool -y

结果将保存到 /var/opt/xen/bug-report/

备注

有关 XCP-ng 配置和管理的详细信息,请参阅 官方文档

备注

XCP-ng 论坛 - 获取帮助的社区论坛。

通过 API 订购带有 XCP-ng 的服务器

要通过 API 安装带有 RouterOS 的服务器,请遵循 这些说明

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×