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

news2024/10/9 16:25:32

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.coloradmin.cn/o/1568350.html

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

相关文章

基于SpringBoot+Vue的版权检测管理系统的设计和实现【附源码】

1、系统演示视频(演示视频) 2、需要交流和学习请联系

ALPHA开发板上PHY网络芯片LAN8720

一. 简介 正点原子的开发板 ALPHA开发板,有线网络硬件方案所使用的也是最常用的一种方案,IMX6ULL芯片内部是自带 MAC网络芯片的,所以,也就是采用 "SOC内部集成网络MAC外设 PHY网络芯片方案"。 ALPHA开发板使用的PHY网…

web框架的本质初识

1.什么是HTML HTML是一个超文本语言,是一种创建网页结构的标记语言。就是你女朋友化妆之后的样子 2.什么是HTTP协议 是一种用于在Web上传输数据的协议。它是客户端和服务器之间进行相互通信的基础的协议 3.HTTP的特点 无连接:每个http请求都是独立的…

go库x/text缺陷报告CVE-2022-32149的处理方案

#问题描述 go库 golang.org/x/text ,注意这里不是go的源码, 在0.3.8版本之前存在一个缺陷(Vulnerability) 缺陷ID CVE-2022-32149 具体描述 攻击者可以通过制作一个Accept-Language报头来导致拒绝服务。 具体的原因是,在解析这个Accept-L…

Vue 如何快速上手

目录 1. Vue 是什么 (概念) 1.1. Vue 的两种使用方式 1.2. 优点 1.3. 缺点 2. 创建 Vue 实例,初始化渲染 2.1. 步骤(核心步骤 4步) 2.2. 练习——创建一个Vue实例 3. 插值表达式 {{ }} 3.1. 介绍 3.2. 作用…

【Linux实验室】NFS、DHCP的搭建

NFS、DHCP的搭建 1、nfs服务搭建及测试什么是NFS?环境准备服务端机器安装nfs-utils和rpcbind包启动NFS服务创建/data/NFSdata目录,配置nfs文件启动服务挂载测试在服务端在共享目录下创建文件测试在客户端在共享目录下创建文件 2、dhcp服务搭建及测试什么…

python相对路径导包与绝对路径导包的正确方式

【python相对路径导包与绝对路径导包的正确方式】 python相对路径导包与绝对路径导包的正确方式_哔哩哔哩_bilibilipython导包的难题,今天解决了,相对路径导包和绝对路径导包,均可以!!!, 视频播放量 5、弹…

golang 归并回源策略

前言 下面是我根据业务需求画了一个架构图,没有特别之处,很普通,都是我们常见的中间件,都是一些幂等性GET 请求。有一个地方很有意思,从service 分别有10000 qps 请求到Redis,并且它们的key 是一样的。这样…

GDPU 竞赛技能实践 天码行空6

📖 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工…

数据库管理工具 DBeaverUE for Mac激活版

DBeaverUE for Mac是一款功能强大且易于使用的数据库管理工具,专为Mac用户设计。它支持多种数据库类型,如MySQL、PostgreSQL、Oracle等,使得用户可以轻松管理和操作各种数据库。 软件下载:DBeaverUE for Mac激活版下载 DBeaverUE …

GrayLog日志平台的基本使用-接入jumpserver

1、jumpserver3.8.0部署 Docker 环境准备 # 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 替换Docker 安装源为清华大学镜像站 sed -i sh…

《pytorch深度学习实战》学习笔记第2章

第2章 预训练网络 讨论3种常用的预训练模型: 1、根据内容对图像进行标记(识别) 2、从真实图像中生成新图像(GAN) 3、使用正确的英语句子来描述图像内容(自然语言) 2.1 获取一个预训练好的网络…

el-upload上传图片图片、el-load默认图片重新上传、el-upload初始化图片、el-upload编辑时回显图片

问题 我用el-upload上传图片,再上一篇文章已经解决了,el-upload上传图片给SpringBoot后端,但是又发现了新的问题,果然bug是一个个的冒出来的。新的问题是el-upload编辑时回显图片的保存。 问题描述:回显图片需要将默认的 file-lis…

A53 cache的架构解读

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 引流关键词:缓存,高速缓存,cache, CCI,CMN,CCI-550,CCI-500,DSU,SCU,L1,L2,L3,system cache, Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、…

精准扶贫管理系统|基于Springboot的精准扶贫管理系统设计与实现(源码+数据库+文档)

精准扶贫管理系统目录 目录 基于Springboot的精准扶贫管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1)用户信息管理 (2)贫困户信息管理 (3)新闻类型管理 &a…

【Java EE】关于Maven

文章目录 🎍什么是Maven🌴为什么要学Maven🌲创建⼀个Maven项目🌳Maven核心功能🌸项目构建🌸依赖管理 🍀Maven Help插件🎄Maven 仓库🌸本地仓库🌸私服 ⭕总结 …

Unity类银河恶魔城学习记录12-3 p125 Limit Inventory Slots源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Inventory.cs using Newtonsoft.Json.Linq; using System.Collections; us…

Linux 线程:线程互斥、互斥量、可重入与线程安全

目录 一、线程互斥 1、回顾相关概念 2、抢票场景分析代码 多个线程同时操作全局变量 产生原因 如何解决 二、互斥量 1、概念 2、初始化互斥量: 方法1:静态分配 方法2:动态分配 3、销毁互斥量: 4、加锁和解锁 示例抢…

多忽悠几次AI全招了!Anthropic警告:长上下文成越狱突破口,GPT羊驼Claude无一幸免

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 大模型厂商在上下文长度上卷的不可开交之际,一项最新研究泼来了一盆冷水—— Cl…

计算机网络-HTTP相关知识-HTTP的发展

HTTP/1.1 特点: 简单:HTTP/1.1的报文格式包括头部和主体,头部信息是键值对的形式,使得其易于理解和使用。灵活和易于扩展:HTTP/1.1的请求方法、URL、状态码、头字段等都可以自定义和扩展,使得其具有很高的…