在 CentOS Stream 上安装 QEMU 和 libvirt
本文介绍在运行 CentOS Stream 的服务器上安装 QEMU 和 libvirt、以及利用系统预装的 Cockpit 管理虚拟机的方法。
本文以 CentOS Stream 为示范,但步骤理论适用于大部分的 Linux 发行版。
本文已默认你正在使用
root账户操作。
检查虚拟化支持
运行下述指令检查 CPU 的虚拟化支持:
egrep -c '(vmx|svm)' /proc/cpuinfo
查看返回结果是否大于 0。若是,说明 CPU 支持虚拟化、可进行下一步;反之,请重启至 BIOS、检查如 Intel VT-x 或 AMD-V 的虚拟化选项是否开启。
如果你尝试在 VPS 上操作,请确保你正在使用的实例支持 嵌套虚拟化,不然可以洗洗睡了。
QEMU 和 libvirt
这是什么?
Linux 内核内置了一个名为 KVM 的模块,能够模拟 CPU、内存和网络,但也只能够模拟这三类;而 QEMU 是一个免费的开源模拟器,可以模拟出一个完整的计算机系统,美中不足的是它早期以纯软件形式实现的模拟、性能较差。因此,当时的 KVM 团队维护了一个名为 qemu-kvm 的 Fork、让 QEMU 来补齐 KVM 的 ”短板“,大幅提升了虚拟机的性能。后来这个 Fork 合并回了 QEMU、成为了其原生支持的功能。
libvirt 是由 Red Hat 开发的、用于管理硬件虚拟化的工具库,支持 KVM、LXC 在内的多种虚拟化方案。
如何安装?
首先需要安装 qemu-kvm 和 qemu-img。前者提供了用户级的 KVM 模拟器,后者则提供了磁盘管理器。
运行下述指令安装这两个软件包:
dnf install qemu-kvm qemu-img
如果你感到自信、考虑跳过软件安装的确认部分,可以考虑加一个
-y。
接着,来安装一些需要的 libvirt 软件包:
-
libvirt:libvirt 本体; -
libvirt-python:允许用 Python 编写的程序调用 libvirt API 接口,可选; -
virt-manager:大家所熟知的 Virtual Machine Manager、提供了一个快捷管理虚拟机的界面,但需要服务器安装了桌面环境(Desktop Environment)、没有的可以考虑不装; -
libvirt-client:提供了一个名为virsh的 CLI,可用于在命令行或 Virtual Shell 中管理虚拟机的状态。
本文需要使用到第一个和第五个软件包。运行下述指令安装它们:
dnf install libvirt libvirt-client
安装完成后,将 libvirtd 设为自启动并运行服务:
systemctl enable --now libvirtd
Cockpit
Cockpit 是由 Red Hat 开发的、允许管理员在网页端管理服务器的软件。考虑到一般的 Linux 服务器不会安装桌面环境、也用不了 Virtual Machine Manager,因此就以 Cockpit 为替。
安装 Cockpit
自 2019 年发布的 RHEL 8 开始,Cockpit 会默认附装在系统里,除非用户在安装时选择了最小安装。如果你的服务器系统在安装时选择了最小安装,或是由提供商预先安装、因此并未选装 Cockpit,可以运行下述指令手动安装:
dnf install cockpit
同时,需要在防火墙放行 Cockpit:
firewall-cmd --permanent --add-service=cockpit
不论是手动安装还是附装,默认情况下的 Cockpit 服务,需要运行下述指令将其设为自启动并运行:
systemctl enable --now cockpit.socket
现在可通过 http://{服务器 IP}:9090 访问 Cockpit 页面。
允许 root 用户登录 Cockpit
出于安全考虑,自 RHEL 9.2 / CentOS Stream 9 开始,Cockpit 默认不允许使用 root 用户登录。
编者同样不推荐这么做,除非你铁了心要 root 用户走到底。这种情况下,可以通过修改 /etc/cockpit/disallowed-users、将里面的 root 删掉。
nano /etc/cockpit/disallowed-users
// /etc/cockpit/disallowed-users
# List of users which are not allowed to login to Cockpit
root <-- 删掉这一个
修改完成后,重启 Cockpit 服务,即可使用 root 用户登录 Cockpit。
通过 Cockpit 管理虚拟机
要使用 Cockpit 管理虚拟机,你需要额外安装一个名为 cockpit-machines 的软件包。运行下述指令安装这个软件包:
dnf install cockpit-machines
安装完成后,刷新 Cockpit 页面,即可在侧边栏发现一个名为 Virtual machines 的选项。这里便是你在 Cockpit 管理虚拟机的入口。