如果您在字典中查找“virtualize”一词,您会发现它的意思是“创建某物的虚拟(而非实际)版本”。在计算机领域,虚拟化一词指的是在同一物理(硬件)系统的顶部同时运行多个操作系统并将它们相互隔离的可能性,这在虚拟化模式中被称为主机。

通过使用虚拟机监视器(也称为hypervisor),虚拟机(称为客户机)从底层硬件获得虚拟资源(例如CPU、RAM、存储、网络接口等)。
有了这个概念,很明显虚拟化的主要优势之一是节约成本(在设备和网络基础设施方面以及在维护工作方面),以及减少容纳所有必要硬件所需的物理空间。
由于这篇简短的操作说明无法涵盖所有虚拟化方法,我鼓励您参考摘要中列出的文档以获取有关该主题的更多详细信息。
请记住,本文旨在作为学习在RHEL 7中使用KVM(基于内核的虚拟机)和命令行实用程序学习虚拟化基础知识的起点,而不是对该主题进行深入讨论。
验证硬件要求并安装软件包
为了设置虚拟化,您的 CPU 必须支持。您可以使用以下命令验证系统是否符合要求:
# grep -E 'svm|vmx' /proc/cpuinfo
在下面的截图中,我们可以看到当前系统(带有 AMD 微处理器)支持虚拟化,如 svm 所示。如果我们使用基于 Intel 的处理器,我们将在上述命令的结果中看到 vmx。

此外,您需要在主机的固件(BIOS 或 UEFI)中启用虚拟化功能。
现在安装必要的软件包:
- qemu-kvm 是一个开源虚拟化程序,为 KVM hypervisor 提供硬件仿真,而 qemu-img 提供一个用于操作磁盘映像的命令行工具。
- libvirt 包括与操作系统的虚拟化功能交互的工具。
- libvirt-python 包含一个模块,允许用 Python 编写的应用程序使用 libvirt 提供的接口。
- libguestfs-tools:用于虚拟机的各种系统管理员命令行工具。
- virt-install:用于虚拟机管理的其他命令行实用程序。
# yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install
安装完成后,请确保启动并启用 libvirtd 服务。
# systemctl start libvirtd.service # systemctl enable libvirtd.service
默认情况下,每个虚拟机只能与同一物理服务器中的其他虚拟机和主机进行通信。为了让客户端能够访问我们局域网内的其他机器以及互联网,我们需要在主机上设置一个桥接接口(比如说 br0),方法如下:
1. 将以下行添加到我们主要网卡配置文件(很可能是 /etc/sysconfig/network-scripts/ifcfg-enp0s3
)中:
BRIDGE=br0
2. 创建 br0 的配置文件(/etc/sysconfig/network-scripts/ifcfg-br0
),内容如下(请注意可能需要更改 IP 地址、网关地址和 DNS 信息):
DEVICE=br0 TYPE=Bridge BOOTPROTO=static IPADDR=192.168.0.18 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 NM_CONTROLLED=no DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=br0 ONBOOT=yes DNS1=8.8.8.8 DNS2=8.8.4.4
3. 最后,在 /etc/sysctl.conf
中启用数据包转发,然后加载更改到当前内核配置中:
net.ipv4.ip_forward = 1
# sysctl -p
请注意,您可能还需要告诉 firewalld 允许此类流量。请记住,如果需要帮助,可以参考本系列中有关该主题的文章(第11部分:使用FirewallD和Iptables进行网络流量控制)。
Source:
https://www.tecmint.com/kvm-virtualization-basics-and-guest-administration/