virt-host-validate 异常项处理

286 阅读3分钟
root@debian:~
▶ virt-host-validate
  QEMU: Checking for hardware virtualization                                 : PASS
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
  QEMU: Checking for cgroup 'cpu' controller support                         : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
  QEMU: Checking for cgroup 'memory' controller support                      : PASS
  QEMU: Checking for cgroup 'devices' controller support                     : PASS
  QEMU: Checking for cgroup 'blkio' controller support                       : PASS
  QEMU: Checking for device assignment IOMMU support                         : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
  QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)
   LXC: Checking for Linux >= 2.6.26                                         : PASS
   LXC: Checking for namespace ipc                                           : PASS
   LXC: Checking for namespace mnt                                           : PASS
   LXC: Checking for namespace pid                                           : PASS
   LXC: Checking for namespace uts                                           : PASS
   LXC: Checking for namespace net                                           : PASS
   LXC: Checking for namespace user                                          : PASS
   LXC: Checking for cgroup 'cpu' controller support                         : PASS
   LXC: Checking for cgroup 'cpuacct' controller support                     : PASS
   LXC: Checking for cgroup 'cpuset' controller support                      : PASS
   LXC: Checking for cgroup 'memory' controller support                      : PASS
   LXC: Checking for cgroup 'devices' controller support                     : PASS
   LXC: Checking for cgroup 'freezer' controller support                     : FAIL (Enable 'freezer' in kernel Kconfig file or mount/enable cgroup controller in your system)
   LXC: Checking for cgroup 'blkio' controller support                       : PASS
   LXC: Checking if device /sys/fs/fuse/connections exists                   : PASS
   

在 Debian 环境中,如果遇到 **"FAIL (Enable 'freezer' in kernel Kconfig file or mount/enable cgroup controller in your system)"** 的错误,说明系统没有启用 cgroup 的 `'freezer'` 控制器。要解决此问题,可以按照以下步骤进行操作:

Enable 'freezer' in kernel Kconfig file or mount/enable cgroup controller in your system

步骤 1: 检查当前 cgroup 支持

  1. 查看已挂载的 cgroup 控制组: 运行以下命令,看是否存在 freezer 控制器:
    mount | grep cgroup
    
    如果没有看到 /sys/fs/cgroup/freezer,说明 'freezer' 控制器尚未挂载。

步骤 2: 启用 cgroup freezer 控制器

2.1 Linux 内核检查与配置

  1. 确认内核版本支持 freezer 控制器

    • 确保您的内核版本支持 'freezer' 控制器。运行以下命令查看当前内核版本:
      uname -r
      
  2. 启用内核配置

    • 如果您的内核没有启用 'freezer' 控制器,您需要使用配置工具(如 make menuconfig)重新编译内核。需要确保选中 “Control Group (cgroup) support”“Freezer cgroup”
    • 进入以下路径并启用 Freezer 支持:
      • Device DriversGeneral Driver OptionsControl Group (cgroup) support
      • Cgroup SubsystemFreezer cgroup
  3. 编译内核: 如果启用后,您需要编译并安装新内核。具体步骤请根据您的系统设置及内核版本查找相关文档或指南。

2.2 挂载 cgroup freezer 控制器

  1. 手动挂载 freezer 控制器: 如果内核已支持 'freezer',但尚未挂载,可以手动挂载:

    sudo mkdir -p /sys/fs/cgroup/freezer
    sudo mount -t cgroup -o freezer freezer /sys/fs/cgroup/freezer
    
    • 这将手动挂载 freezer 控制器到 /sys/fs/cgroup/freezer
  2. 验证挂载: 运行以下命令确认挂载成功:

    mount | grep freezer
    

步骤 3: 更新系统启动配置(可选)

为了确保每次启动时都挂载 freezer 控制器,可以在 /etc/fstab 中添加以下行:

cgroup   /sys/fs/cgroup   cgroup   defaults,freezer   0   0

步骤 4: 重启系统

在执行完上述步骤后,重启 Debian 系统以使更改生效。

sudo reboot

步骤 5: 验证并测试 freezer 控制器

重启后,再次确认 freezer 控制器是否成功挂载:

mount | grep freezer

如果成功,您应该不再看到警告,可以开始使用。

总结

通过上述步骤,您应该能够启用和挂载 cgroup 的 freezer 控制器。如果问题仍然存在,您可能需要检查内核版本或与内核相关的配置,或者联系支持以获取更详细的帮助。