(可选)升级libvirt

由于openEuler操作系统中QEMU版本较高,一般没有升级需求,因此以下操作以CentOS 7.6操作系统为例。

  • 如果对图形化界面没有诉求,能够使用命令行进行虚拟化相关操作,建议使用系统自带的libvirt-4.5.0。
  • 由于libvirt-4.5.0代码存在bug,所以在使用virt-manager时会触发一些报错,例如:internal error: Socket 6378 can't be handled (max socket is 4095),如果一定要用virt-manager操作,请参考如下章节编译安装libvirt-4.7.0或更高版本。
  • 如果编译libvirt时出现失败问题,请参见“编译libvirt 5.6.0概率性失败的解决方法”解决。

安装依赖包

本章节的操作需要外网可用或已配置本地源。

安装依赖包。
yum -y install yum-utils rpm-build

编译安装

  • Linux系统默认开启的SELinux安全机制会阻止Guest虚拟机的镜像加载,导致无法正常部署虚拟化场景业务。这是Linux OS本身的行为,鲲鹏BoostKit虚拟化使能套件并不对此提供的详细解决方案。如果客户想在自己的系统中使用SELinux,则需要自行寻找解决方法。
  • 针对此限制,我们提供了快速的禁用SELinux的方法。鲲鹏BoostKit虚拟化使能套件中,提供的SELinux配置方法仅供参考,需用户自行评估并承担相应风险。
  • 禁用SELinux可能会导致安全问题,如果客户最终的解决方案本身就没有规划启用SELinux,建议通过端到端的整体方案来弥补SELinux关闭带来的风险,且需自行承担安全风险。如果客户有SELinux的需求,建议根据实际的SELinux问题进行细粒度的规则配置,并保证整个系统的安全。

源码包的下载请参见操作系统和软件要求,本章以libvirt-5.6.0为例。该Arm版本暂不支持虚拟机热迁移功能(支持冷迁移),若有虚拟机热迁移需求,可根据openEuler中的patch包进行补丁升级,链接如下:https://gitee.com/src-openeuler/libvirt/tree/openEuler-20.03-LTS/

  1. 安装src.rpm源码包。

    1
    rpm -i libvirt-5.6.0-1.fc30.src.rpm
    

  2. 生成RPM包。

    1
    2
    3
    cd /root/rpmbuild/SPECS/
    yum-builddep -y libvirt.spec
    rpmbuild -ba libvirt.spec
    

    官方提供的src.rpm包在编译时,有一定几率会失败,需多次尝试。

  3. 安装RPM包。

    cd /root/rpmbuild/RPMS/aarch64/
    yum -y install *.rpm

  4. 重启libvirtd服务。

    1
    2
    systemctl daemon-reload
    systemctl restart libvirtd
    

  5. 关闭SELinux。

    1
    setenforce 0