(Kernel-based Virtual Machine) + KQEMU

在KVM(Kernel-based Virtual Machine) 里面一直会谈论到QEMU 什么是QEMU 究竟在KVM 的虚拟化中QEMU 占了什么重要的地位.

  • QEMU
    • machine emulator (User mode emulation)
    • 当QEMU当成machine emulator时它可以让其他平台的作业系统OSes或是程式Programes比如是ARM (一种常用于可携式装置的处理器)系统可以直接执行在不同的平台上,比如是我们的桌机.使用的技术叫做dynamic translation( JIT : just-in-time compilation  http://en.wikipedia.org/wiki/Just-in-time_compilation  ).借此可以得到较佳的较能.

    • virtualizer(System mode)
    • 当QEMU当成virtulizer时, QEMU几乎可以以模拟的方式模拟出一台PC ,包含了CPU以及其他的周边装置,所以透过这种方式,QEMU可以模拟出不同的硬体出来,如x86, AMD64, ARM , Alpha, ETRAX CRIS, MIPS, MicroBlaze和SPARC.不过目前可以执行QEMU的virtualizer只有x86 x86_64和Power PC详细资料请参考QEMU的官方网页  http://www.nongnu.org/qemu/status.html  也因此市面上的作业系统都可以模拟出来如Linux, Solaris, Microsoft Windows, DOS,以及BSD.但是这种模拟的方式像是在Host的作业系统上跑应用程式(application),所以效能不是很好,所以在Linux kernel下的是使用另外一种的方式去模拟KQEMU.

  • 我们来看看QEMU的官方网页对于QEMU的定义是什么.  http://www.nongnu.org/qemu/about.html  QEMU属于Open source也就是可以让大家免费来使用的,而且它就有两种功能1.是machine emulator 2.是virtualizer各代表什么意思呢!

    光是看完QEMU 官方网站的说明可以会让人更搞不懂到底KVM 和QEMU 是谁在做模拟的动作.

  • KVM & QEMU
  • 一开始我对于KVM和QEMU的概念有点分不太清楚,但这两个东西其实是主要构成Linux虚拟化的最重要的两个元件(components).我们可以先上KVM官方网站的FAQ查看一下.里面的其中有一点就清楚的说明了KVM和QEMU的关系 
    http://www.linux-kvm.org/page/FAQ#What_is_the_difference_between_KVM_and... 
    Q:What is the difference between KVM and QEMU? 
    A:QEMU uses emulation; KVM uses processor extensions (HVM) for virtualization. 
    原来KVM只负责虚拟化的部份HVM (hardware-assisted virtualization),也就是KVM负责VMM(Hypervisor)的工作,至于模拟硬体装置就交给了QEMU .

    QEMU的FAQ 
    http://qemu-buch.de/cgi-bin/moin.cgi/FrequentlyAskedQuestions 
    Q:Can QEMU use hardware virtualization extensions - Intel's VT or AMD's SVM? 
    A:At present, no. A separate project named Kernel Virtual Machine currently uses a 
    modified QEMU to provide this ability for Intel's VT and AMD's SVM technologies. 
    上面也是讲述同样的关系.KVM主要的功能就只是一个VMM (hypervisor)他并没有去模拟硬体的装置.模拟硬体的动作全都是交给QEMU,不过QEMU只是存在user space的程式它必须透过/dev/kvm来和kernel与硬体沟通.

  • KQEMU
  • 那KQEMU又是什么? 
    在Linux KVM上使用的的QEMU是修改过的版本叫做KQEMU(也准备转移到FreeBSD和Windows的系统上).主要是QEMU的公司Fabrice Bellard针对x86有虚拟化处理器的系统,修改一个只能使用在这种系统上的模拟器.这改写过的QEMU被称为KQEMU或是QEMU Accelerator.最主要就是为了提升x86虚拟化处理器对于虚拟化效能的提升.

    所以我们在使用KVM + KQEMU 时其处理器必须具有Intel (VT) 或是AMD (AMD-V) 功能才能使用.

  • Guest Mode
    • Guest Model:  执行关于Guest OS的Memory & CPU的I/O请求.
    • User Model:  透过KQEMU所模拟的装置,User mode接受Guest OS的Storage和Network I/O请求.
    • Kernel Model:  就负责Guest Model所提出的Storage和Network I/O请求并做转换.
  • 系统会将工作模式分为3 种,除了原本的Kernel , User mode 之外还添加了Guest Mode.这三种模式各处理不同的工作.

note: kernel space和user psace在作业系统中会将virtual memeory(记忆体技术的一种)区分成两块,分别为kernel space和user psace.很明显的是kernel space就是保留给kernel, kernel extensions,或是device drivers.这保留的空间是不会再释放出来的.相对应的user space就是给一般使用者的应用程式(applications)来使用.这边的空间会依据需求会被释放出来给其他的程式来使用.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值