kvm虚拟化平台部署
-
kvm虚拟化平台部署
-
kvm概念简介
-
kvm自linux2.6版本以后就整合到内核中,因此可以看做是一个原生架构.
-
kvm虚拟化架构
-

-
硬件底层提供物理层面的硬件支持
-
linux(host),就相当于这个架构中的宿主机,上面运行了多个虚拟机。
-
-
-
kvm组成部分
-
基于内核支持的kvm模块
-
根据qemu模拟出的硬件设备模拟出虚拟化环境
-
-
qemu(快速仿真器)
-
模拟出硬件设备
-
-
-
kvm运行时额三种模式
-
客户模式
-
这是操作系统内核运行的地方,拥有最高级别的权限,可以直接访问硬件资源。 在KVM中,内核模式下的KVM模块负责处理虚拟化相关的任务,如创建虚拟机、分配虚拟硬件资源等。
-
内核模式是操作系统内核运行的地方,拥有最高的权限等级,可以直接访问底层硬件资源。 KVM作为一个Linux内核模块,运行在内核模式下,负责虚拟机的创建、管理和调度。 KVM模块还负责捕获和处理客户模式中的CPU异常和特殊指令,例如特权指令。
-
执行非io的客户代码,虚拟机运行在这个模式下
-
-
-
-
用户模式
-
用户模式程序运行在较低的权限级别下,不能直接访问硬件。 KVM使用一个名为qemu-kvm的用户空间程序来管理虚拟机的配置,并与内核模式交互以执行特定操作,比如启动、停止虚拟机或设置虚拟硬件属性。
-
用户模式程序运行在较低的权限级别,不能直接访问硬件资源。 KVM使用一个名为qemu-kvm的用户空间程序,它负责配置虚拟机的硬件环境,如网络接口、磁盘设备等,并与内核模式进行交互。 用户模式程序还可以控制虚拟机的生命周期,包括启动、暂停、恢复和关闭等操作。
-
用户执行io代码,qemu运行在这个模式下
-
-
-
-
内核模式
-
客户模式指的是运行在虚拟机内的操作系统或应用程序。 在这个模式下,客户操作系统认为自己是直接运行在物理硬件上,但实际上是由KVM模拟出的虚拟硬件环境。
-
客户模式指的是运行在虚拟机内部的操作系统和应用程序。 当虚拟机运行时,其操作系统认为自己是在物理硬件上直接运行,但实际上所有的硬件资源都是由KVM模拟提供的。 客户模式的进程运行在虚拟化的环境中,可以访问虚拟化的CPU、内存和其他硬件资源。
-
cpu调度与内存管理
-
-
-
-
-
kvm工作原理
-
用户模式的qemu利用ioctl系统调用进入内核模式。kvmdriver为虚拟机创建虚拟cpu和虚拟内存,然后执行vmlaunch指令进入客户模式,装载GuestOS并允许,guest运行过程中如果发生终端或者影子缺页等异常,将暂停GuestOS的运行,并保存上下文退出到内核模式来处理这些异常,内核模式处理这些一场如果不需要io则处理完成后重新进入客户模式,如果需要io则进入用户模式,由qemu来处理io,完成后进入内核模式,在进入客户模式
-
流程示意图
-

-
-
-
kvm部署需要桌面版的linux
-
依赖软件包
-
qemu-kvm
-
kvm模块,一般已经自带(核心包)
-
-
qemu-kvm-tools
-
kvm调试工具
-
-
qemu-img
-
qemu组件,创建磁盘,启动虚拟机(磁盘管理工具)
-
-
virt-install
-
构建虚拟机的命令工具
-
-
virt-manager
-
图形化界面的虚拟机管理工具
-
-
bridge-utils
-
网络支持工具(虚拟机与外界通信的命令管理工具)
-
-
libvirt
-
虚拟机管理工具
-
核心工具
-
-
-
libguestfs-tools
-
当虚拟机的磁盘格式为qcow2时,可利用该工具对磁盘文件进行操作。
-
-
-
安装完毕后关闭虚拟机设置cpu支持虚拟化
-

-
因为是利用虚拟机嵌套,所以内核与内存可以给的大一点。
-
-
-
开机后进行验证
-
查看cpu信息看是否支持
-
cat /proc/cpuinfo | grep vmx
-
出现vmx字样表示支持,英特尔是该标识,amd则是vm
-
-
-
查看系统模块
-
lsmod | grep kvm
-
出现kvm表示有虚拟化模块
-
-
-
-
kvm网络相关设置
-
类似于VMware虚拟机实现与外界通信时需要vmnet8,直连物理网络需要vmnet0一样 ,kvm虚拟机也需要一个网卡来实现这个功能。
-
拷贝出桥接模式的网卡
-
cp ifcfg-ens33 ifcfg-br0
-
bridge桥接
-
-
-
因为真实承载数据帧的网卡还是物理网卡,因此还需要真实网卡支持,(变更为桥接模式)
-
vim ifcfg-ens33
-
添加一行将其改为桥接模式的网卡
-
BRIDGE=br0
-
-
-
修改桥接模式的网卡配置文件br0
-
vim ifc-br0
-
TYPE=Bridge
-
至关重要的类型修改,桥接模式
-
-
NAME=br0
-
名称与设备相匹配
-
-
DEVICE=br0
-
名称与设备相匹配
-
-
-
最后重启网络
-
systemctl restart network
-
-
-
-
kvm管理
-
图形化管理工具
-
virt-manager
-
-
图形化工具的初始化界面
-
-
标识1:创建存储池,存储池用于存放虚拟机磁盘数据。 标识2:创建卷,为虚拟机分配磁盘空间。
-
标识1:名称随意,其他保持默认
-
-
选择存放空间,可以自己指定。 确定完后点完成
-
最后就成功创建了一个存储池
-

-
-
-
标识2:格式有个raw格式,效率高,但无法通过libguestfs-tools提供的工具进行关机修改磁盘文件。最大空间不能超过可用空间。 名称尽量简单有代表性,可以使用创建的虚拟机的名字。
-
-
填写完毕后就创建了一个虚拟磁盘
-
-
-
-
选中qemu/kvm右键,新建就能创建出虚拟机
-
-
根据环境选择合适的安装介质,本案例以本地安装介质为例
-
需要提前拷贝好系统的iso镜像文件到程序有权访问的位置
-
通过浏览找到镜像文件
-
本地浏览找到位置
-

-
双击或打开之后点击前进
-
根据需要设置合理的内存,在嵌套的情况下,不能超过上一级虚拟机的最大内存。
-

-
在这里建议使用自己规定的虚拟机存储位置。
-
在这里我选择了创建出来的aaa存储池,存储池的路径可以自己指定。最后点击选择

-
该处的名字是在命令行使用命令需要敲的名字,因此简单好记有代表性为主。
-

- 点击完成后出现该字样就到了正常装系统的流程,根据需要部署即可。

-
-
-
-
-
-
-
-
kvm命令行管理
-
查看命令帮助
-
virsh -h
-
-
列出所有虚拟机并显示状态
-
virsh list --all
-
-
开启虚拟机
-
virsh start 虚拟机名称
-
通过配置文件启动
-
virsh create /etc/libvirt/qemu/test01.xml
-
在该目录下会生成虚拟机对应的配置参数的.xml文件
-
-
-
-
关闭虚拟机
-
virsh shutdown 虚拟机名称
-
强制关闭
-
virsh destory 虚拟机名称
-
-
-
挂起虚拟机
-
virsh suspend 虚拟机名称
-
-
恢复虚拟机
-
virsh resume 挂起虚拟机的名称
-
-
跟随虚拟机开机自启
-
virsh autostart 虚拟机名称
-
-
导出虚拟机配置
-
virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml
-
要导出的虚拟机以及导出后的位置与名称
-
-
-
删除虚拟机
-
virsh undefine 虚拟机名称
-
这种取消定义的方法进删除配置文件,并不会删除磁盘文件。
-
-
-
添加被取消定义的虚拟机
-
需要准备好配置文件
-
virsh define 指定配置文件
-
-
-
通过管理工具修改磁盘信息
-
virsh edit 虚拟机名称
-
edit 编辑
-
-
-
-
kvm文件管理
-
查看当前磁盘格式
-
qemu-img info /data_kvm/store/test01.qcow2
-
.qcow2的优势就是可以关机修改配置信息
-
-
-
如果不是qcow2,需要修改回来的操作
-
先关闭对应的虚拟机
-
virsh shutdown test01
-
-
qemu-img convert -f raw -O qcow2 /data_kvm/store/test01.img /data_kvm/store/test01.qcow2
-
最后修改.xml文件中的磁盘类型与磁盘文件名
-
virsh edit test01
-
<driver name='qemu' type='qcow2' cache='none'/>
-
<source file='/data_KVM/store/test01.qcow2'/>
-
-
-
-
查看虚拟机文件
-
virt-cat
-
类似于cat命令
-
-
-
编辑虚拟机文件
-
virt-edit
-
类似于vim命令
-
-
-
查看磁盘信息
-
virt-df
-
-
-
kvm虚拟机克隆
-
需要关机才能做克隆
-
virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2
-
-o 源虚拟机
-
origin 起源
-
-
-n 克隆出的虚拟机的名称
-
-f 配置文件的位置与名称
-
-
-
虚拟机快照
-
virsh snapshot-create 虚拟机名称
-
已生成域快照 1503494464
-
创建成功后会生成一个快照序列号(标识号)
-
-
-
virsh snapshot-current 快照序列号
-
查看快照当前的虚拟机状态
-
-
virsh snapshot-list 虚拟机名称
-
列出该虚拟机所有的快照
-
-
virsh snapshot-revert 虚拟机名称 快照序列号
-
为该虚拟机恢复到该快照的状态
-
-
virsh snapshot-delete 快照序列号
-
删除该快照
-
-
-
-
-
复制到xmind即可形成条理性笔记。
相关文章:
kvm虚拟化平台部署
kvm虚拟化平台部署 kvm概念简介 kvm自linux2.6版本以后就整合到内核中,因此可以看做是一个原生架构. kvm虚拟化架构 硬件底层提供物理层面的硬件支持 linux(host),就相当于这个架构中的宿主机,上面运行了多个虚拟机。…...
利用arthas热更新class文件
利用arthas热更新class文件 背景:发现一个bug,家里难以复现,需要在现场环境更新几行代码验证。 arthas-boot version: 3.7.1 java -jar arthas-boot.jar启动arthas 1、利用arthas的sc命令查找确定类名称 sc com.**2、反编译为java文件 …...
天机学堂 第四天 高并发优化总结
前端每隔15秒就发起一次请求,将播放记录写入数据库。 但问题是,提交播放记录的业务太复杂了,其中涉及到大量的数据库操作: 如何进行优化 单机并发能力 变同步为异步 合并写请求 提高单机并发:优化SQL,尽…...
Canva收购Leonardo.ai,增强生成式AI技术能力
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
前端练习<HtmlCSS>——照片墙(附完整代码及实现效果)
这个小练习也来源于b站up小K师兄,大家可以通过下面的链接学习哦~up讲的非常详细。 纯CSS写一个简单酷炫的照片墙效果~ 先看一下这个照片墙的效果: 1.鼠标没有放到图片上时,照片同比例,每张照片都有倒影的效果。 2.然…...
PHP基于微信小程序的打车平台-计算机毕业设计源码78689
摘 要 本文介绍的是基于PHP开发的打车平台小程序。该系统旨在为用户提供一个便捷、高效的平台,以实现网约车的打车功能。随着社交媒体和互联网的普及,网约车已成为日常交通中常见的形式。然而,传统的打车方式存在不方便、不及时等问题。 微信…...
Vue element ui分页组件示例
https://andi.cn/page/621615.html...
redis存储结构
一、整体结构图 二、redisDb结构体 Redis是一个高性能的键值存储系统,它支持多种类型的数据结构,如字符串、列表、集合、散列等。Redis数据库由多个数据库组成,每个数据库用一个redisDb结构体来表示。 dict *dict; dict指向一个字典结构的指…...
SQL Server 数据误删的恢复
在日常的数据库管理中,数据的误删操作是难以避免的。为了确保数据的安全性和完整性,我们必须采取一些措施来进行数据的备份和恢复。本文将详细介绍如何在 SQL Server 中进行数据的备份和恢复操作,特别是在发生数据误删的情况下。假设我们已经…...
墨烯的C语言技术栈-C语言基础-018
char c; //1byte字节 8bit比特位 int main() { int a 10; //向内存申请四个字节,存储10 &a; //取地址操作符 return 0; } 每个字节都有地址 而a的地址就是它第一个字节的地址 要先开始调试才可以查看监控和查看内存 左边是地址 中间是内存中的数据 最后面的是…...
C端与B端 - 第一弹 - 理解和区分C端与B端软件开发
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 在软件开发领域…...
穿越多元宇宙的.NET:一场跨平台的星际旅行
概述 在软件开发的浩瀚宇宙中,.NET无疑是一颗耀眼的恒星,散发着多平台开发的光芒。从单一的.NET Framework出发,我们如今已拥有一个多元化的.NET宇宙,每个变体都是一个独特的星球,拥有自己的生态系统和生存法则。本文将…...
Python自学第五天
# 嵌套 字典嵌套字典 # 字典列表 now {pet:cat,color:black} now1 {pet:cat,color:pipe} wq [now,now1] # 这里是中括号 不是花括号 花括号打印不出来 for ff in wq:print(ff) # 创建20个外星人 打印前三个 并且显示一共创建了多少个外星人 now [] for wq in range(20):# 这…...
Cookie-Monster:一款针对Web浏览器的安全分析与数据提取工具
关于Cookie-Monster Cookie-Monster是一款针对常见Web浏览器的安全分析与数据提取工具,该工具可以帮助广大研究人员提取并分析Edge、Chrome和Firefox浏览器中的Cookie数据。 Cookie-Monster适用于红队和蓝队成员,能够提取WebKit主密钥,找到具…...
C语言的结构体
结构体定义 结构体指针...
C语言 写一个函数days,实现某日在本年中是第几天计算。
写一个函数days, 【定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题(即将闰年情况包含在内)】 由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。 #include <stdio.h>typedef struct {int yea…...
2-50 基于matlab的遗传模拟退火算法的聚类算法
基于matlab的遗传模拟退火算法的聚类算法,以模糊K-均值聚类算法为基础,对各样本的聚类中心进行优化,输出聚类可视化结果。聚类类别数可自由输入。程序已调通,可直接运行。 2-50 遗传模拟退火算法的聚类算法 - 小红书 (xiaohongshu…...
电脑屏幕录制软件,分享4款(2024最新)
在今天,我们的电脑屏幕成为了一个多彩多姿的窗口。通过它我们可以浏览网页、观看视频、处理文档、进行游戏……有时,我们想要记录下这些精彩瞬间,与朋友分享,或者作为教程留存,这时,电脑屏幕录制就显得尤为…...
机械学习—零基础学习日志(高数16——函数极限性质)
零基础为了学人工智能,真的开始复习高数 这里我们继续学习函数极限的性质。 局部有界性 充分条件与必要条件 极限存在是函数局部有界的充分条件。什么是充分条件,什么是必要条件呢?我这里做了一点小思考,和大家分享,…...
初识c++——list
一、list 1、list结构 c中list为双向带头循环列表: 二、list接口 1、构造 using namespace std; #include<iostream> #include<list> #include<vector> int main() {list<int> lt; //构造空的listlist<int> lt1(10, 1); //构造的l…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
