RHCSA 系列:使用 KVM 进行虚拟化和客户机管理的基础知识 - 第 15 部分
如果您在词典中查找“虚拟化”一词,您会发现它的意思是“创建某物的虚拟(而非实际)版本”。在计算领域,术语“虚拟化”是指在同一物理(硬件)系统(在虚拟化架构中称为主机)上同时运行多个操作系统并使其彼此隔离的可能性。
通过使用虚拟机监视器(也称为hypervisor),虚拟机(称为guest)可以从底层硬件获得虚拟资源(即 CPU、RAM、存储、网络接口等)。
考虑到这一点,不难看出虚拟化的主要优势之一是节省成本(在设备和网络基础设施以及维护工作方面)以及大幅减少容纳所有必要硬件所需的物理空间。
由于这个简短的操作指南无法涵盖所有虚拟化方法,我建议您参考摘要中列出的文档以获取有关该主题的更多详细信息。
请记住,本文旨在作为使用KVM (基于内核的虚拟机)和命令行实用程序学习RHEL 7中虚拟化基础知识的起点,而不是对该主题的深入讨论。
验证硬件要求并安装软件包
为了设置虚拟化,您的 CPU 必须支持它。您可以使用以下命令验证您的系统是否满足要求:
# grep -E 'svm|vmx' /proc/cpuinfo
在以下屏幕截图中,我们可以看到当前系统(带有AMD微处理器)支持虚拟化,如svm所示。如果我们有基于 Intel 的处理器,我们将在上述命令的结果中看到vmx 。
此外,您还需要在主机固件(BIOS或UEFI)中启用虚拟化功能。
现在安装必要的软件包:
- qemu-kvm是一个开源虚拟器,它为 KVM 管理程序提供硬件模拟,而 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.在我们的主 NIC 配置中添加以下行(最有可能/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进行网络流量控制)。