草庐IT

初识云计算————虚拟化背景

**877 2023-10-28 原文

VM
虚拟机(Virtual Machine)
虚拟化背景:美国环境保护署(EPA)报告的一组有趣的统计数据就证明了其好处。EPA 研究服务器和数据中心的能源效率时发现,实际上服务器只有 5% 的时间是在工作的。在其他时间,服务器都处于 “休眠” 状态
原因:
1.有预期的冗余导致资源大量浪费
例如:当你买一台电脑时,可能只需要i5的CPU,但是为了未来可能会买i9或i7的
2.不同的服务对服务器的资源要求不同,导致资源大量闲置
例如:两台服务器,其中一台运行nginx,但是nginx只需要CPU,内存(MEM),网络IO(net),但是对磁盘(disk)要求不大,另一台运行mfs(mooseFS具有冗余容错功能的分布式文件系统),主要使用内存(MEM),网络IO(net),磁盘IO(disk),但是对CPU要求不大,所以不同的服务,对资源的要求不同,但是如果装在一起,安全性无法保证。导致资源大量闲置,浪费。

虚拟化定义
虚拟化:通过虚拟化技术,将一个物理服务器虚拟化为多个不同的逻辑服务器,在不同的逻辑服务器上运行不同的应用程序
彼此隔离,互不影响,显著提高计算机的资源利用率。


发展史:
软件模拟      》  虚拟化层翻译     》   容器级虚拟化


软件模拟虚拟化
将硬件模拟成虚拟化,在组成操作系统
效率低下,普遍用于研究


虚拟化层翻译
x86平台指令集权限划分:ring0,ring1,ring2,ring3
操作系统一般使用ring0
驱动程序使用ring1,ring2
应用程序使用ring3

VM提供虚拟化和CPU对应指令集解决方案(虚拟化引擎)
.全虚拟化,客户机认为自己运行在硬件之上,优点:不需对客户机操作系统进行修改;缺点:消耗资源大
xen公司对虚拟化内核进行改造(指令集改造)
半虚拟化,客户机知道自己是运行在虚拟机上,缺点:需要对客户机操作系统进行修改,兼容性差,需要操作系统发布时就内置半虚拟化技术;优点:消耗资源小性能好,性能优于全虚拟化。


2005 年,Intel  推出硬件解决虚拟化的方案,对 CPU 指令进行改造,即为 VT-x,VT-x 增加了两种操作模式 :VMX root operation 和 VMX  non-root operation,VMM  运行在 VMX root operation 模式,虚拟机运行在 VMX  non-root operation 模式,这两种模式都支持 Ring 0 -3  这 4 个特权级别(相当于使用物理CPU)

I/O 通讯硬件解决方案 VT-d,网络通讯方案 VT-c
虚拟化引擎同一提供虚拟机资源供给使用
    CPU   VT-X
    MEM   直接通过影子表建立物理内存的映射关系
    DISK  通过虚拟磁盘技术直接使用
    网卡  虚拟网卡 bridge、VT-C
    显卡、USB 一些借口:VT-D 直通给虚拟机内部
寄居架构
优点:简单,便于实现
缺点:安装和运行应用程序依赖于主机操作系统对设备的支持
举例:GSX Server, VMware Server, Workstation   KVM


裸金属架构
优点:虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵 活
缺点:虚拟层内核开发难度较大
举例:VMWare 
        ESXI Server    面向企业
        VMware Workstation    面向个人、开发者
 

有关初识云计算————虚拟化背景的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  3. ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题 - 2

    我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植

  4. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  5. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  6. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  7. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  8. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  9. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  10. ruby-on-rails - 如何计算 Ruby/Rails 中 JSON 对象的数量 - 2

    Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包

随机推荐