KVM概念

参考:Red Hat Enterprise Linux 6Virtualization Guide

介绍

什么是虚拟化

   虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。目前有多种虚拟化系统:

  • 硬件虚拟化:使用完全虚拟化໌技术(KVM)。
  • 半虚拟化:Xen所使用技术,运行linux虚拟机。
  • 软件虚拟化(仿真):使用二进制转换和其他仿真技术来运行操作系统(不用修改)。软件虚拟化的性能要比硬件虚拟化或半虚拟化要差,比如QEMU。

KVM

    KVM(Kernel Virtual Machine)是一种完全虚拟化技术。KVM包含一个可加载的内核模块(kvm.ko),这个模块提供核心虚拟化基础架构和处理器特定模式(kvm-intel.ko或kvm-amd.ko)。KVM使用QEMU来进行I/O硬件仿真。QEMU是用户空间仿真器,可以模拟多种架构处理器,性能也很不错。KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。使用KVM可以运行不用修改的Linux或Windows系统。每个虚拟机都有独立的虚拟硬件:网卡、硬盘、图形适配器等。自2.6.20开始,KVM内核组件已经包含在Linux内核中。

# modprobe -l|grep kvm
kernel/arch/x86/kvm/kvm.ko
kernel/arch/x86/kvm/kvm-intel.ko
kernel/arch/x86/kvm/kvm-amd.ko

# lsmod |grep kvm
kvm_intel              54285  0 
kvm                   332980  1 kvm_intel

KVM可以通过libvirt API和工具来管理,libvirt工具包括virt-manager、virsh等。虚拟机作为Linux进程和线程运行,这些进程和线程由内核模块控制。

Overcommitting

KVM支持虚拟CPU和内存的超量使用,超量使用表示分配比系统可用资源更多的虚拟CPU或内存。CPU超量使用允许在物理机上以更高密度运行更多的虚拟机。内存超量使用允许物理机使用内存和虚拟内存来增加虚拟机密度。

KSM

KVM采用KSM(Kernel SamePage Merging)来使KVM虚拟机共享相同的内存页面。这些共享页面通常是通用库或其他相同、高使用率的数据。

写时拷贝:一个进程第一次启动,和他的父进程共享它的所有内存,子进程或父进程要修改内存时,内核会分配一个新的内存区域,复制原始内容并允许程序修改这个新区域。这就是所谓的写时拷贝。

KSM反向使用这个概念,KSM使内核检查两个或更多已经运行的进程并比对它们的内存。如果任何内存区域和页面相同,KSM就将相同页面的多个引用合并为一个单独页面的单独引用。这个页面就标记为写时拷贝。如果页面内容被修改,那么会创建一个新页面。这在KVM虚拟化中很有用。当一个虚拟机启动后,它只是从父进程qemu-kvm那继承内存。一旦虚拟机运行,当虚拟机运行相同的操作系统或应用时,虚拟机的系统镜像内容可以共享。KSM只识别和合并相同页面,这些页面不影响虚拟机或主机的数据安全。KSM允许KVM处理这些相同的内存区域的共享请求。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值