1.云计算

  • 是一种通过因特网以服务的方式提供动态可伸缩的虚拟化的资源的计算模式
  • 是一种按使用量付费的模式
  • 主要服务模式有:SaaS,PaaS,IaaS

2.Hypervisor

  • 在x86平台虚拟化技术中,新引入的虚拟化层通常称为虚拟机监控器(vmm),也叫做hypervisor。

###3.虚拟化–构建基础架构不可或缺的关键技术之一

  • 软件方案
  • 纯软件虚拟化,就是用纯软件的方法在现有的物理平台上实现对物理平台访问的截获和模拟。常见的软件虚拟化例如:qemu
  • 硬件方案
  • 硬件虚拟化,就是物理平台本身提供了对特殊指令的截取和重定向的硬件支持

4.准虚拟化(半虚拟化)

  • 改动客户操作系统,使它们以为自己运行在虚拟环境下,能哦股与虚拟机监控机协同工作。

5.全虚拟化

  • 为客户提供了完整的虚拟x86平台,包括处理器,内存和外设,支持运行理论上可在真实物理平台上运行的操作系统,为虚拟机的配置提供了最大程度上的灵活性。

6.kvm

  • 是基于虚拟化扩展的x86硬件,是linux完全原生的全虚拟化解决方案。
  • 在kvm架构中,虚拟机实现为常规的linux进程,由标准的linux调度程序进行调度。
  • kvm允许客户机过载使用物理资源,即允许为客户机分配的cpu和内存数量多于物理上存在的资源。

7.kvm的存储功能

  • kvm能够使用linux支持的任何存储来存储虚拟机镜像,包括具有IDE,SCSI和SATA的本地磁盘,网络附加存储,或者支持iscsi和光纤通道的SAN。
  • kvm的原生磁盘格式为QCOW2,它支持快照,允许多级快照,压缩和加密。

8.其它虚拟化方案

  • VMware
  • VirtualBox
  • Hyper-V

9.模块化设计的linux

  • 操作系统内核设计一直分为两个阵营:微内核和单内核。
  • linux采用了实用主义的设计,为了满足性能要求,linux内核被设计成单内核,但同时借鉴了微内核的精华:模块化设计以及动态装载内核模块的能力

10.虚拟化模型

  • 虚拟机监控器的主要职能是:管理真实的物理硬件平台,并为每个虚拟客户机提供对应的虚拟硬件平台

11.kvm模块

  • 是kvm虚拟机的核心部分,其主要功能是:初始化cpu硬件,打开虚拟化模式。然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
  • kvm模块会为每一个创建出来的虚拟处理器生成对应的文件句柄,对虚拟处理器的文件句柄进行相应的IOCTL调用,就可以对虚拟处理器进行管理。

12.QEMU设备模型

  • 是qemu本身并不是kvm的一部分,其自身就是一个著名的开源虚拟机软件。与kvm不同,qemu虚拟机是一个纯软件的实现,所以性能低下。但是,其优点是在支持qemu本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。
  • qumu使用了kvm模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大地提高了虚拟机的性能。
  • qemu与kvm两者的结合是最成熟的选择

13.intel虚拟化技术分类

  • 第一类是处理器相关的,成为VT-X,是实现处理器虚拟化的硬件扩展,这也是硬件虚拟化的基础。
  • 第二类是芯片组相关的,成为VT-d,是从芯片组的层面为虚拟化提供必要支持,通过它,可以实现诸如直接分配物理设备给客户机的功能。
  • 第三类是输入输出设备相关的,主要目的是通过定义新的输入输出协议,使新一代的输入输出设备可以更好的支持虚拟化环境下的工作。

14.kvm必须的硬件虚拟化扩展

  • intel的虚拟化技术(intel vt)
  • AMD的AMD-V技术

15.vCPU的概念

  • quemu/kvm为客户机提供一套完整的硬件系统环境,在客户机看来其所拥有的cpu即vcpu
  • 在普通的linux系统中,进程一搬会有两种执行模式:内核模式和用户模式。而在kvm环境中,增加了第三种模式:客户模式。vcpu在三中执行模式下的不同分工为:
  1. 用户模式(user mode):主要处理i/o的模拟和管理,由qemu的代码实现。
  2. 内核模式(kernel mode):主要处理特别需要高性能和安全相关的指令
  3. 客户模式(guest mode):主要执行guest中的大部分指令,i/o和一些特权指令除外。

16.SMP系统

  • smp系统(对称多处理器)系统会使用多处理器,多核,超线程等技术中的一个或者多个。
  • 由于每个vcpu在宿主机中都是一个线程,并且宿主机linux系统是支持多任务处理的,因此可以通过两种操作来实现客户机的smp。
  1. 将不同的vcpu的进程交换执行
  2. 将在物理smp硬件系统上同时执行多个vcpu的进程。

17.内存设置几本参数

  • 在通过qemu命令行启动客户机是设置内存大小的参数如下:

      -m megs #设置客户机的内存为megs MB大小
    

18.影子页表

  • 定义:是从软件上维护了客户机虚拟地址到宿主机物理地址之间的映射。
  • 缺点:
  1. 影子页表实现复杂,导致其开发,调试,维护都比较困难
  2. 影子页表的内存开销大
  • 为了解决影子页表存在的问题,intel的cpu提供了ept技术,ept只需要维护一张ept页表,而不需要像影子页表那样为每个客户机进程的页表维护一张影子页表。减小了内存的开销。

19.三种方式实现内存的过载使用

  • 内存交换
  • 气球
  • 页共享

20.QEMU支持的镜像文件格式

  • raw
  • host_device
  • qcow2

  • 使用文件来做镜像的优点
  1. 存储方便
  2. 易用性
  3. 可移动性
  4. 可复制性
  5. 稀疏文件可以节省磁盘空间
  6. 网络远程访问

21.QEMU支持的网络模式

  • qemu-kvm主要向客户机提供了如下4种不同模式的网络:
  1. 基于网桥的虚拟网卡
  2. 基于NAT的虚拟网络
  3. qemu内置的用户模式网络
  4. 直接分配网络设备的网络

22.QEMU内部的用户模式网络:

  • 使用用户模式的网络的客户机可以连通宿主机以及外部的网络
  • 用户模式的网络是qemu-kvm的默认网络配置

23.图形显示(SDL,VNC,Spice)

  • SDL库被广泛应用于各种操作系统上的游戏开发,多媒体播放器,模拟器(qemu)等应用程序中。
  • VNC是图形化的桌面分享系统,它使用rfb协议来远程控制另一台计算机系统

其它

  • 在QEMU/KVM的网络使用中,网桥模式可以让客户机和宿主共享一个物理网络设备连接网络。
  • NAT(网络地址转换),属于广域网接入技术的一种,它将内网地址转化为外网的合法ip地址。
  • 在客户机上查看cpu情况:

      car /proc/cpuinfo
    
  • 在宿主机中看到相应的qemu进程和线程:

      ps -efL | grep qemu
    

命令

  1. 安装qemu-kvm

     make install | tee make-install.log
    
  2. 安装bridge-utils

     yum install bridge-utils  tunctl
    
  3. 安装dnsmasq

     yum install dnsmasq -y
     service dnsmasq start
    
  4. 创建一个5GB的磁盘文件

     qemu-img create -f qcow2 ubuntu.qcow2 5G
    
  5. 查看网桥状态

     brctl show