设为首页 收藏本站
查看: 1553|回复: 0

[经验分享] [转] KVM虚拟化技术生态环境介绍

[复制链接]

尚未签到

发表于 2015-4-10 16:02:19 | 显示全部楼层 |阅读模式
KVM虚拟化技术生态环境介绍
http://xanpeng.github.io/wiki/virt/kvm-virtulization-echosystem-intro.html
kvm和qemu/qemu-kvm的关系

  qemu vs. qemu-kvm:

  • 从qemu 1.3开始,kvm userspace code就维护在qemu mainline中(git clone https://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git, ref)
  • qemu: http://git.qemu.org/?p=qemu.git;a=tags
  • qemu-kvm: http://git.kernel.org/cgit/virt/kvm/qemu-kvm.git/refs/tags
  • 从qemu release_0_5_1开始fork: http://git.kernel.org/cgit/virt/kvm/qemu-kvm.git/commit/?id=be26a5288e43d3177908a92251c526d54fbb936d
  • 合入qemu v1.3.0: http://git.qemu.org/?p=qemu.git;a=commit;h=cab1e8f3e37d8e883c270e3afd9c7c1c18332f0e "as of the 1.3 release all qemu-kvm features have been merged into upstream QEMU"( http://wiki.qemu.org/KVM)
  • 示意图:
DSC0000.png

  qemu vs. kvm:

  • QEMU by itself isn't very fast, as it does a lot of emulation even when running on the hardware compatible with the guest operating system. To make it perform better, QEMU has a kernel module called KVM that allows much of the guest OS's code to run directly on the host processor when running on x86 or x86-64 processors with virtualisation extensions under Linux.
  • kvm位于内核中,git clone https://git.kernel.org/pub/scm/virt/kvm/kvm.git.
kvm架构和细节

  KVM (Kernel-based Virtual Machine), by RedHat.

  • 利用现代CPU虚拟化技术,Intel-VT,AMD-V
  • 用户态driver是qemu,通过用户态driver使用processor
  • hardware layer是由qemu模拟的
  • kvm也可以不使用CPU虚拟化技术,不过那样的话,相当于通过qemu做完全模拟
DSC0001.png
  
DSC0002.png    

  kvm @kernel:

  • kvm core framework

    • virt/kvm/* 7309

  • arch related kvm codes

    • arch/x86/kvm/* 37076
    • arch/arm/kvm/* 7751
    • arch/powerpc/kvm/* 29307
    • arch/s390/kvm/* 4198
    • arch/ia64/kvm/* 12328
    • arch/mips/kvm/* 5628
    • arch/tile/kvm/* 37
    • drivers/s390/kvm/* 1447

  • kvm header files

    • arch//include/asm/kvm 7179
    • include/linux/kvm 1238
    • include/asm-generic/kvm 21

  • kvm docs

    • Documentation/virtual/kvm/* 4774
    • Documentation//kvm.txt 249

qemu架构和细节

DSC0003.jpg   

  • 安装需要的库:glib-2.12(http://www.gtk.org/download/linux.php)
  • 可以模拟一个OS,可以不需要KVM:

    • modprobe -r kvm
    • qemu-system-x86_64 -name "qemutest" -M pc-0.12 -m 1024 -smp 2 -boot d -drive file=/home/root/kvm/images/opensuse11/disk0.raw,if=virtio,index=0,media=disk,format=raw -drive file=/dev/sr0,index=1,media=cdrom -net nic,model=virtio,macaddr=52:54:00:05:11:11 -vga cirrus -balloon virtio
    • lsmod | grep kvm发现kvm.ko没有加载
    • 系统在运行,简单凭感觉启动速度和执行速度都要比kvm虚拟机慢

  • 支持的image格式(http://en.wikibooks.org/wiki/QEMU/Images#Image_types):

    • qcow2: "native" and most flexible, (cow, encryption, compression, vm snapshots)
    • raw: plain binary image of disc image
    • cow: copy-on-write format, 因历史原因而支持
    • qcow: 老版QEMU cow格式,已经被qcow2取代
    • vmdk: VMWare 3/4/6 image格式
    • vdi: VirtualBox 1.1 image格式

  • 使用Windows vm:

    • 制作Win7 vm image(http://en.wikibooks.org/wiki/QEMU/Images#Creating_an_image)

      • qemu-img create -f qcow2 win7-x86_64-sp1.img 16G (要求>8576M)
      • 插入win7的安装光盘
      • qemu-system-x86_64 -m 2048 -hda win7-x86_64-sp1.img -cdrom /dev/sr0 -boot d (对内存大小有限制),开始正常的系统安装过程
      • 安装完成,在vm内部关机。得到可运行的win7 image,大小为7.4G
      • 启动win7 vm:qemu-system-x86_64 -m 2048 win7-x86_64-sp1.img

    • 配置


  qemu-1.5.1:

  • 主程序相关:vl.c, cpu-exec.c, exec.c, translate-all.c, thunk.c, disas.c
  • 指令翻译:tcg/
  • 硬件模拟:hw/
  • 网络传输:slirp/
  • image protocol:block/

    • block/sheepdog.c
    • block/rbd.c


  sheepdog, rbd如何被支持:

  • libvirt xml文件里写sheepdog/rbd
  • libvirt解析xml,向qemu发送对应的命令
  • qemu调用sheepdog/rbd driver
libvirt所处的位置、架构和实现

  libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API,而且一些常用的虚拟机管理工具(如virsh、virt- install、virt-manager等)和云计算框架平台(如OpenStack、OpenNebula、Eucalyptus等)都在底层使用 libvirt的应用程序接口。
DSC0004.jpg    
  
DSC0005.png   
  libvirt是为了更方便地管理平台虚拟化技术而设计的应用程序接口、守护进程和管理工具。它提供的功能:

  • 对虚拟化客户机的管理
  • 对虚拟化网络和存储的管理
  • 支持多种虚拟化方案,包括KVM、QEMU、Xen、VMware、VirtualBox等在内的平台虚拟化方案
  • 支持OpenVZ、LXC等Linux容器虚拟化系统
  • 支持用户态Linux(UML)的虚拟化
  • 提供了为基于AMQP(高级消息队列协议)的消息系统(如Apache Qpid)提供QMF代理,这可以让云计算管理系统中宿主机与客户机、客户机与客户机之间的消息通信变得更易于实现
  • 为安全的远程管理虚拟客户机提供了加密和认证等安全措施

  代码特性:

  • 提供了一套较为稳定的C语言应用程序接口
  • 其他一些流行的编程语言中也提供了对libvirt的绑定,在Python、Perl、Java、Ruby、PHP、OCaml等高级编程语言中已经有libvirt的程序库可以直接使用
  • 对多种不同的Hypervisor的支持是通过一种基于驱动程序的架构来实现的,在libvirt源代码中,可以很容易找到 qemu_driver.c、xen_driver.c、xenapi_driver.c、vmware_driver.c、vbox_driver.c 这样的驱动程序源代码文件
  • 几个重要的概念:Node、Domain、Hypervisor,node表示物理节点,domain表示运行的OS实例。
  • 管理功能:

    • 域的管理:启动、停止、暂停、保存、恢复和动态迁移;对多种设备类型的热插拔操作,包括磁盘、网卡、内存和CPU;...
    • 远程节点的管理
    • 存储的管理:创建不同格式的客户机镜像;挂载NFS共享存储系统、查看现有的LVM卷组、创建新的LVM卷组和逻辑卷、对磁盘设备分区、挂载iSCSI共享存储
    • 网络的管理:列出现有的网络接口卡,配置网络接口,创建虚拟网络接口,网络接口的桥接,VLAN管理,NAT网络设置,为客户机分配虚拟网络接口


  社区特点:

  • 免费的开源的软件,使用的许可证是LGPL,使用libvirt库进行链接的软件程序不需要一定选择开源和遵守GPL许可证。
  • 目前,libvirt的开发主要由Redhat公司作为强大的支持,由于Redhat公司在虚拟化方面逐渐偏向于支持KVM(而不是Xen),故libvirt对QEMU/KVM的支持非常成熟和稳定
  • IBM、Novell等公司以及众多的个人开发者,对libvirt项目的代码贡献量非常大

  资料:
1、slide: KVM, KERNEL-BASED VIRTUAL MACHINE, Internals, code and more,有十分清晰的示意图。
2、slide: KVM: Virtualisation The Linux Way,偏重背景介绍。
3、Chris Wright@RedHat: KVM: Linux-based Virtualization,概要介绍。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55752-1-1.html 上篇帖子: KVM/QEMU桥接网络设置及kvm资料 下篇帖子: QEMU KVM Libvirt手册(5) – snapshots
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表