虚拟化技术[1]之服务器虚拟化
文章目录
- 虚拟化技术简介
- 数据中心虚拟化
- 服务器虚拟化
- 服务器虚拟化层次
- 寄居虚拟化
- 裸机虚拟化
- VMM无法直接捕获特权指令解决方案
- 服务器虚拟化底层实现
- CPU虚拟化
- 内存虚拟化
- I/O设备虚拟化
- 虚拟机迁移
- 虚拟机动态迁移
- 迁移内容:内存迁移
- 迁移内容:网络资源迁移
- 迁移内容:存储设备迁移
- 隔离技术
- 内存隔离
- 网络隔离
虚拟化技术简介
- 虚拟化技术伴随着计算机的出现而产生和发展起来,虚拟化技术可以用来对数据中心的各种资源进行虚拟化和管理,可以实现服务器虚拟化、存储虚拟化、网络虚拟化和桌面虚拟化。虚拟化技术已经成为构建云计算环境的一项关键技术。
- 虚拟化技术将数据中心的物理资源进行抽象整合。数据中心虚拟化可以实现资源的动态分配和调度,提高现有资源的利用率和服务可靠性;提供自动化的服务开通能力,降低运维成本;具有有效的安全机制和可靠性机制,满足公众客户和企业客户的安全需求;同时也可以方便系统升级、迁移和改造。
数据中心虚拟化
- 服务器虚拟化:将一个或多个物理服务器虚拟成多个逻辑上的服务器
- 存储虚拟化:把分布的异构存储设备统一为一个或几个大的存储池
- 网路虚拟化:在底层物理网络和网络用户之间增加一个抽象层
服务器虚拟化
服务器虚拟化层次
寄居虚拟化
- 寄居虚拟化的虚拟化层一般称为虚拟机监控器(VMM)。
- 系统损耗比较大
- 操作系统层的虚拟化,没有独立的Hypervisor层
- 使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统
裸机虚拟化
- 架构中的VMM也可以认为是一个操作系统,一般称为Hypervisor
- Hypervisor实现从虚拟资源到物理资源的映射
- Hypervisor实现不同虚拟机的运行上下文保护与切换,保证了各个客户虚拟系统的有效隔离
VMM无法直接捕获特权指令解决方案
- 完全虚拟化具有较好兼容性,在服务器虚拟化中应用广泛
- 半虚拟化技术降低由于虚拟化而引入的系统性能损失
服务器虚拟化底层实现
CPU虚拟化
- 虚拟CPU的正确运行要保证虚拟机指令正确运行,现有的实现技术包括模拟执行和监控执行
- 调度问题是指VMM决定当前哪个虚拟CPU在物理CPU上运行,要保证隔离性、公平性和性能。
内存虚拟化
- 内存虚拟化技术:物理内存统一管理,包装成多个虚拟的物理内存提供给若干虚拟机使用,每个虚拟机拥有各自独立的内存空间。
- 虚拟内存的管理包括3种地址:机器地址、物理地址、虚拟地址
-
虚拟地址(Virtual Address):
- 由应用程序生成的地址。虚拟地址空间独立于物理内存,因此每个进程认为自己拥有一个连续且独立的地址空间。
- 虚拟地址通过内存管理单元(MMU)进行映射,转换为物理地址。
-
物理地址(Physical Address):
- 实际存在于内存中的地址。物理内存是真实硬件提供的存储空间。
- 操作系统和硬件联合负责将虚拟地址翻译成物理地址,以便进行实际的存储操作。
-
机器地址(Machine Address):
- 机器地址有时也指物理地址,两者在大多数上下文中是同义的。
- 在某些特定的硬件架构或文档中,机器地址可能特指硬件层面的一些特殊地址,然而普遍理解是物理地址。
I/O设备虚拟化
- I/O设备虚拟化技术把真实的设备统一管理起来,包装成多个虚拟设备给若干个虚拟机使用,响应每个虚拟机的设备访问请求和I/O请求
- I/O设备虚拟化同样是由VMM进行管理,主要有全虚拟化、半虚拟化和软件模拟三种思路。
-
全虚拟化(Full Virtualization):
- 在全虚拟化中,VMM模拟真实的硬件设备,使得虚拟机中的操作系统和应用程序可以完全不知道自己运行在虚拟化环境中。
- 优点是兼容性好,不需要修改客户操作系统。然而,由于需要模拟硬件,可能会导致性能下降。
-
半虚拟化(Paravirtualization):
- 半虚拟化通过修改客户操作系统,使其意识到自己运行在虚拟化环境中,并提供特殊的API来优化I/O操作。
- 这种方法可以显著提高I/O性能,但需要对客户操作系统进行修改,这可能会限制其应用范围。
-
软件模拟(Software Emulation):
- 软件模拟是通过软件完全模拟硬件设备的行为。这种方法可以在任何硬件上运行任何操作系统,但通常性能较低。
- 软件模拟常用于测试和开发环境,或者在需要支持多种不同操作系统的场景中。
虚拟机迁移
- 虚拟机迁移:将虚拟机实例从源宿主机迁移到目标宿主机,并且在目标宿主机上能够将虚拟机运行状态恢复到其在迁移之前相同的状态,以便能够继续完成应用程序的任务。
虚拟机动态迁移
- 实时迁移(LiveMigration):保持虚拟机运行的同时,把它从一个计算机迁移到另一个计算机,并在目的计算机恢复运行的技术。
- 当云计算中心的物理服务器负载过大时,管理员可以将其上面的虚拟机迁移到其他服务器,达到负载平衡
- 云计算中心的物理服务器需要定期进行升级维护,当升级维护服务器时,管理员可以将其上面的虚拟机迁移到其他服务器,等升级维护完成之后,再把虚拟机迁移回来
- 预迁移(Pre-Migration):主机A打算迁移其上的一个虚拟机VM,首先选择一个目的计算机。
- 预定资源(Reservation):主机A向主机B发起迁移请求,先确认B是否有必需的资源,若有,则预定这些资源;若没有,VM仍在主机A中运行,可以继续选择其他计算机作为目的计算机。
- 预复制(InterativePre-Copy):在这一阶段VM仍然运行,主机A以迭代的方式将VM的内存页复制到主机B上。在第一轮迭代中,所有的页都要从A传送到B,以后的迭代只复制前一轮传送过程中被修改过的页面。
- 停机复制(Stop-and-Copy):停止主机A上的VM,把它的网络连接重定向到B。CPU状态和前一轮传送过程中修改过的页都在这个步骤被传送。最后,主机A和主机B上有一致的VM映象。
- 提交(Commitment):主机B通知A已经成功收到了VM的映像,主机A对这个消息进行确认,然后主机A可以抛弃或销毁其上的VM。
- 启动(Activation):启动迁移到B上的VM,迁移后使用目的计算机的设备驱动,广播新的IP地址。
迁移内容:内存迁移
- 为实现虚拟机的实时迁移,完整的内存迁移的过程分为以下三个阶段:
- 第一阶段:Push阶段。在VM运行的同时,将它的一些内存页面通过网络复制到目的机器上。为了保证内容的一致性,被修改过的页需要重传。
- 第二阶段:Stop-and-Copy阶段。VM停止工作,把剩下的页面复制到目的计算机上,然后在目的计算机上启动新的VM。
- 第三阶段:Pull阶段。新的虚拟机运行过程中,如果访问到未被复制的页面,就会出现页错误并从原来的VM处把该页复制过来。
- 实际上,目前大部分的迁移策略只包含其中的一个或者两个阶段。
迁移内容:网络资源迁移
-
虚拟机这种系统级别的封装方式意味着迁移时VM的所有网络设备,包括协议状态(如TCP连接状态)以及IP地址都要随之一起迁移。
-
在局域网内,可以通过发送ARP重定向包,将VM的IP地址与目的机器的MAC地址相绑定,之后的所有包就可以发送到目的机器上。
迁移内容:存储设备迁移
- 迁移存储设备的最大障碍在于需要占用大量时间和网络带宽,通常的解决办法是以共享的方式共享数据和文件系统,而非真正迁移。
- 目前大多数集群使用NAS(Network Attached Storage,网络连接存储)作为存储设备共享数据。
- NAS实际上是一个带有瘦服务器的存储设备,其作用类似于一个专用的文件服务器。
- 在局域网环境下,NAS已经完全可以实现异构平台之间,如NT、UNIX等的数据级共享。
- 基于以上的考虑,Xen并没有实现存储设备的迁移,实时迁移的对象必须共享文件系统。
隔离技术
- 虚拟机隔离指虚拟机之间在没有授权许可的情况下,互相之间不可通信、不可联系的一种技术。
- 从软件角度,互相隔离的虚拟机之间保持独立,如同一个完整的计算机
- 从硬件角度,被隔离的虚拟机相当于一台物理机,有自己的CPU、内存、硬盘、I/O等,它与宿主机之间保持互相独立的状态
- 从网络角度,被隔离的虚拟机如同物理机一样,既可以对外提供网络服务,也可以从外界接受网络服务
- 虚拟机隔离是确保虚拟机之间安全与可靠性的一种重要手段,现有虚拟机隔离机制主要包括:网络隔离;构建虚拟机安全文件防护网;基于访问控制的逻辑隔离机制;通过硬件虚拟,让每个虚拟机无法突破虚拟机管理器给出的资源限制
内存隔离
-
MMU(Memory Management Unit 内存管理单元),它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,负责将虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。
-
Xen将这层中间地址真正地映射到机器地址上却可以是不连续的,这保证所有的物理内存可被任意分配给不同的Guest OS
- 虚拟机监控器使用分段和分页机制对自身的物理内存进行保护。x86体系结构提供支持分段机制的虚拟内存,这能够提供另一种形式的特权级分离。
- 基址:基址+虚拟地址=>线性地址
- 段限:决定段中所能访问的线性空间的长度
- 属性位:标记是否可读写、可执行、属于代码段还是数据段
网络隔离
- 网络隔离:确保把有害的攻击隔离,在可信网络之外和保证可信网络内部信息不外泄的前提下,完成网间数据的安全交换。
- 网络隔离关键:在于系统对通信数据的控制,即通过不可路由的协议来完成网间的数据交换
相关文章:

虚拟化技术[1]之服务器虚拟化
文章目录 虚拟化技术简介数据中心虚拟化 服务器虚拟化服务器虚拟化层次寄居虚拟化裸机虚拟化VMM无法直接捕获特权指令解决方案 服务器虚拟化底层实现CPU虚拟化内存虚拟化I/O设备虚拟化 虚拟机迁移虚拟机动态迁移迁移内容:内存迁移迁移内容:网络资源迁移迁…...

WPF之容器标签之Canvas布局标签
Canvas: 定义一个区域,可在其中使用相对于 Canvas 区域的坐标以显式方式来定位子元素。 实例 可以在子标签使用Canvas属性设置定位 <Canvas Width"500" Height"300"><StackPanel Width"100" Height"100"Backgro…...

AIGC绘画设计基础-建筑设计应用
一、AI及AIGC 对于AI大家都不陌生,但是AIGC这个概念好多人其实不大清楚。“AI”是指人工智能技术本身,而“AIGC”是指基于人工智能技术而生成的内容。 生成式人工智能——AIGC(Artificial Intelligence Generated Content)&…...

Pinia:状态管理库
Pinia 为vue设计的一个现代化的状态管理库,vue3生态系统中的一个核心组件, 专为利用Vue3的新特性设计,替代Vuex称为Vue应用的状态管理标准,提供了更简洁的API,更好的类型安全,以及易于调试的功能 状态管理 在前端应用开发中,用来集中管理和协调应用程序状态的一种工具.在这…...

Mokito的一些API
Mockito是一个Java单元测试框架,它允许开发者创建和配置模拟对象(mock objects),以便在隔离的环境中测试代码,尤其是当实际对象难以构造或其行为不确定时。下面是一些核心的Mockito API及其使用场景和代码示例。 基础…...

前端已死? Bootstrap--CSS组件
目录 Bootstrap 下载 Bootstrap--全局CSS样式 栅格系统 栅格参数 正常显示 实例 代码演示: 排版 代码演示 表格 代码演示 表单 代码演示 等等...(文档很清晰了) Bootstrap--组件 结合演示:(页面) Bootstrap Bootstrap v3 中文文档 Bootstrap 是最受欢迎的 HT…...

codewars check_same_case 题解
题目 编写一个函数来检查两个给定的字符是否大小写相同。 如果任何字符不是字母,则返回-1如果两个字符大小写相同,则返回1如果两个字符都是字母且大小写不同,则返回0 例子 a并g返回1A并C返回1b并G返回0B并g返回00并?返回-1题解 1 此题主…...

【Text2SQL 经典模型】X-SQL
论文:X-SQL: reinforce schema representation with context ⭐⭐⭐⭐ Microsoft, arXiv:1908.08113 X-SQL 与 SQLova 类似,使用 BERT style 的 PLM 来获得 representation,只是融合 NL question 和 table schema 的信息的方式不太一样&#…...

蓉耀·时尚双子星------Yestar艺星首家星美学概念院璀璨启航
在医美行业的璀璨星空中,一颗新星于蓉城冉冉升起,点亮了求美者的道路。5月21日,蓉耀•时尚双⼦星--Yestar艺星首家星美学概念院在成都复城国际璀璨启幕,标志着Yestar艺星全球战略布局在蓉城迈出了重要一步,也意味着其在…...

Undet for SketchUp 2023.3 点云建模软件 支持支持草图大师sketchup2021-2022-2023
1.Undet for sketchup 2023.3支持草图大师sketchup2021-2022-2023。支持机载雷达扫描、车载扫描还是地面扫描,对AEC行业用户来说,真正需要的是如何将这些数据快速处理为三维模型,这样才能将这些信息延展到BIM领域发挥效用。因此面对这些海量的…...

CHI dataless 传输——CHI(4)
上篇介绍了read的操作类型,本篇我们来介绍一下dataless 目录 一、dataless操作概览 二、Non-CMO (Non-Cache Maintenance Operation) 1、CleanUnique 2、StashOnce and StashOnceSep 3、Evict 三、CMO (Cache Maintenance Operation) 一、dataless操作概览 名…...

vue3第三十节(vue3 vite中使用sass)
引言:什么是Sass? Sass(Syntactically Awesome Style Sheets)是一种CSS预处理器,它扩展了CSS的功能,提供了更高级的语法和特性,例如变量、嵌套、混合、继承和颜色功能等,这些特性可以帮助开发…...

blender 烘焙渲染图片,已经导出fbx,导出贴图。插件生成图片
1.新建一个模型。选择资产浏览器的材质,并拖动到模型身上,如下图。资产浏览器的材质可以网上找。 2.打开着色器面板。正下方着色器窗口中,点击空白取消选择,然后右击-添加-着色器-原理化BSDF,右击-添加-纹理-图像纹理。…...

ASO行业面临洗牌,苹果应用商店加搜索广告!
苹果公司全球市场营销高级副总裁菲尔席勒(Phil Schiller),在全球开发者大会开幕前(WWDC)透露了一些应用商店方面的消息。重点包括:1.应用商店搜索中加入广告;2.应用审核加快;3.新的商业模式。 一、 Search Ads搜索广告 这是最令人惊讶的改变,苹果在App Store平台的搜索结果中加…...

Labelme自定义数据集COCO格式【实例分割】
参考博客 labelme标注自定义数据集COCO类型_labelme标注coco-CSDN博客 LabelMe使用_labelme中所有的create的作用解释-CSDN博客 1制作自己的数据集 1.1labelme安装 自己的数据和上面数据的区别就在于没有.json标签文件,所以训练自己的数据关键步骤就是获取标签文…...

【网络安全】Linux 应急响应-溯源-系统日志排查知识点
Linux 应急响应-溯源-系统日志排查知识点汇总 1. 查看当前已经登录到系统的用户 (w 命令) w2. 查看所有用户最近一次登录 (lastlog 命令) lastlog lastlog | grep -v "Never logged in"3. 查看历史登录用户以及登录失败的用户 (last 和 lastb 命令) last lastb4. …...

Spark项目实训(一)
目录 实验任务一:计算级数 idea步骤分步: 完整代码: linux步骤分布: 实验任务二:统计学生成绩 idea步骤分布: 完整代码: linux步骤分步: 实验任务一:计算级数 请…...

爬虫基础1
一、爬虫的基本概念 1.什么是爬虫? 请求网站并提取数据的自动化程序 2.爬虫的分类 2.1 通用爬虫(大而全) 功能强大,采集面广,通常用于搜索引擎:百度,360,谷歌 2.2 聚焦爬虫&#x…...

vlan综合实验
1、实验拓扑 2、实验要求 1、pc1和pc3所在接口为access;属于vlan 2; pc2/pc4/pc5/pc6处于同一网段;其中pc2可以访问pc4/pc5/pc6; pc4可以访问pc6;pc5不能访问pc6; 2、pc1/pc3与pc2/pc4/pc5/pc6不在同一网段; 3、所有pc通过DHC…...

如何使用ffmpeg 实现10种特效
相关特效的名字 特效id 特效名 1 向上移动 2 向左移动 3 向下移动 4 颤抖 5 摇摆 6 雨刷 7 弹入 8 弹簧 9 轻微跳动 10 跳动 特效展示(同时汇总相关命令) pad背景显示 pad背景透明 相关命令(一会再讲这些命令,先往下看) # 合成特效语音 ffmpeg -y -loglevel erro…...

C语言如果变量全部在全局内存空间会怎么样
结论先行 应该根据内存使用的生命周期,选择合适的内存空间应该尽量使用连续内存如果不想在设计封装性上付出太多代价,全部放入全局空间也比较可取 空间类型特点全局空间生命周期最久,空间连续,变量分配紧致,但存在浪…...

【YOLO改进】换遍MMPretrain主干网络之ConvNeXt-Tiny(基于MMYOLO)
ConvNeXt-Tiny ConvNeXt-Tiny 是一种改进的卷积神经网络架构,其设计目的是在保持传统卷积神经网络优势的同时,借鉴了一些Transformer架构的成功经验。 ConvNeXt-Tiny 的优点 架构优化: ConvNeXt-Tiny 对经典ResNet架构进行了多种优化&#…...

【数据库】MySQL
文章目录 概述DDL数据库操作查询使用创建删除 表操作创建约束MySqL数据类型数值类型字符串类型日期类型 查询修改删除 DMLinsertupdatedelete DQL基本查询条件查询分组查询分组查询排序查询分页查询 多表设计一对多一对一多对多设计步骤 多表查询概述内连接外连接 子查询标量子…...

JVM运行时内存:垃圾回收器(Serial ParNew Parallel )详解
文章目录 1. 查看默认GC2. Serial GC : 串行回收3. ParNew GC:并行回收4. Parallel GC:吞吐量优先 1. 查看默认GC -XX:PrintCommandLineFlags:查看命令行相关参数(包含使用的垃圾收集器)使用命令行指令:ji…...

The Missing Semester of Your CS Education(计算机教育中缺失的一课)
Shell 工具和脚本(Shell Tools and Scripting) 一、shell脚本 1.1、变量赋值 在bash中为变量赋值的语法是foobar,访问变量中存储的数值,其语法为 $foo。 需要注意的是,foo bar (使用空格隔开)是不能正确工作的&…...

如何为ChatGPT编写有效的提示词:软件开发者的指南
作为一名软件开发者,特别是使用Vue进行开发的开发者,与ChatGPT等AI助手高效互动,可以极大地提升你的开发效率。本文将深入探讨如何编写有效的提示词,以便从ChatGPT中获取有用的信息和帮助。 1. 明确目标 在编写提示词之前&#…...

angular插值语法与属性绑定
在 Angular 中,您提供的两种写法都是用来设置 HTML 元素的 title 属性,但它们的工作方式有所不同: 插值语法 (Interpolation) <h1 title"{{ name }}">我的名字</h1> 属性绑定 (Property Binding) <h1 [title]&q…...

Python ❀ 使用代码解决今天中午吃什么的重大生存问题
1. 环境安装 安装Python代码环境参考文档 2. 代码块 import random# 准备一下你想吃的东西 hot ["兰州拉面", "爆肚面", "黄焖鸡", "麻辣香锅", "米线", "麻食", "羊肉泡馍", "肚丝/羊血汤&qu…...

做抖音小店需要清楚的5个核心点!
大家好,我是喷火龙。 不管你是在做抖音小店,还是在做其他的电商平台,如果已经做了一段时间了,但还是没有拿到什么结果,我所指的结果不是什么大结果,而是连温饱都解决不了,甚至说还在亏钱。 有…...

文件流下载优化:由表单提交方式修改为Ajax请求
如果想直接看怎么写的可以跳转到 解决方法 节! 需求描述 目前我们系统导出文件时,都是通过表单提交后,接收文件流自动下载。但由于在表单提交时没有相关调用前和调用后的回调函数,所以我们存在的问题,假如导出数据需…...