kvm介绍

news2024/10/1 22:38:47

kvm里主要去介绍它的虚拟化技术,包括云计算的组成和云计算的背景。

kvm的运行原理,虚拟机的创建,虚拟机的生命周期管理。

云计算的定义

它不是一种技术,它是一种收费模式,就是通过互联网把一些主机的硬件(cpu、内存、磁盘、网络)这些硬件把它们都统一的组合在一起,通过编码进行组合,组合到一起之后去售卖给用户,用户如果有需要用到cpu、内存、磁盘、网络这些需求的时候,直接去我们的云平台上面进行购买,让其他任务在上面运行,随用随销,用完了之后就直接可以抛弃掉这部分资源,让云平台回收回去,只需要在计算的一个时间段的那些资源进行付费就可以了,这种方式我们称为云计算,它可以极大的提高物理硬件的利用率,同样也能方便用户对它们的计算任务,去进行集中性的计算,而且资源不会得到浪费。

云计算的服务类型

云服务是指由第三方提供商托管的基础架构、平台或软件,可通过互联网提供给用户。"即服务型"解决方案主要有 3 种类型:IaaS、PaaS 和 SaaS。每种解决方案都能促进用户数据从前端客户端通过互联网流向云服务提供商的系统,或是反向流动,但具体情况会因服务内容而异。

虚拟化技术定义

通过操作系统里面内置好一个功能或者软件,将我们的物理资源逻辑上进行划分,划分成不同的来自相同源地址的物理硬件,划分成不同的逻辑单元,它们里面的cpu、内存、磁盘、网络、鼠标、键盘都有,把这些资源给它进行逻辑上的划分,功能上的划分,划分之后再提供给另外一个客户机的操作系统,就相当于在自己的操作系统上构建出了一个虚拟机。

 在这些性能过剩的软件之上我们去安装一个软件,叫虚拟化操作槽,称之为VMN,将底下的硬件逻辑上划分为虚拟硬件,在提供给客户机操作系统,客户机操作系统之上再去运行我们想运行的app。也就是说应用业务,软件,服务都可以运行。节约系统性能,合理的去利用物理机上性能过剩的硬件。

虚拟化是建立在操作系统之上的,也就是说物理硬件所安装的操作系统之上我们还要安装一个VMM层,虚拟化软件层,利用软件的形式去支持虚拟化,提供给上方的进程虚拟机,进行资源的合理利用。

虚拟化的两种方式

最理想的虚拟化两个目标如下:

  • 客户机完全不知道自己运行在虚拟化环境中,还以为自己运行在原生环境里。
  • 完全不需要VMM介入客户机的运行过程。

半虚拟化:

通过软件的方式在操作系统之上控制我们的虚拟机的运行

全虚拟化:

采用硬件(intel VT-x、VT-d)在硬件上编码支持虚拟化,它能达到的性能比软件层达的高,不需要操作系统进行相应的介入,只需要去安装一个工具,在操作系统之上能将底层的一些cpu、内存、磁盘进行合理的逻辑上的划分就可以了,完全实现一个虚拟化。

支持虚拟化的硬件进行沟通,这时候理论上所能达到的虚拟化效率是98%的,几乎只有2%的损耗,所以全虚拟化是重中之重的。

计算任务主要是透过kvm,去管理一些虚拟的cpu、磁盘,还是通过全虚拟化去进行的。

kvm是一种虚拟化技术,配合QEMU这个工具可以配合我们在一个宿主机中创建虚拟机的请求,kvm也是采用全虚拟化的解决方案去实现的虚拟化。

kvm虚拟化的原理

 运行在操作系统之上的一些进程都是通过我们的操作系统与内核里面的一些模块进行沟通,linux内核里的模块与底层的硬件进行沟通,以此完成计算任务的发布与完成。

在kvm里面它的完成效果是在虚拟出来的kvm虚拟机由安装在虚拟主机的应用像,虚拟cpu向操作系统里面的内核的kvm模块发起计算请求,kvm模块通过一些驱动,调用我们底层的硬件,cpu,内存,以此完成计算任务之后再返回给cpu,然后由虚拟cpu再返回给上层的应用,它的数据流向是这样的,虚拟cpu、内存、磁盘分别是由qemu硬件虚拟化器创建出来的虚拟硬件,创建出来之后会被绑定到一个进程里面作为进程资源,进程里面每一个cpu都是一个线程,以此完成虚拟机里面的计算任务,在进程资源里面还包含着一些内存,磁盘,网络的io设备,同样它也属于进程资源里面所使用虚拟硬件安装的操作系统去使用的。如果放眼到宿主机中去看,就可以把kvm虚拟机看成一个进程,进程运行在我们的系统上,进程想要去调用底层的cpu就是这个进程去联系系统中的内核去调用底层的内存cpu。

可以把kvm虚拟机看做操作系统/宿主机操作系统里的一个进程,这个进程比较特殊,这个进程里面是一个操作系统而且是完全封闭的一个操作系统。

原理:在一个进程里面去加载虚拟的硬件,虚拟硬件之上安装操作系统,操作系统之上安装一些n机,redis,slb等等应用。

kvm虚拟机向下调用硬件,物理,cpu,网络,磁盘的时候都是以一个进程的身份向linux内核中的kvm模块发起计算请求,kvm模块去控制计算的任务,放入到物理的cpu中进行计算,计算结果再返回给相应的物理机中的虚拟机,虚拟机里面的一个应用。

kvm虚拟化网络解析

KVM中支持三种网络模式,分别为NAT模式、bridge桥接模式、host-only仅主机模式:NAT模式通常用来在个人虚拟化桌面中应用广泛,桥接模式在服务器虚拟化使用广泛,host-only一般在超级大的服务厂商内部使用。

NAT模式

  宿主机作为centos的主机,在主机之上会创建出相应的虚拟机(kvm01)对外提供一个web server的服务器里面安装了一个nginx服务,网卡是ens33,在kvm环境部署的时候有个网卡叫virbr0,就是我们在宿主机中的一个nat网卡,主要起的作用就是地址的转换,相当于变种的防火墙,主要接收来自ens33的请求,或者是由kvm向外部(百度,新浪)发送一些数据请求,沿这条线再回来相应的响应,在kvm01中也会有自己的一张虚拟网卡(eth0),eth0会br0发送相应的一个请求,br0会将请求转发到ens33这张网卡中,ens33网卡会将请求转发到互联网的服务器中(百度),在这个过程中百度在解析到请求之后,会向你返回相应的响应,这个响应可以接收到的,因为我们触发的条件是kvm01作为源地址向外进行请求被br0,被ens33记录,响应回来的时候根据记录的源地址会进行不断的地址转换一直到eth0,eth0接收到响应的数据包之后在kvm01中通过osi七层模型进行相应的一个解封装过程,一直达到最高层的nginx那个地方去解析网页。这个就是在kvm里采用nat模式的数据流传过程。

值得一提的是nat模式这种网络可以出,不可以进的,对象是针对虚拟机而已,虚拟机的网络对外可以通,对内不通的。

如果是从互联网中,某一个用户去访问kvm01虚拟机的话,我们的源地址就是客户端的地址,目标地址就是kvm01的地址,client机器与kvm01并不在同一个网段中,ens33可以与client进行通信,一旦到virbr0的时候只有ens33这台机器的ip是被virbr0能转换到eth0身上的,原因在于virbr0设置的规则,

总结:nat模式可以出,访问外网,通过宿主机的ens33对外网进行访问,而如果从外网访问虚拟机的时候,虚拟机被接收请求的时候(client发出请求的时候)可以到达virbr0这个设备上,但是这个设备会拦截你向内进行访问,nat可以出,不可以进。

 桥接网络

宿主机中有虚拟机kvm01,kvm02,他们两个中分别有两张网卡,eth0,如果想用桥接的网络对外进行上网,宿主机的网卡ens33,外部会有百度服务器,想用通过ens33访问百度服务器,桥接网络在内部的访问状态,在内部会创建一张桥接网卡bridge0,eth0连接bridge0,两台虚拟机的eth0连接虚拟网卡,桥接网卡连接到ens33上对外进行服务,所创建的br0设备也在宿主机之上的,br0设备被当作是一个虚拟的交换机,ens33这张网卡也是接到了br0身上,通过br设备访问百度,与宿主机所在网段的交换机进行连接,并且从宿主机所在网段的dhcp获取相应的ip,bridge0相当于宿主机中的虚拟交换机,在虚拟交换机中连接着不同的虚拟机的网卡,包括宿主机的一张网卡,以此来完成桥接网络,

host-only仅主机模式

相当于在宿主机中创建了一个私有的网段:1.不对外进行通信,2只在该虚拟网段中进行通信。相当于自己创建出来了一个虚拟交换机,虚拟交换机与外部并没有任何的相连,仅在宿主机中进行相应的网络流转实现。在特别大的厂商才能看见(阿里,天翼)

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

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

相关文章

2021年我国企业服务市场投融资概况 技术服务单笔规模最大 早期融资笔数最多

一、企业服务投融资年度概况 据相关数据显示,2021年我国企业服务市场共发生2417笔投融资事件,其中,1753笔项目已披露融资金额。从月度分布来看,3月、6月、7月、8月和12月的融资数量均在200起以上,其中,12月…

[附源码]Python计算机毕业设计高校学生体温管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

Python实现:高斯滤波 均值滤波 中值滤波 Canny(边缘检测)PCA主成分分析 直方图规定化 Mean_Shift

Python实现:高斯滤波 均值滤波 中值滤波 Canny(边缘检测)PCA主成分分析 直方图规定化 Mean_Shift(文末附上整合这些函数的可视化界面并且已做打包处理) 1.高斯滤波(以下函数所有的图片路径为方便前来copy的同学&#…

微服务框架 SpringCloud微服务架构 多级缓存 46 JVM 进程缓存 46.4 实现进程缓存

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存46 JVM 进程缓存46.4 实现进程缓存46.4.1 实现进程缓存46 JVM 进程缓存 46.4 实现进程缓存 46.4.1 实…

Linux从入门到进阶学习(Ⅱ):Linux基础命令

目录 1 Linux目录结构 2 命令格式 3 目录切换命令 3.1 ls命令 3.2 选项与参数 3.3 目录切换 1.cd 2.pwd 4 路径 5 创建目录命令 6 文件操作命令 6.1 创建文件 6.2 查看文件 6.3 复制文件 6.4 移动文件 6.5 删除文件 1.rm命令 2.通配符 3.root用户 7 查找命…

C语言期末集训2(大一,超基础,小猫猫大课堂的配套练习)——分支结构

更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发, 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我…

分库分表 15 连问,你抗的住吗?

我们去面试的时候,几乎都会被问到分库分表。 在这里整理了分库分表的15道经典面试题,大家看完肯定会有帮助的。 1. 我们为什么需要分库分表 在分库分表之前,就需要考虑为什么需要拆分。我们做一件事,肯定是有充分理由的。所以得…

技术分享-应用列表性能优化

阅读文章大约需要10分钟 目录 1.背景 2.分析 3.优化 4.成果 背景 应用存在大量的列表和图片资源加载,如首页、喵圈、直播间广播、礼物面板等, 这些列表的性能对应用性能有着不少的影响。 分析 分析-列表架构VLayout 分析-RecycleView缓存机制 分析-RecycleVi…

【记录】Ubuntu实现逻辑卷的删除

由于我的电脑上有机械硬盘和固态硬盘,所以在之前安装的Centos7系统中,定义了逻辑卷,希望将机械硬盘和固态硬盘在逻辑上当作是统一的整体,但是正因为此操作,导致在重装系统过程中,始终无法对逻辑卷进行分区&…

m基于改进PSO粒子群优化的RBF神经网络解耦控制算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 智能控制的思想最早来自傅京孙教授[,他通过人机控制器和机器人方面的研究,首先把人工智能的自觉推理方法用于学习控制系统,将智能控制概括为自动控制和人工智能…

MASM32编程完善SysInfo遇到奇怪故障,真切感受全局变量和局部变量之别……

SysInfo主要是通过WMI来获取系统信息的,但是WMI获取的操作系统信息中没有Windows操作系统是32位还是64位的内容,所以需要另外想办法编程获取,比较常见的方法是调用Windows API函数GetNativeSystemInfo()或IsWow64Process()。之前分别用MASM32…

Spring官宣新家族成员:Spring Authorization Server

8月17日,Spring官方宣布 Spring Authorization Server 已正式脱离实验状态,并进入Spring-Project家族! 背景 Spring Authorization Server (以下简称 SAS)是 Spring 团队最新开发适配 OAuth 协议的授权服务器项目&…

【react】生命周期

组件从创建到死亡会经历一些特定的阶段 React组件中包含一系列勾子函数(生命周期回调函数)会在特定的时候调用 我们 在定义组件时,会在特定的生命周期回调函数中做特定的工作 一、旧版本的生命周期 1、初始化阶段 constructor()componentWil…

CVE-2022-22965:spring参数绑定漏洞

CVE-2022-22965 博客链接:https://www.blog.23day.site/articles/73 漏洞说明 Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告&#xff…

LabVIEW创建自定义书签管理器

LabVIEW创建自定义书签管理器 书签是一种特殊的标记机制,可以添加到VI框图中。任何以井号标签(#)开头的文本都将被LabVIEW自动识别为书签。这些可用于标记代码不同部分中的待办事项或未完成的任务。当您将主题标签添加框图注释时&#xff0c…

基于java的贪吃蛇游戏-计算机毕业设计

项目介绍 本游戏采用Java环境和Eclipse开发工具,开发了一个界面美观,操作简单并且功能齐全的贪食蛇游戏,整个游戏分为了10个类,实现了游戏的开始、结束、暂停,通过了本游戏的开发,达到了学习Java及Java GU…

使用新路由器有线/无线桥接旧路由器

问题描述 已有一个无线路由器,但信号不能满足需求,遂购买新路由器对其进行桥接。经过在网上搜索和实践,成功配置,将经验记录成帖。 解决方案 无线桥接 1. 打开新路由器设置界面。(根据路由器说明说或者网上搜索对应…

新手学python,如何才能更快升职加薪,迎娶白富美,走上人生巅峰

最近在问答里发现好多咨询怎么学习python,或者学习难不难的问题,这里给大家提几点建议: 了解自己的目标 我开始学编程的时候,连基础的知识都不知道,小白的很!记得我开始看教材,就是输入“hello…

Vue系列之使用vue init搭建前端项目

文章の目录一、执行 vue init webpack my-project 注意(my-project)是自己的项目名写在最后前提执行如下代码 npm install -g vue/cli-init一、执行 vue init webpack my-project 注意(my-project)是自己的项目名 回车既可&…

【时空融合:遥感图像】

MUSTFN: A spatiotemporal fusion method for multi-scale and multi-sensor remote sensing images based on a convolutional neural network (MUSTFN:一种基于卷积神经网络的多尺度多传感器遥感影像时空融合方法) (第一篇关于…