我们知道云计算平台上面的云主机实际上都是虚拟机,但我们感觉不出来,用起来和一台真实的服务器没什么区别,这都要归功于虚拟化技术(Virtualization)。可以说虚拟化技术是实现云计算基础架构层面(IaaS)的核心技术。那么这种虚拟化技术究竟是怎么回事?

云计算所使用的虚拟化技术,其实并不是一项新技术。1998年成立的VMWare(威睿)公司就是做虚拟机软件的,后来被数据存储技术公司EMC(易安信)收购了,再后来EMC又被Dell收购了。

我们先不谈VMware公司的历史,重点说一下他们的虚拟机软件:VMware Workstation。这个软件允许多个x86虚拟机同时被创建和运行。每个虚拟机实例可以运行其自己的客户机操作系统(Guest OS),如Windows、Linux、BSD等。说白了就是,VMware Workstation允许一台真实的计算机同时运行好几个操作系统。

从底层操作系统来看,每个虚拟机都是一个用户进程;从虚拟机中的的Guest OS来看,自己拥有整个计算机。

一、虚拟机的类型

虚拟机软件解决了一个关键的技术问题:就是如何让Guest OS认为自己正运行在一个真实的计算机上。

服务器虚拟化有两种常见的类型

1、寄居架构(Hosted Architecture)

寄居架构

作为应用安装在OS之上

基于现有操作系统

兼容性好

性能较差

功能单一

2、裸金属架构(Bare Metal Architecture)

裸金属

直接安装在硬件之上,本身就是OS

基于裸机(Bare Metal)

硬件兼容性要求高

性能好

有许多高级功能。

二、多个操作系统虚拟机如何管理?

在没有VMM的时候,系统中有两种内存地址:虚拟地址(virtual address)和物理地址(physical address)。从虚拟地址到物理地址的转换有两种方式。方式一:在TLB(translate lookside buffer,硬件实现)查找。方式二:在页表(page table)中查找,找到之后把结果放到TLB中去。系统会先尝试方式一,要是找不到(TLB miss),就用方式二。

在有了VMM之后,系统中有三种内存地址:虚拟地址(virtual address),物理地址(physical address)和机器地址(machine address)。机器地址才是真正与内存条上的地址一一对应的。物理地址只是操作系统认为的物理地址。

当操作系统试着要使用特权指令来完成一个虚拟地址到物理地址的转换时(TLB miss),VMM就介入了(VMM监视着所有对特权寄存器的操作)。VMM会先使用操作系统内的代码来先完成虚拟地址到物理地址的转化(因为VMM并不知道这个映射关系)。然后,操作系统认为自己已经完成了转化,尝试去更新TLB(特权操作)。这个时候,VMM会介入,用一个叫个pmap的映射表找到物理地址对应的机器地址,用机器地址替换掉物理地址,然后把TLB更新为虚拟地址到机器地址的映射。之后,所有对这个虚拟地址的访问都会被转换为对相应机器地址的访问。(注意,MIPS用的是software-reloaded TLB,x86用的是hardware-reloaded TLB)

多个VM之间是怎么分享资源的?或者说,1GB内存怎么当2GB用?

我们知道,每一个虚拟机都要占用大量的内存空间。在内存有限的情况下,怎么在一台机器运行更多的虚拟机?幸运的是,不用的虚拟机之间在内存中数据可能会完全一致(比如,系统文件在内存中的缓存)。如要我们可以只在内存中保留一份数据,我们就行节省很多空间。Disco使用虚拟IO设备和虚拟网络设备来节省内存空间。

虚拟IO设备:当两个虚拟机从同一个磁盘上读同一个文件时,VMM会intercept DMA,然后就会发现这两个VM在使用同样的数据。这份数据只需要在机器内存里保存一份,然后修改pmap,使得两个VM的物理地址指向同一个机器地址就可以了。当任何一个VM更新这份数据,VMM会给它一份新的拷贝,原来的那份不做更改(copy on write机制)。

虚拟网络设备:当使用NFS从VM1向VM2复制文件时,文件并没有被真正地复制。虚拟网络设备会更新VM2上的pmap,使之指向在内存中的文件,使得VM2上的操作系统认为自己已经有了这个文件。后来,VMWare还有用hash来找相同的内存页然后再共享的技术。

云计算与虚拟化技术核心是什么?相关推荐

  1. 关于云计算存储虚拟化技术三个层次上的实现

    关于云计算存储虚拟化技术三个层次上的实现 随着企业的成长,业务和应用不断增加,IT 系统规模日益庞大,带来高能耗.数据中心空间紧张.IT 系统总体拥有成本过高等问题;而现有服务器.存储系统等设备又没有 ...

  2. 云计算入门+虚拟化技术

    文章目录 前言 一.概念 1.万物互联下的云计算时代 2.需求的诞生 3.云计算关键特征 4.部署模式 5.商业模式 6.思维的变化 7.云下黑科技 8.国内的云服务提供商 二.虚拟化技术 1.什么是 ...

  3. 云计算资源虚拟化技术实现原理

    说到云计算,我们通常会看到这样的描述,"通过虚拟化技术实现",不难看出,在云计算的概念中,虚拟化是非常基础,但又相当重要的一环,也是实现云计算的隔离性.扩展性.安全性等诸多问题的关 ...

  4. 云计算之虚拟化技术概述(KVM/Xen/Hyper-V/VMware)

    文章目录 虚拟化技术 什么是虚拟化 服务器虚拟化 cpu的虚拟化 内存虚拟化管理 硬盘的虚拟化 网络虚拟化 IO虚拟化 Intel虚拟化技术 主流的虚拟化技术 虚拟化技术对比 KVM Xen Hype ...

  5. 云计算与虚拟化技术详解

    一.云计算概述 1.云计算简介 云计算的概念起源于大规模分布式计算技术,是网格计算.并行计算.分布式计算.网络存储和负载均衡等传统计算机技术和网络技术发展融合的产物.是虚拟化.效用计算.软件即服务(S ...

  6. 华为云计算01——虚拟化技术

    云计算概述: 云计算不是一个新的技术,它是通过虚拟化技术,将物理硬件资源虚拟化成为多个能独立运行且相同的,能为多个虚拟机提供服务.最开始云计算由亚马逊提出,并完成了云计算的初步架构,但是,亚马逊云是私 ...

  7. 云计算及其虚拟化技术

    云计算的定义和特点 云计算是分布式处理 ( Distributed Computing ).并行处理 ( Parallel Computing) 和网格计算 ( Grid Computing) 的延续 ...

  8. 云计算,移动云计算,虚拟化技术概念以及相关技术注解

    云计算:硬件和软件都是资源并封装成服务,用户可以通过网络按需访问和使用. 移动云计算:移动网络以按需.易扩展的方式获得所需基础设施.平台.软件等工厂资源或者服务交付与使用. 技术:移动通信与互联网技术 ...

  9. 云计算存储虚拟化技术

    存储虚拟化是指将具体的存储设备或存储系统与服务器操作系统分隔开,为存储用户提供一个统一的虚拟存储池. 在面对资源池按需分配.多租户.海量存储.高I/O.快速扩展.差异化服务等需求时,传统的存储方式面临 ...

最新文章

  1. 如何做一次有效的绩效考核面谈?
  2. 字母出现位置c语言,【c语言】实现strrchr(查找该字符串最后一次出现的位置)
  3. 跨链Cosmos(3)IBC协议二
  4. html下拉列表框设置两个,怎么使用HTML option标签添加两个value
  5. asp.net如何解决传递中文参数乱码问题
  6. angular6 设置全局变量_angularjs 设置全局变量的3种方法
  7. 荒野行动android模拟,荒野行动用模拟器玩教程 荒野行动模拟器不支持机型解决方法...
  8. m4s格式转换mp3_QQ音乐下载的歌曲怎么转换MP3?音频转换格式详细教程
  9. OV426+OVM6946基于FPGA调试成像
  10. c# 贪婪匹配 html,C#正则表达式之贪婪模式
  11. usart hmi(串口屏)常用命令
  12. PYNQ-Z2上手笔记之系统安装
  13. 4、Arduino_esp32 ADC使用
  14. 安利【1】-PDF翻译工具
  15. 流计算 Oceanus 限量1元秒杀,立省2000元
  16. Mat 颜色空间转换
  17. 阿里研究员:测试稳定性三板斧,赶紧来学习一下
  18. 2022 GopherChina 出品人及演讲内容揭晓(二)
  19. ANDROID L——Material Design详解(视图和阴影)
  20. 使用林地可行性报告现状图要包含的内容清单

热门文章

  1. 引导图(TapTargetView)
  2. 【web渗透】SSRF漏洞超详细讲解
  3. 软件测试-3(测试场景)
  4. Unreal中利用控件蓝图系统控制模型的材质切换
  5. 怎样搜索计算机中docx格式的文件,教您电脑docx文件怎样打开呢?教你正确打开docx文件...
  6. 后台组工作计划清单2015-05-14
  7. 华为SDK二维码识别
  8. IDEA创建java项目并打包成jar包
  9. Landsat7 产品详情介绍及文件命名规则
  10. halcon 圆点标定板相关算法说明及使用方法