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.mzph.cn/news/791099.shtml

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

相关文章

MyBatis入门到掌握(JAVA)

建立连接可能涉及到的问题(只需要自己改一下就行) 1、MyBatis是⼀款优秀的 持久层 框架,⽤于简化JDBC的开发 2、数据库连接配置 (1)yml配置 # 数据库连接配置 spring:datasource:url: jdbc:mysql://127.0.0.1:3306/…

OAuth2-03-springboot 整合

拓展阅读 OAuth 2.0-01-Overview OAuth2-02-java 整合 OAuth2-03-springboot 整合 序言 安全性是暴露由许多微服务组成的公共访问API时要考虑的最重要的一个方面。 Spring有一些有趣的功能和框架,使我们的微服务安全配置更容易。 在本文中,我将向…

基于SpringBoot的“致远汽车租赁系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“致远汽车租赁系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 致远汽车租赁系统总体功能模块图 系统首页界…

2024年 前端JavaScript 进阶 第3天 笔记

3.1-JS进阶-内容和两种编程思想 3.2-构造函数实现封装以及存在 3.3-原型对象prototype 3.4-数组扩展案例-求最大值和数组求和 3.5-constructor属性以及应用 3.6-对象原型proto 3.7-原型继承 3.8-原型链以及instanceof运算符 3.9-综合案例-模态框构造函数写法 3.10-综合案例-0pe…

Phpstorm配置Xdebug

步骤 1、先去官网找到对应的php xdebug的版本 2、配置phpstorm断点调试 网址:https://xdebug.org/ 查看php对应的xdebug版本:Xdebug: Support — Tailored Installation Instructions 1.1查看对应php xdebug版本 全选,复制到目标网址 我…

笔记本三屏异显方案——更新中,是否能够在FPGA上实现,淘宝购物的价格太贵

三屏是(笔记本电脑屏幕,两个显示器屏幕),异显是采用屏幕的扩展功能,这样能够左边看视频文章,右边control cv代码。 一、 电脑有一个HDMI口的时候,只需要买一个TypeC(雷电接口&#x…

FreeBSD下如何进行添加路由等配置?

FreeBSD系统可以当作一台路由器来使用,实际上当年路由器刚刚出来的时候,有很大一部分就是用主机安装FreeBSD来提供路由功能的。 路由的基础知识 路由,就是计算机网络中决定数据包从源地址到目的地址路径的一种传输过程。路由表,就…

【前端Vue】社交信息头条项目完整笔记第3篇:三、个人中心,TabBar 处理【附代码文档】

社交媒体-信息头条项目完整开发笔记完整教程(附代码资料)主要内容讲述:一、项目初始化使用 Vue CLI 创建项目,加入 Git 版本管理,调整初始目录结构,导入图标素材,引入 Vant 组件库,移动端 REM 适配。二、登录注册准备,实现基本登录功能,登录状…

vue 数据埋点

最近菜鸟做项目,需要做简单的数据埋点,不是企业级的,反正看渡一的视频,企业级特别复杂,包括但不限于:错误收集、点击地方、用户行为…… 菜鸟的需求就是简单收集一下用户的ip、地址、每个界面的访问时间&a…

技术揭秘:如何打造完美互动的充电桩硬件与服务平台?

充电桩平台全套源码地址 https://gitee.com/chouleng/cdzkjjh.git 这张图像是一个系统或服务的架构图。以下是对图中各个部分的描述: 前端: 位于图像的顶部,颜色为浅绿色。用户服务端: 紧邻前端,颜色为淡黄色。设备服…

MOS管小电流发热怎么处理?

01 MOSFET的击穿有哪几种? Source、Drain、Gate —— 场效应管的三极:源级S、漏级D、栅级G。(这里不讲栅极GOX击穿了啊,只针对漏极电压击穿) 先讲测试条件,都是源栅衬底都是接地,然后扫描漏极…

【局部路径规划算法】—— DWA动态窗口法(c++实现))

参考资料: (1)机器人局部避障的动态窗口法(dynamic window approach) (2)机器人局部避障的动态窗口法 (3)局部规划算法:DWA算法原理 (4)SLAM学习:…

安卓开机动画

目录 一、开机动画的2种模式1.1 android模式2.2 movie模式 二、开机动画代码运行位置三、删除开机动画四、自定义开机动画实践 一、开机动画的2种模式 一种是使用两张图片利用某种效果来造成动态,另一种则是用一个图包循环显示的方式来形成动态。当然,这…

软考高级架构师:CISC (复杂指令集计算机) 和 RISC (精简指令集计算机)概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

去班味的尽头是风险管理

运维工程师的“班味”是从风险管理就加重的。 什么是班味呢?指的是打工人身上特有的疲惫气质,面色憔悴、双目无神和腰酸背痛都是“班味”的显著表现。习惯性回复“收到,马上来”、不自觉唉声叹气、下班也提不起精神等症状,则说明…

Spring Boot:Web开发之视图模板技术的整合

Spring Boot 前言Spring Boot 整合 JSPSpring Boot 整合 FreeMarkerSpring Boot 整合 ThymeleafThymeleaf 常用语法 前言 在 Web 开发中,视图模板技术(如 JSP 、FreeMarker 、Thymeleaf 等)用于呈现动态内容到用户界面的工具。这些技术允许开…

后端SpringBoot+Mybatis 查询订单数据表奇怪报错加一

排错过程: 看报错意思是SQL语句存在错误,然后使用图形化工具运行这个SQL语句 其实这里稍微细心想一下就能发现问题,但是当时没深入想,就觉得order表前加了数据库名字影响不大,所以感觉SQL语句是没问题的,然…

JavaScript基础代码练习之翻转数组

一、要求将给定数组 [red, green, blue, pink, purple] 的内容反转存放&#xff0c;并将结果输出到控制台。 二、编写代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" cont…

Appium如何自动判断浏览器驱动

问题&#xff1a;有的测试机chrome是这个版本&#xff0c;有的是另一个版本&#xff0c;怎么能让自动判断去跑呢&#xff1f;&#xff1f; 解决办法&#xff1a;使用appium的chromedriverExecutableDir和chromedriverChromeMappingFile 切忌使用chromedriverExecutableDir和c…

19c使用Datapump做数据迁移

环境&#xff1a; 源库目标库IP192.168.37.200192.168.37.201系统版本RedHat 7.9RedHat 7.9数据库版本19.3.0.0.019.3.0.0.0SIDbegtarhostnamebegtar数据量412KB 详细说明&#xff1a;因为只是做练习&#xff0c;这里采用了两个单例19c作为源端和目的端服务器&#xff0c;环境…