RedHat9中KVM虚拟机的配置与管理

KVM虚拟技术介绍

Linux的KVM(Kernel-based Virtual Machine)虚拟技术是一种基于Linux内核的虚拟化解决方案。它允许在单个物理服务器上创建和运行多个隔离的虚拟机,每个虚拟机都有自己的操作系统和应用程序,就像运行在独立的物理服务器上一样。

KVM虚拟技术的核心特点包括:

  1. 硬件虚拟化支持:KVM利用CPU的虚拟化扩展技术,如Intel VT-x或AMD SVM,将物理主机的处理能力划分给虚拟机,提供高效的硬件资源管理。
  2. 完全虚拟化:KVM支持完全虚拟化,这意味着它可以在虚拟机中运行未经修改的操作系统,实现对多种操作系统和应用程序的支持。
  3. 性能优化:KVM的硬件虚拟化技术允许虚拟机直接访问物理硬件资源,降低了虚拟化的性能消耗,提供了接近原生性能的运行效果。
  4. 弹性和可伸缩性:KVM支持动态添加、删除、调整虚拟机的资源,可以根据需求灵活配置虚拟机的CPU、内存和存储等资源。
  5. 安全性:KVM采用严格的隔离机制,保护不同虚拟机之间的安全,防止一台虚拟机的故障对其他虚拟机造成影响。
  6. 社区支持: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库,用户可以方便地对虚拟机进行管理和操作,提高虚拟化环境的稳定性和灵活性。

查看RHEL9学员练习机上的libvirtd命令所在位置

whereis libvirtd

在这里插入图片描述

查看RHEL9学员练习机上libvirtd配置文件

vim /etc/libvirt/libvirtd.conf

查看服务状态

# libvirtd是libvirt守护进程,负责处理与虚拟化相关的请求,并提供对虚拟机的管理功能
systemctl status libvirtd

在这里插入图片描述

安装KVM软件组

标识Server
主机root@Server
IP地址192.168.110.1/24
软件组Virtualization Host

列出所有软件组

dnf grouplist

在这里插入图片描述

查看已经安装的软件组

dnf grouplist --installed

在这里插入图片描述

安装KVM软件组

dnf groups install Virtualization*		# 此处需要安装114个软件包

在这里插入图片描述
在这里插入图片描述

启动服务

systemctl enable --now libvirtd.service

在这里插入图片描述

可以通过virt-manager打开控制台

virt-manager

在这里插入图片描述

或者通过菜单栏打开控制台
在这里插入图片描述

新建连接

  1. 选择连接类型
    在“Add Connection”对话框中,你会看到几种不同类型的连接可供选择,比如QEMU/KVM、Xen、LXC等。根据你的环境和需求,选择适当的连接类型。对于大多数基于QEMU/KVM的虚拟化环境,你应该选择“QEMU/KVM”连接类型。
  2. 填写连接详情
    对于选定的连接类型,你需要填写相关的连接详情。对于QEMU/KVM连接,你通常只需要保留默认设置,除非你有特殊的需求,比如使用非默认的URI或需要配置SSH隧道。
    • Name:为你的连接起一个名字,这样你就可以在virt-manager中轻松识别它。
    • Host:如果你的虚拟化环境运行在本机上,通常可以留空。如果是远程主机,则输入远程主机的地址。
    • Port:通常使用默认的端口号,除非你的虚拟化环境使用了不同的端口。
    • Connect via:对于本地连接,选择“Local (TCP/IP)”。对于SSH隧道,选择“SSH”并填写SSH的详情。
    • Authentication:如果需要的话,填写用于身份验证的用户名和密码。

以下保持默认即可
在这里插入图片描述
在这里插入图片描述

新建KVM虚拟机–图形界面

在这里插入图片描述

选择安装操作系统的方式

  • Localinstall media (lSO image or CDROM)【本地安装介质(ISO映像或CDROM)】
  • NetworkInstall (HTTP, HTTPS, Or FTP)【网络安装(HTTP/HTTPS/FTP)】
  • Import existing disk image【导入现有磁盘映像】
  • Manual install【手动安装】

以下选择本地安装介质
在这里插入图片描述

选择安装介质的位置,我们提前将ISO文件移动到默认目录下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择CPU和内存,这里默认即可
在这里插入图片描述

选择硬盘空间,同样是默认
在这里插入图片描述

输入虚拟机名称和选择网络连接
在这里插入图片描述

解除热键为Ctrl+Alt
在这里插入图片描述

关闭虚拟机
在这里插入图片描述

为虚拟机连接映像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看开机启动选项/启动菜单,可以改为网卡启动,可以实现kickstart自动安装
在这里插入图片描述

新建KVM虚拟机–命令行

新建一个具有2GB内存、2个虚拟CPU和20G磁盘空间的虚拟机 并选择ISO镜像文件

virt-install --name rhel9.2-2 --ram 2048 --vcpus 2 --location /var/lib/libvirt/images/rhel-9.2-x86_64-linuxprobe.com.iso --os-variant=rhl9 --disk /var/lib/libvirt/images/rhel9.2-2.qcow2,size=20,sparse=false -w network=default --graphics vnc,listen="0.0.0.0",port=5949
  • --name-n:设置虚拟机的名称
  • --ram-r:为虚拟机分配的内存(MB)
  • --vcpus:为虚拟机分配的虚拟CPU核心
  • --location-l:指定安装源的位置
  • --os-variant:指定操作系统的变种为rhel9,利于优化虚拟机的配置
    • 可以通过virt-install --osinfo list查看详细
  • --disk:虚拟机的磁盘设置
    • 磁盘文件路径为:/var/lib/libvirt/images/rhel9.2-2.qcow2
    • 磁盘格式为qcow2
    • 磁盘大小为20GB
    • sparse=false:不使用稀疏格式,预先分配整个磁盘空间
  • -w network=default:虚拟机连接的网络为default
  • --graphics vnc,listen="0.0.0.0",port=5949 :设置虚拟机的图形界面
    • 使用协议为VNC
    • 监听所有网络接口
    • VNC服务的端口号为5949
      在这里插入图片描述
      在这里插入图片描述

连接的VNC界面
在这里插入图片描述

通过VNC远程控制KVM虚拟机安装

方法1-新添加插件

添加Overview插件
在这里插入图片描述

选择Graphics
在这里插入图片描述

删除掉原有的VNC
在这里插入图片描述

方法2-直接编辑原有插件

编辑原有插件
在这里插入图片描述

保证VNC客户端可以ping通宿主机
在这里插入图片描述

开机
在这里插入图片描述
在这里插入图片描述

VNC连接

在这里插入图片描述
在这里插入图片描述

管理虚拟机

启动虚拟机

virsh start virname

关闭虚拟机

virsh shutdown virname

重启虚拟机

virsh reboot virname

查看虚拟机列表

virsh list --all

在这里插入图片描述

快照管理

创建快照

virsh snapshot-create-as --domain virname --name new --description "Original environment"
  • snapshot-create-as:创建快照
  • --domain:虚拟机的名称或者ID
  • --name:快照的名称
  • --description:对快照的描述

恢复快照

virsh snapshot-revert --domian virname --snapshotname new
  • snapshot-revert:恢复快照
  • --domain:虚拟机的名称或ID
  • --snapshotname:快照的名称

删除快照

virsh snapshot-delete --domain virname --snapshotname snapshot1
  • snapshot-delete:删除快照
  • --domain:虚拟机的名称或ID
  • --snapshotname:快照的名称

报错信息汇总

新建虚拟机出现 Error:No active connection to install on

在这里插入图片描述

这通常意味着virt-manager找不到一个激活的虚拟机连接(通常是libvirtd管理的一个连接),或者没有配置好虚拟机存储和网络连接

  • 检查libvirtd服务
systemctl status libvirtd
# 如果没有运行,需要运行该服务
systemctl enable --now libvirtd		# 启动服务并加入开机自启
  • 检查是否有可用的连接
通常默认会存在一个QEMU/KVM连接,如果没有需要手动添加连接
  • 检查权限
# 如果不是以root用户运行virt-manager,需要确保当前用户被添加到libvirt组中
usermod -aG libvirt user
连接映像时“Permission denied”意味着文件访问权限被拒绝

错误发生在QEMU尝试访问指定的ISO镜像文件时,因为它没有足够的权限来打开这个文件。错误信息中提到的“Permission denied”意味着文件访问权限被拒绝。

在这里插入图片描述

  • 更改ISO文件的位置
# 将ISO文件移动到一个libvirt进程可以访问的目录
sudo mv /root/rhel-9.2-x86_64-linuxprobe.com.iso /var/lib/libvirt/images/
  • 更改ISO文件的权限
# 更改文件的权限,让libvirt用户(qemuva	)能够读取它
chown libvirt-qemu:libvirt-qemu /root/rhel-9.2-x86_64-linuxprobe.com.iso  
chmod 440 /root/rhel-9.2-x86_64-linuxprobe.com.iso

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589057.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎架构01__引擎架构图

根据游戏引擎架构预设的引擎架构来构建运行时引擎架构 ​

SQL server中创建了表,却查不到

查询时遇到了一些问题: 在数据库中我们建立了一个表,名为stu2,但是在执行查询此表时却遇到了一些问题: 消息 208,级别 16,状态 1,第 1 行 对象名 stu2 无效。 原因可能有一下几点&#xff1…

深入理解npm常用命令

npm(Node Package Manager)是 Node.js 的包管理工具,用于管理 Node.js 应用程序的依赖包。除了安装、更新和卸载依赖包外,npm 还提供了许多其他功能,如初始化项目、运行脚本、查看依赖树等。本文将详细介绍一些常用的 …

【Unity每日一记】(Canvas的相机渲染模式) 如何将模型显示在UI之前

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

UE4_破碎插件的蓝图节点_Apply Radius Damage

一、知识点 Apply Radius Damage:破碎组件所带的蓝图节点。 二、使用方法: 1、设置——插件,搜索destruction,找到 Apex Destruction,勾选已启用。重启虚幻编辑器。 2、这样右键操作就有创建可破坏的网格体菜单,将do…

昇腾glm3大模型lora微调及推理

模型介绍 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:更强大的基础模…

2024年全新靠谱的FTP替代升级解决方案

随着企业规模的扩大和业务的多元化,传统的TCP协议在数据传输效率上逐渐显现出局限性。TCP协议虽然以其稳定性和可靠性被广泛应用,但在面对大规模数据传输时,其性能瓶颈逐渐成为企业发展的阻碍。同时,基于TCP的应用协议如Telnet、F…

mysql不区分大小写配置

一、背景 在默认情况下,MySQL是大小写敏感的。这意味着在查询表名、列名或关键字时,必须精确匹配大小写。然而,在某些情况下,我们可能希望数据库忽略大小写,以便更方便地进行操作。 一、查看当前设置 show variables l…

Spring Boot 学习(1)——环境搭建

一只老辣鸟的自我救赎 不科普,简单记录学习过程。 开发环境约束: jdk1.8 Spring Boot 1.5.9 Spring 4.3.13 Maven 3.3.3 Intellij IDEA 2017 【脑瓜灵光的开发环境随意,不灵光尽量按上述约束设置。看了好些教程总…

Ros安装编译Navigation

mkdir ros_nav_ws/src -p cd ros_nav_ws/src git clone https://github.com/ros-planning/navigation.git cd .. catkin_make 编译过程中可能出现的错误 error1:Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) solution:安装所缺少的依赖…

Protobuf 二进制文件学习及解析

0. 简介 protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。 由于它是一种二进制的…

【图论】【树】 【拓扑排序】2603. 收集树中金币

本文涉及知识点 图论 树 拓扑排序 LeetCode 2603. 收集树中金币 给你一个 n 个节点的无向无根树,节点编号从 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间有一条边。再给你…