在 Rocky Linux 上设置 libvirt
简介¶
libvirt 是一个强大的虚拟化 API,它允许您使用 KVM 作为管理程序,QEMU 作为模拟器,来虚拟化几乎任何您选择的操作系统。
本文档将提供在 Rocky Linux 9 上设置 libvirt 的说明。
先决条件¶
- 一台运行 Rocky Linux 9 的 64 位机器。
- 确保在 BIOS 设置中启用了虚拟化。如果以下命令返回输出,则表示虚拟化已启用。
sudo grep -e 'vmx' /proc/cpuinfo
仓库设置和软件包安装¶
- 启用 EPEL (Enterprise Linux 的额外软件包) 仓库
sudo dnf install -y epel-release
- 安装 `libvirt` 所需的软件包 (如果需要使用 GUI 管理 VM,也可以安装 `virt-manager`)
sudo dnf install -y bridge-utils virt-top libguestfs-tools bridge-utils virt-viewer qemu-kvm libvirt virt-manager virt-install
libvirt 用户设置¶
- 将您的用户添加到 `libvirt` 组。这使得您可以以非 root 用户身份管理您的 VM 并使用 `virt-install` 等命令。
sudo usermod -aG libvirt $USER
- 使用 `newgrp` 命令激活 `libvirt` 组。
sudo newgrp libvirt
- 启用并启动 `libvirtd` 服务。
sudo systemctl enable --now libvirtd
设置桥接接口以直接访问虚拟机¶
- 检查当前正在使用的接口,并记下具有 Internet 连接的主接口。
sudo nmcli connection show
- 删除连接到 Internet 的接口以及当前存在的任何虚拟桥接连接。
sudo nmcli connection delete <CONNECTION_NAME>
警告
请确保您能够直接访问该机器。如果您是通过 SSH 配置机器,在删除主接口连接后,SSH 连接将被中断。
- 创建新的桥接连接。
sudo nmcli connection add type bridge autoconnect yes con-name <VIRTUAL_BRIDGE_CON-NAME> ifname <VIRTUAL_BRIDGE_IFNAME>
- 分配静态 IP 地址。
sudo nmcli connection modify <VIRTUAL_BRIDGE_CON-NAME> ipv4.addresses <STATIC_IP/SUBNET_MASK> ipv4.method manual
- 分配网关地址。
sudo nmcli connection modify <VIRTUAL_BRIDGE_CON-NAME> ipv4.gateway <GATEWAY_IP>
- 分配 DNS 地址。
sudo nmcli connection modify <VIRTUAL_BRIDGE_CON-NAME> ipv4.dns <DNS_IP>
- 添加桥接从属连接。
sudo nmcli connection add type bridge-slave autoconnect yes con-name <MAIN_INTERFACE_WITH_INTERNET_ACCESS_CON-NAME> ifname <MAIN_INTERFACE_WITH_INTERNET_ACCESS_IFNAME> master <VIRTUAL_BRIDGE_CON-NAME>
- 启动桥接连接。
sudo nmcli connection up <VIRTUAL_BRIDGE_CON-NAME>
- 将 `allow all` 行添加到 `bridge.conf`。
sudo tee -a /etc/qemu-kvm/bridge.conf <<EOF
allow all
EOF
- 重启 `libvirtd` 服务。
sudo systemctl restart libvirtd
虚拟机安装¶
- 将 `/var/lib/libvirt` 目录及其子目录的所有权设置为您的用户。
sudo chown -R $USER:libvirt /var/lib/libvirt/
- 您可以使用 `virt-install` 命令在命令行上创建虚拟机。例如,要创建 Rocky Linux 9.5 Minimal VM,可以运行以下命令。
virt-install --name Rocky-Linux-9 --ram 4096 --vcpus 4 --disk path=/var/lib/libvirt/images/rocky-linux-9.img,size=20 --os-variant rocky9 --network bridge=virbr0,model=virtio --graphics none --console pty,target_type=serial --extra-args 'console=ttyS0,115200n8' --location ~/isos/Rocky-9.5-x86_64-minimal.iso
- 对于那些希望通过 GUI 管理其 VM 的用户,`virt-manager` 是一个完美的工具。
如何关闭虚拟机¶
- `shutdown` 命令可以完成此操作。
virsh shutdown --domain <YOUR_VM_NAME>
- 要强制关闭无响应的 VM,请使用 `destroy` 命令。
virsh destroy --domain <YOUR_VM_NAME>
如何删除虚拟机¶
- 使用 `undefine` 命令。
virsh undefine --domain <YOUR_VM_NAME> --nvram
- 有关更多 `virsh` 命令,请参阅 `virsh` 的 `man` 手册页。
结论¶
- libvirt 提供了许多可能性,让您可以轻松地安装和管理您的虚拟机。如果您对此文档有任何进一步的补充或修改建议,作者诚挚地邀请您分享。
作者:Howard Van Der Wal
贡献者:Steven Spencer