首页 > 代码库 > Linux之虚拟化

Linux之虚拟化

一:什么是虚拟化

   虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。--百度百科

   总结:将底层计算机资源.虚拟成互相隔离的计算机资源.每个资源都要有计算机的五大部件的所有设备.

二:模拟和虚拟话的区别.

  虚拟化的CPU只做相应的分配管理.CPU的架构和虚拟机的CPU保持一致. 模拟的CPU可以是任意类型.

三:虚拟化分类

  1)半虚拟化:虚拟机明确知道自己的I/O是虚拟出来的.

  半虚拟化产品:XEN KVM

wKioL1RDX93BvECvAAB9zrebqIs146.jpg

虚拟机直接跑在硬件上.架构和虚拟硬件保持一致.也被称为类型一虚拟化

  

 2)OS级别虚拟化:虚拟机跑在操作系统上跟操作系统共享同一内核.

   OS虚拟化产品:Open vz , LXC 

 

wKioL1RDYefxSBrfAAB3E97YF9w480.jpg

    

  3)完全虚拟化:虚拟机不知道自己工作在虚拟环境中

     


  4)库虚拟化:可以在Linux上安装windows程序

   wine

  

  5)应用程序虚拟化:JVM


四:计算机各部件虚拟化

 1)CPU的虚拟化

     BT技术加速性能:二进制翻译技术,使虚拟CPU通过二进制加速技术直接运行在物理CPU上.

     HVM:硬件辅助加速技术,使虚拟机的cpu直接工作在0环上.物理的0环成为-1环.调用硬件驱动设备还是需要通过-1环.

     在半虚拟化中调用CPU时直接通过hypercall

 2)内存虚拟化

     线性空间即为虚拟出来的内存空间.线性空间与物理空间之间的映射关系是通过CPU中的MMU来控制管理的.为了提高映射关系的命中率.出现了TLB缓存,在半虚拟化中TLB缓存会出现同种名称对应不同的结果现象.所以每次切换虚拟机都要清空TLB.为了解决这些问题,提出了了TLB,MMU的虚拟化.

     MMU的虚拟化实现了GVA-HPA略去了GPA

     TLB的虚拟化taggedTLB:给各个虚拟机的GVA-HPA映射打上标签.

 3)I/O设备的虚拟化

     模拟(软件):模拟和完全虚拟没有多大区别.

     半虚拟化:IO fronted--IO backend

     透传技术IO :直接分块物理硬盘给虚拟机

     显示设备:帧缓冲机制

     键盘鼠标:通过焦点捕捉.

五:虚拟化网络

  桥接:把host主机网卡当作桥.虚拟机的网卡连接到这个桥上.与外界进行通信.

  仅主机:在仅主机模式下,虚拟主机是不能与外部主机通信的,只能让个虚拟主机之间,虚拟主机与宿主机之间通信(用纯软件的方式创建一个虚拟交换机,个虚拟机连接到虚拟交换机上).

  NAT转发:虚拟机通过NAT 转换把源地址转换成宿主机的IP地址与外部主机进行通信

  TUN:模拟了网络层设备.操作在第三层.

  TAP:等同于一个以太网设备.工作在第二层.


本文出自 “slayer” 博客,请务必保留此出处http://slayer.blog.51cto.com/4845839/1565667

Linux之虚拟化