以下有使用RedHat9单独的虚拟机也有使用RHEL9学员练习机和RHEL7学员练习机
KVM虚拟技术介绍
Linux的KVM(Kernel-based Virtual Machine)虚拟技术是一种基于Linux内核的虚拟化解决方案。它允许在单个物理服务器上创建和运行多个隔离的虚拟机,每个虚拟机都有自己的操作系统和应用程序,就像运行在独立的物理服务器上一样。
KVM虚拟技术的核心特点包括:
- 硬件虚拟化支持:KVM利用CPU的虚拟化扩展技术,如Intel VT-x或AMD SVM,将物理主机的处理能力划分给虚拟机,提供高效的硬件资源管理。
- 完全虚拟化:KVM支持完全虚拟化,这意味着它可以在虚拟机中运行未经修改的操作系统,实现对多种操作系统和应用程序的支持。
- 性能优化:KVM的硬件虚拟化技术允许虚拟机直接访问物理硬件资源,降低了虚拟化的性能消耗,提供了接近原生性能的运行效果。
- 弹性和可伸缩性:KVM支持动态添加、删除、调整虚拟机的资源,可以根据需求灵活配置虚拟机的CPU、内存和存储等资源。
- 安全性:KVM采用严格的隔离机制,保护不同虚拟机之间的安全,防止一台虚拟机的故障对其他虚拟机造成影响。
- 社区支持:KVM是一个开源项目,拥有庞大的社区支持,提供了丰富的文档和资源,可以帮助用户更好地理解和使用该技术。
KVM的实现基于宿主机模型(Host-based),它集成在Linux内核中,因此可以自然地使用Linux内核提供的内存管理、多处理器支持等功能。这使得KVM易于实现,并且能够随着Linux内核的发展而不断进步。此外,KVM的I/O虚拟化工作通常借助Qemu等工具完成,进一步降低了实现的工作量。
libvirt库
libvirt库是一个实现Linux虚拟化功能的Linux API,它支持各种虚拟机监控程序,包括Xen、KVM以及QEMU等,同时还支持其他操作系统的一些虚拟产品。libvirt库为虚拟机管理提供了一个通用稳定的抽象层,能够安全地操作物理机上的虚拟机。它的主要功能包括虚拟机管理、虚拟设备管理和远程控制。
在虚拟机管理方面,libvirt库提供了定义、删除、启动、关闭、暂停、恢复、保存、回滚和迁移等各种功能。在虚拟设备管理方面,它能够管理各种虚拟外设,如虚拟磁盘、虚拟网卡、内存和虚拟CPU,并且支持多种设备类型的热插拔操作。此外,libvirt库还提供了远程连接功能,通过virsh程序或API,可以远程连接其他物理机的Hypervisor。
libvirt库主要由Libvirt API、Libvirtd进程和virsh工具集三个部分组成。Libvirt API提供了一套与多种操作系统虚拟化能力进行交互的接口,可以在hypervisor支持的范围内创建、修改、监控、迁移和停止虚拟机。Libvirtd进程是libvirt守护进程,负责处理虚拟机的各种请求。virsh工具集则是一组命令行工具,用于管理虚拟机和其他虚拟化资源。
libvirt库是一个强大的虚拟化管理工具,广泛应用于各种IaaS方案中,如OpenStack、OpenNebula和Nimbus等。通过使用libvirt库,用户可以方便地对虚拟机进行管理和操作,提高虚拟化环境的稳定性和灵活性。
在已安装KVM的虚拟机上查看libvirtd命令所在位置
whereis libvirtd
已安装KVM的虚拟机上查看libvirtd配置文件
vim /etc/libvirt/libvirtd.conf # 一共有536行,其中大部分都是注释行
查看服务状态
# libvirtd是libvirt守护进程,负责处理与虚拟化相关的请求,并提供对虚拟机的管理功能
systemctl status libvirtd
安装KVM软件组
标识 | Server |
---|---|
主机 | root@Server |
IP地址 | 192.168.110.1/24 |
软件组 | Virtualization Host |
列出所有软件组
dnf grouplist
安装KVM软件组
dnf groups install -y Virtualization* # 此处需要安装114个软件包
查看已经安装的软件组
dnf grouplist --installed
启动服务
systemctl enable --now libvirtd.service
可以通过virt-manager打开控制台
virt-manager
或者通过菜单栏打开控制台
新建连接
- 选择连接类型:
在“Add Connection”对话框中,你会看到几种不同类型的连接可供选择,比如QEMU/KVM、Xen、LXC等。根据你的环境和需求,选择适当的连接类型。对于大多数基于QEMU/KVM的虚拟化环境,应该选择“QEMU/KVM”连接类型。 - 填写连接详情:
对于选定的连接类型,你需要填写相关的连接详情。对于QEMU/KVM连接,你通常只需要保留默认设置,除非你有特殊的需求,比如使用非默认的URI或需要配置SSH隧道。- Name:为你的连接起一个名字,这样你就可以在virt-manager中轻松识别它。
- Host:如果你的虚拟化环境运行在本机上,通常可以留空。如果是远程主机,则输入远程主机的地址。
- Port:通常使用默认的端口号,除非你的虚拟化环境使用了不同的端口。
- Connect via:对于本地连接,选择“Local (TCP/IP)”。对于SSH隧道,选择“SSH”并填写SSH的详情。
- Authentication:如果需要的话,填写用于身份验证的用户名和密码。
以下保持默认即可
软件网桥
网桥是数据链路层设备,根据MAC地址在网络中转发数据包,在Linux系统可以通过软件网桥模拟实现网桥。在KVM虚拟环境中,可以将多张虚拟网卡共享物理网卡。
网桥的类型
- 类型1:通过NAT,是内部网络和外界通信
- 类型2:使虚拟机可以直连外界物理网络
新建软件网桥br10
nmcli connection add type bridge con-name br10 ifname br10 # 先创建软件网桥
nmcli connection add type bridge-slave con-name br10-port1 ifname ens160 master br10 # 将ens160网卡与软件网桥连接
nmcli connection up br10 # 启动连接
新建KVM虚拟机–图形界面
打开Virtual Machine Manager控制台
选择安装操作系统的方式
- Localinstall media (lSO image or CDROM)【本地安装介质(ISO映像或CDROM)】
- NetworkInstall (HTTP, HTTPS, Or FTP)【网络安装(HTTP/HTTPS/FTP)】
- Import existing disk image【导入现有磁盘映像】
- Manual install【手动安装】
以下选择本地安装介质
选择安装介质的位置,我们提前将需要将iso镜像移动到qemu用户能访问的目录下
- 可以移动到默认目录下:/var/lib/libvirt/images
- 或者是我们下面所使用的目录:/tmp
选择CPU和内存,这里默认即可
选择硬盘