hecgdge4 发表于 2024-9-11 15:03:10

在CentOS 8服务器中安装和配置KVM:详细步骤与指南

在安装KVM之前,首先请确保您的系统支持硬件虚拟化。(一般询问服务器提供商是否支持即可)如果您的系统支持硬件虚拟化,请继续以下步骤。
在CentOS 8服务器中安装和配置KVM
就本指南而言,我将使用以下系统:
KVM虚拟服务器:
操作系统 – CentOS 8最小化服务器(无GUI)
IP地址:192.168.225.53/24
尽管它是在CentOS 8上测试的,但在RHEL 8上也应该也是可以的。
1、在CentOS 8中安装KVM
注意:本教程中给出的所有命令均应以“root”用户身份运行。如果您以普通用户身份登录,请在以下所有命令的前面添加“sudo”。
使用“root”用户命令安装Kvm和所有必需的依赖项以在CentOS 8服务器上设置虚拟化环境:
# dnf install qemu-kvm libvirt virt-install
其中:
emu-kvm –支持KVM的QEMU元软件包(即,x86硬件上的QEMU完全虚拟化),
libvirt – libvirt库的程序,
virt-install –用于创建和克隆虚拟机的程序。
安装KVM后,启用并启动libvertd服务(如果尚未启动):
# systemctl enable libvirtd
# systemctl start libvirtd
您还可以结合使用这两个命令,并像下面这样单行运行它们:
# systemctl enable --now libvirtd
使用以下命令检查libvirtd服务的状态:
# systemctl status libvirtd
样本输出:

libvertd服务已启动并正在运行!
验证是否已加载KVM模块:
# lsmod | grep kvm
样本输出:

KVM模块已加载。现在让我们创建一个网桥。
2、在CentOS中使用KVM设置网桥网络
桥接网络与其他VM共享主机的真实网络接口,以连接到外部网络。因此,每个VM可以像物理计算机一样直接绑定到任何可用的IPv4或IPv6地址。
默认情况下,KVM会设置一个专用虚拟网桥,以便所有VM都可以在主机内相互通信。它提供了自己的子网和DHCP,以配置来宾网络,并使用NAT访问主机网络。
使用“ ip”命令查看KVM默认虚拟接口的IP地址:
#ip a

如您所见,KVM默认网络virbr0使用192.168.122.1/24 IP地址。所有VM都将使用192.168.122.0/24 IP范围内的IP地址,并且主机操作系统将可访问192.168.122.1。您应该能够从来宾OS内SSH进入主机OS(位于192.168.122.1),并使用scp来回复制文件。
如果仅从主机本身访问内部的VM,那就可以了。但是,您无法从网络中的其他远程系统访问VM。因为我使用的是不同的IP范围,即192.168.225.0/24。为了从其他远程主机访问VM,我们必须设置在主机网络上运行并使用主机网络上任何外部DHCP服务器的公共网桥。用外行术语来说,我们将使所有VM都使用主机系统使用的相同IP系列。
设置公共桥接网络之前,出于性能和安全原因,我们应该禁用Netfilter。默认情况下,当前在网桥上启用Netfilter。
要禁用netfilter,请创建一个名为/etc/sysctl.d/bridge.conf的文件:
# vi /etc/sysctl.d/bridge.conf
添加以下行:
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
net.bridge.bridge-nf-call-arptables=0
保存并关闭文件。
然后创建另一个名为/etc/udev/rules.d/99-bridge.rules的文件:
# vi /etc/udev/rules.d/99-bridge.rules
添加以下行:
ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"
这将设置必要的标志,以在系统启动的适当位置禁用网桥上的netfilter。保存并关闭文件。重新引导系统以使这些更改生效。
接下来,我们应该禁用KVM为其本身安装的默认网络。
使用“ ip link”命令查找KVM默认网络接口的名称:
# ip link

如您在上面的输出中看到的,“virbr0”和“virbr0-nic”是KVM网络。
让我们使用以下命令删除默认的KVM网络:
# virsh net-destroy default
使用以下命令取消定义默认网络:
# virsh net-undefine default

如果以上命令由于任何原因都不起作用,则可以使用以下命令禁用和取消定义KVM默认网络:
# ip link delete virbr0 type bridge
# ip link delete virbr0-nic
现在再次运行“ ip link”以验证virbr0和virbr0-nic接口是否已被删除:
# ip link
样本输出:

好吧,KVM默认网络不见了。
现在,让我们设置KVM公共桥,以在创建新VM时使用。
使用“ nmcli”命令创建一个名为“ br0”的新桥接接口:
# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0
设置网桥接口的IP地址:
# nmcli connection modify br0 ipv4.addresses 192.168.225.53/24 ipv4.method manual
为网桥接口设置网关:
# nmcli connection modify br0 ipv4.gateway 192.168.225.1
为网桥接口设置DNS:
# nmcli connection modify br0 ipv4.dns 192.168.225.1
接下来,我们需要删除您的网络接口卡之一,并将其作为从属服务器添加到网桥。
请注意,如果您的服务器只有一个NIC,并且您正在通过SSH访问服务器,则在删除NIC之后,连接将终止。建议您在服务器的控制台中执行以下步骤。
例如,我将“ enp0s8”接口作为从属接口添加到桥接接口br0。
要删除网络接口“ enp0s8”,请运行:
# nmcli connection del enp0s8
用您自己的网卡名称替换“ enp0s8”。
注意:
请勿将无线网络接口卡用于网桥。大多数无线隔行扫描不支持桥接。始终使用有线网络接口进行无缝连接!
接下来,使用命令将“ enp0s8”添加到网桥:
# nmcli connection add type bridge-slave autoconnect yes con-name enp0s8 ifname enp0s8 master br0
在此,网桥网络接口“ br0”连接到主机的网络接口“ enp0s8”。替换与您的网络匹配的上述网络接口名称。
重新启动网络管理器以使更改生效:
# systemctl restart NetworkManager
如果可以的话,最好重新启动系统:
# reboot
登录到您的服务器,并检查IP地址是否已分配给网桥接口:
$ ip a
样本输出:

在Linux中从命令行检查KVM桥IP地址
从上面的输出中可以看到,已为桥接网络接口br0分配了IP地址192.168.225.53,并且enp0s8条目现在具有“ master br0”条目。这意味着enp0s8属于网桥。
您也可以使用“ bridge”命令显示网桥状态:
# bridge link show br03: enp0s8:mtu 1500 master br0 state forwarding priority 32 cost 100,multicast,up,lower_up>
我们已经成功创建了网桥接口,并且该接口处于活动状态。我们需要做最后一件事。
我们应该将KVM配置为使用此网桥接口作为默认接口。为此,创建一个名为host-bridge.xml的XML文件:
# vi host-bridge.xml
添加以下行:
host-bridge
运行以下命令以启动新创建的网桥,并将其作为虚拟机的默认网桥:
# virsh net-define host-bridge.xml
# virsh net-start host-bridge
# virsh net-autostart host-bridge

配置KVM以将网桥接口用作所有VM的默认接口
使用以下命令验证网桥是否处于活动状态并已启动:
# virsh net-list --all
样本输出:

使用virsh命令验证KVM主机桥接状态
至此,我们已成功在CentOS 8无头服务器中安装并配置了KVM。
创建和管理KVM来宾计算机
我们可以从命令行或使用任何KVM管理工具(如Cockpit和Virt-manager)创建和管理VM,请参考(如何使用Virt-Manager管理KVM虚拟机)。
页: [1]
查看完整版本: 在CentOS 8服务器中安装和配置KVM:详细步骤与指南