虚拟化技术

news2024/11/26 4:44:07

虚拟化

虚拟化技术

目前虚拟化技术有软件模拟、全虚拟化(使用二进制翻译)、半虚拟化(操作系统辅助)、硬件辅助虚拟化和容器虚拟化这几种。

(1)软件虚拟化

软件模拟是通过软件完全模拟cpu、芯片组、磁盘、网卡等计算机硬件:

因为是软件模拟,所以理论上可以模拟任何硬件,但是非常低效,一般只用于研究测试的场景,典型的有QEMU。

(2)全虚拟化

x86平台指令集分为4个特权模式:Ring0 、Ring1、Ring2、Ring3、OS工作在Ring0级别,应用软件工作在Ring3级别,驱动程序工作在Ring1和Ring2。

如何将虚拟机越级的指令使用进行隔离,1998年VMware首次找到了解决办法,通过虚拟化引擎,捕获虚拟机的指令,并进行处理,即全虚拟化方案。

在全虚拟化的情况下,VMM工作在Ring 0 ,Guest OS工作在Ring 1 ,应用程序工作在Ring 3,可是这时候Guest OS是不知道自己工作在虚拟机里的,认为自己还是工作在Ring 0 ,所以它还是按照Ring 0级别产特权生指令,Guest OS产生的每一条指令都会被VMM截取,并翻译成宿主机平台的指令,然后交给实际的物理平台执行,由于每一条指令都需要这么翻译一下,所以这种虚拟化性能比较差。

(3)半虚拟化

半虚拟化是对Guest OS做相应修改,以便和VMM协同运作。在硬件辅助虚拟化兴起之前,半虚拟化性能胜过全虚拟化。在半虚拟化情况下,Guest OS知道自己并不是直接运行在硬件资源上,而是运行在虚拟化环境里,工作在非Ring 0,那么它原先在物理机上执行的一些特权指令,就会修改成其他方式(超级调用),这种方式是可以和VMM约定好的,半虚拟化不需要VMM层进行二进制翻译,所以性能较好,但是实现比较麻烦(要修改OS内核代码),典型的半虚拟化技术有xen。

(4)硬件辅助虚拟化

2005年,Intel推出了硬件辅助虚拟化方案,对CPU指令进行改造,即VT-x,VT-x提供了两种操作模式:VMX root operation和VMX non-root operation,VMM运行在 VMX root operation,虚拟机运行在VMX non-root operation。在绝大多数情况下,客户机在此模式下运行与原生系统在非虚拟化环境中运行性能一样,不需要像全虚拟化那样每条指令都要先翻译再执行;在少数必要的时候,某些客户机指令的运行才需要被VMM截获并做相应处理。这种方案因为是基于硬件的,所以效率非常高。

现在不仅CPU指令有硬件虚拟化方案,I/O通信也有硬件解决方案,称为VT-d;网络通信的称为VT-c。

(5)容器虚拟化

容器虚拟化是基于CGroupsNamespace等技术将进程进行隔离,每个进程就像一台独立的虚拟机,拥有自己被隔离出来的资源,也有自己的根目录、独立的进程编号、被隔离的内存空间。基于容器的虚拟化可以实现在单一内核上运行多个实例。目前热门的容器虚拟化技术Docker,Docker可以将一个开发环境进行打包,很方便在另一个系统上运行起来。

虚拟化架构

  • 裸金属虚拟化:直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,不需要操作系统,hypervisor本身就是一个操作系统, hypervisor直接访问硬件资源,这个使得虚拟机能够获得更好的性能、扩展性与稳定性,比较适合企业数据中心。调用的流程是 虚拟机内核 -> Hypervisor -> 硬件。

    例如:VMware ESXI 、Proxmox VE、Microsoft Hyper-V

  • 宿主虚拟化:在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。宿主虚拟化的 hypervisor 就像是安装在子操作系统上的一个应用,这种方式比裸机虚拟化的 hypervisor 提供更好的硬件兼容性,因为调用硬件的流程是 虚拟机内核 -> Hypervisor -> 操作系统 -> 硬件,但这也导致了宿主虚拟化的性能是要比裸机虚拟化差很多的。

    例如: Windows系统上的 VMware Workstation \ VirtualBox 软件 ,Mac OS 上的 Parallels Desktop 软件

虚拟化对象

CPU虚拟化

CPU虚拟化指的是将单个物理CPU虚拟化成多个虚拟CPU供虚拟机使用,每个虚拟CPU就是一个超线程。虚拟CPU分时复用物理CPU,由虚拟机监控器(Virtual Machine Monitor,VMM)对虚拟CPU分配时间片,并同时对虚拟CPU的状态进行管理。

**超线程(hyper-threading)其实就是同时多线程(simultaneous multi-theading),是一项允许一个CPU执行多个控制流的技术。**它的原理很简单,就是把一颗CPU当成两颗来用,将一颗具有超线程功能的物理CPU变成两颗逻辑CPU,而逻辑CPU对操作系统来说,跟物理CPU并没有什么区别。因此,操作系统会把工作线程分派给这两颗(逻辑)CPU上去执行,让(多个或单个)应用程序的多个线程,能够同时在同一颗CPU上被执行。注意:两颗逻辑CPU共享单颗物理CPU的所有执行资源。因此,我们可以认为,超线程技术就是对CPU的虚拟化

CPU虚拟化需要解决两个问题:

  • 如何模拟CPU指令(所有敏感指令)
    • 敏感指令:可以读写系统关键资源的指令叫做敏感指令。
    • 特权指令:决大多数的敏感指令是特权指令,特权指令只能在处理器的最高特权级(内核态执行。
  • 如何让多个VM共享CPU
    利用与Native操作系统类似的机制—通过定时器中断,在中断触发时陷入VMM,从而根据
    调度机制进行调度。

内存虚拟化

内存虚拟化:把物理机的真是物理内存统一管理,包装成多个虚拟机的内存给若干虚拟机使用。

在Linux这种使用虚拟地址的OS中,虚拟地址经过page table转换可得到物理地址:

如果这个操作系统是运行在虚拟机上的,那么这只是一个中间的物理地址(Intermediate Phyical Address - IPA),需要经过VMM/hypervisor的转换,才能得到最终的物理地址(Host Phyical Address - HPA)。从VMM的角度,guest VM中的虚拟地址就成了GVA(Guest Virtual Address),IPA就成了GPA(Guest Phyical Address)。

可见,如果使用VMM,并且guest VM中的程序使用虚拟地址(如果guest VM中运行的是不支持虚拟地址的RTOS,则在虚拟机层面不需要地址转换),那么就需要两次地址转换。

特点

内存超分配和复用

Host Memory和Guest Memory之间并不是一一对应,可以超额分配内存给VM。通讨内存复用技术实现超分配功能。

内存置换:我们在Linux中进行磁盘分区时,会看到有一个swap分区,即交换分区。当内存比较小的时候,会在磁盘上开辟出来一段空间,给内存置换使用。 当内存不够用的时候,把一些冷数据置换在磁盘上。冷数据就是指一 段时间没有被使用的数据,时间越长越冷。

内存气泡:假如我们有两台虚拟机,每台虚拟机规格4G内存,但是并不是每一时刻虚拟机都可以完全使用完这4G大小,因此,hypervisor(VMM)会回收这些未使用完的内存资源,然后给到使用率较高的虚拟机。通过挤压其他虚拟机的内存,把内存释放给其他内存使用率较高的虚拟机。这就是内存气泡技术。

NUMA

NUMA:Non-Uniform Memory Access,非一致性访问。一个服务器架构中,通常有多个物理CPU及对应的内存资源,某些CPU会绑定一定的内存和IO资源,可归为一个NUMA节点,也称为node,而这些CPU访问自身的内存和IO资源速度是最快的。

  • 内存访问机制:在NUMA服务器内部,任—CPU可访问整个系统的内存,但远程内存访问的性能远低于本地内存访问。
  • 节点互联机制:在同一个物理服务器内部实现,某一CPU进行远程内存访问时必须等待, NUMA服务器无法实现CPU增加时性能线性扩展。

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

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

相关文章

Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)

参考链接:https://blog.csdn.net/xiaobai_20190815/article/details/124045768 http://news.558idc.com/290335.html Java 安全-手把手教你SPEL表达式注入_4ct10n的博客-CSDN博客_spel注入 一、漏洞描述 Spring Cloud Gateway 是基于 Spring Framework 和 Spring…

组学新品|“4K”微生态之肠道菌群深度宏基因组

1.“4K”微生态定义 人体微生物群是人体内部与体表所有微生物有机体的总称[1],其组成包括非细胞结构的病毒(包括噬菌体)、原核生物中的真细菌和古细菌,以及真核细胞微生物。与之对应,微生物群可以分为病毒群、细菌群、…

Redis未授权访问漏洞(二)Webshell提权篇

前言 在学习这篇文章之前,请先通过这篇文章Redis未授权访问漏洞(一)先导篇学习一下基础知识,再来学习这篇文章。 webshell提权 环境准备 攻击机: Centos7 IP:192.168.44.130 靶机:Centos7 IP:192.168.44.129 首先我们需要准备好…

QuartzNet的基本使用,Scheduler,Job,Trigger的应用

Quartz.Net的基本使用方法 Quartz.Net的基本使用是比较简单的,主要是对下面三个工具的创建和使用。 Scheduler调度器Job执行的动作Trigger触发器 Scheduler的创建和使用 scheduler的创建有几种不同的方式,但一般可以直接使用其提供的工厂类直接创建 通过工厂类…

分享92个NET源码,总有一款适合您

NET源码 分享92个NET源码,总有一款适合您 92个NET源码下载链接:https://pan.baidu.com/s/1Ya4GMXuHhNbqkLU5b7SPEw?pwd5vpx 提取码:5vpx 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...&…

【指针面试题】-还在为学过指针的理论只是不会实践吗??赶紧来看看这里讲解了许多指针的面试题,带你更好掌握指针!!!

🎇作者:小树苗渴望变成参天大树 🧨作者宣言:认真写好每一篇博客 🎊作者gitee:link 🎉指针笔试题详解💥前言💦一、指针和数组面试题解析💨1.1一维数组💢1.2字…

Episode 01 密码技术基础

一、加密和解密&&发送者、接收者和窃听者 发送者:发出消息的人 接收者:接收消息的人 窃听者:恶意获取消息的第三方 加密:发送者将明文转换为密文 解密:接收者将密文还原为明文 破译:接收者以外…

客流统计系统为什么深受门店商户的喜爱?

人数或人群流动信息进行精确的统计分析,而且还可以利用这些高精度的数据,还能获得该区域精确的客流量信息,实现有效合理的组织运营工作,提升工作效益,帮助使用者开展更有成效的组织工作。客流统计系统内置高性能CMOS图…

同源跨域的概念与实现跨域的几种方案

本文将结合周老师的讲义对同源与跨域这一前端经典问题进行系统的总结、整理。一起来坐牢,快! 1. 同源限制 1.1 历史背景 - 含义的转变 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初&…

【无标题】javaEE初阶---多线程(面试常用)

这篇文章 , 我将主要介绍多线程进阶部分的内容 . 主要涉及到一些在面试中常考的内容。 一:常见的锁策略 1.1乐观锁和悲观锁 乐观锁 : 预测接下来发生锁冲突的可能性不大 , 而进行的一类操作; 悲观锁 : 预测接下来发生锁冲突的可能性很大 , 而进行的一类操作.乐观锁 : 假设数…

ClassIn:如何打造更稳定的Zabbix监控系统

作者简介:罗呈祥。现就职于北京翼鸥教育科技有限公司,负责数据库相关的运维管理和技术支持工作,擅长故障处理和性能优化,对分布式数据库也有深入研究。 近期,OceanBase 社区发布了一篇关于我们公司选型分布式数据库的文…

bilateral_filter 双边滤波器详细用法

一、双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。其输出像素的值依赖于邻域像素的值的加权组合。 从效果来说,双边滤波可产生类似美肤的效果。皮肤上的皱纹和斑,与正常皮肤的差异,远小于黑白眼珠之间的差异…

13种Shell逻辑与算术,能写出5种算你赢!

相较于最初的 Bourne shell,现代 bash 版本的最大改进之一体现在算术方面。早期的 shell 版本没有内建的算术功能,哪怕是给变量加1,也得调用单独的程序来完成。 1、算术方法一: $(( )) 只要都是整数运算,就可以在 $(…

DHT11温湿度传感器初识

目录 一、产品概述 1、接线方式 2、特点 3、数据传送逻辑 二、发送时序检测模块是否存在 1、C51单片机(主机)时序分析 2、编写代码检测模块是否存在 3、读取DHT11数据的时序分析 三、温湿度通过串口传到PC显示 四、温湿度检测小系统——使数据…

Discrete Opinion Tree Induction for Aspect-based Sentiment Analysis 论文阅读笔记

一、作者 Chenhua Chen、Zhiyang Teng、Zhongqing Wang、Yue Zhang School of Engineering, Westlake University, China Institute of Advanced Technology, Westlake Institute for Advanced Study Soochow University 二、背景 如何为每一个方面词定位相应的意见上下文…

反补码运算之 “1 - 1 = - 1 ” ?

我们在研究数据的二进制表示时遇到这样一个问题: 由于计算中的CPU只有加法器,没有减法器,所以在计算机采用原码做减法时对于:1 - 1 0 相当于1 (-1),用二进制表示为:000110011001。…

儿童感染新冠病毒后发高烧如何应对?专家来支招

儿童感染新冠病毒后发热较多,但肺炎发展较少儿童感染新冠病毒后发高烧,是重症吗?徐红梅:从目前的接待情况来看,儿童感染新冠病毒后比成人发烧。超过一半的儿童在感染后有发烧症状,伴有咳嗽、鼻塞、流鼻涕、…

JavaWeb的一些学习总结

Web系统就是:前端负责貌美如花,后端负责坚如磐石 企业在做Web系统时,成本与收益的对比是不可忽视的,企业做项目一定是要盈利的! 企业做项目最求的不是技术的新和潮,追求的是低成本和稳还有好用度&#xff…

函数的设计

一、默认参数 C允许在函数定义或声明时,为形参指定默认值,即默认参数(default argument)。 (1)函数定义与函数声明只能设置一次默认参数。 (2)可以设置多个默认参数,设…

【精华】搞定JVM调优学习

JVM 介绍 1. 什么是 JVM JVM 是 Java Virtual Machine(Java 虚拟机)的缩写。一台执行 Java 程序的机器。 2 .JAVA 语言的执行原理 计算机语言: 计算机能够直接执行的指令。这种指令和系统及硬件有关。 计算机高级语言: 在遵循…