文档章节

KVM虚拟化学习总结之简介

perofu
 perofu
发布于 2014/10/30 14:53
字数 1614
阅读 5980
收藏 151

KVM虚拟化学习总结之简介

1、虚拟化分为:全虚拟化和半虚拟化,需要CPU的支持。

 

2、全虚拟化:不需要做任何配置,让用户觉得就是一台真实的服务器

 

3、半虚拟机化:需要用户配置,有点麻烦。

 

4KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。

 

5、与Xen相比较,KVM就简化的多了。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。

 

6/etc/libvirt/qemu目录,存放虚拟机的配置文件。

 

7kvm的备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。

 

8kvm的还原:进入virsh,执行define 目录下的xml文件路径,且确保镜像文件的存在。

virsh # define /etc/libvirt/qemu/winxp.xml

 

9KVM允许客户机过载使用(over-commit)物理资源,即给客户机分配的CPU和内存数量多于物理上实际存在的资源。

 

10CPU的过载使用,是让一个或多个客户机使用vCPU的总数量超过实际拥有的物理CPU数量,QEMU会启动更多的线程来为客户机提供服务,这些线程也是被Linux内核调度运行在物理CPU硬件上。

 

11、最推荐的做法是对多个CPU的客户机使用over-commit,比如:在拥有4个逻辑CPU的宿主机中,同时运行多于4个(如8个、16个)客户机,其中每个客户机都被分配一个vCPU。这时,如果每个宿主机的负载不很大的情况下,宿主机Linux对每个客户机的调度是非常有效的,这样的过载使用并不会带来客户机中的性能损失。

 

12最不推荐的做法是让某一个客户机的vCPU数量超过物理CPU数量。比如,在拥有4个逻辑CPU的宿主机中,同时运行一个或多个客户机,其中每个客户机的vCPU数量多于4(如16个)。这样的使用方法会带来比较明显的性能下降,其性能反而不如将客户机分配2个(或4个)vCPU,而且如果客户机中负载过重时,可能会让整个系统运行不稳定。不过,在并非100%满负载的情况下,一个(或多个)有4vCPU的客户机运行在拥有4个逻辑CPU的宿主机中并不会带来明显的性能损失。

 

13、总的来说,KVM允许CPU的过载使用,但是并不推荐在实际的生产环境(特别是负载较重的环境)中过载使用CPU。在生产环境中过载使用CPU,有必要在部署前进行严格的性能和稳定性测试。

 

14KVM中内存也是允许过载使用(over-commit)的,KVM能够让分配给客户机的内存总数大于实际可用的物理内存总数。

 

15、一般来说,有如下三种方式来实现内存的过载使用:

 

1)内存交换(swapping):用交换空间(swap space)来弥补内存的不足。

2)气球(ballooning):通过virio_balloon驱动来实现宿主机Hypervisor和客户机之间的协作来完成。

3)页共享(page sharing):通过KSMKernel Samepage Merging)合并多个客户机进程使用的相同内存页。

 

其中,第一种内存交换的方式是最成熟的(Linux中很早就开始应用),但不推荐使用虚拟内存swap

 

16KVM(模块):

     modprobe 命令加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。

 

17QEMU (管理工具):

    QEMU 是一个强大的虚拟化软件,它可以虚拟不同的 CPU 构架。比如说在 x86 CPU 上虚拟一个 Power CPU,并利用它编译出可运行在 Power 上的程序。

 

18QEMU-KVM (管理工具):

KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具 QEMU-KVM。所以 Linux 发行版中分为 内核部分的 KVM 内核模块和 QEMU-KVM 工具。

 

19Libvirtvirshvirt-manager(管理工具):

    RedHat KVM 开发了更多的辅助工具,比如 libvirtlibguestfs 等。原因是 QEMU 工具效率不高,不易于使用Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。但最终用户更渴望的是图形用户界面,这就是 virt-manager。它是一套用 python 编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt API 实现的。

 

20、在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启动客户机操作系统。一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)

 

 

21、内核模块导出了一个名为 /dev/kvm 的设备,它可以启用内核的客户模式(除了传统的内核模式和用户模式)。有了 /dev/kvm 设备,VM 使自己的地址空间独立于内核或运行着的任何其他 VM 的地址空间。



© 著作权归作者所有

共有 人打赏支持
perofu
粉丝 127
博文 153
码字总数 131146
作品 0
广州
系统管理员
加载中

评论(20)

代码之美
代码之美

引用来自“smtih”的评论

windows7下装centos7 64bit,建议用VMware Workstation 10。
windows下肯定用VMware,我是在CentOS7上装windows 2012 R2
代码之美
代码之美

引用来自“代码之美”的评论

我在centos 7上面使用--video=vmvga选项提示vmware svga II不可用,什么原因呢

引用来自“perofu”的评论

是显卡驱动吧?

引用来自“代码之美”的评论

不是驱动,是无法创建虚拟机,似乎是centos7不支持vmvga

引用来自“perofu”的评论

你可以先创建虚拟机,在配置文件里加上video段,重启试下

引用来自“代码之美”的评论

好的,我目前是用--video=vga来创建的,回来用你方法试下

引用来自“perofu”的评论

不好意思,不玩centos 7

引用来自“代码之美”的评论

你玩的什么

引用来自“Shane_Wayne”的评论

我今天有时间的话试试CentOS7。
vmvga显卡应该是废弃了,现在主推的是qxl+spice,在windows 7上面qxl+spice安装成功,但是qxl和spice不支持windows8和windows 2012以上的系统,我看qxl和spice的git上没什么人提交代码,kvm的图形支持还是开发不积极啊
perofu
perofu

引用来自“smtih”的评论

windows7下装centos7 64bit,建议用VMware Workstation 10。
smtih
smtih
windows7下装centos7 64bit,建议用VMware Workstation 10。
Shane_Wayne
Shane_Wayne

引用来自“代码之美”的评论

我在centos 7上面使用--video=vmvga选项提示vmware svga II不可用,什么原因呢

引用来自“perofu”的评论

是显卡驱动吧?

引用来自“代码之美”的评论

不是驱动,是无法创建虚拟机,似乎是centos7不支持vmvga

引用来自“perofu”的评论

你可以先创建虚拟机,在配置文件里加上video段,重启试下

引用来自“代码之美”的评论

好的,我目前是用--video=vga来创建的,回来用你方法试下

引用来自“perofu”的评论

不好意思,不玩centos 7

引用来自“代码之美”的评论

你玩的什么
我今天有时间的话试试CentOS7。
Shane_Wayne
Shane_Wayne
全虚化和版虚化的解释并不准确。
马博文
马博文
到最后也没有说KVM全称, Kernel-based Virtual Machine,全虚拟化技术
代码之美
代码之美

引用来自“代码之美”的评论

我在centos 7上面使用--video=vmvga选项提示vmware svga II不可用,什么原因呢

引用来自“perofu”的评论

是显卡驱动吧?

引用来自“代码之美”的评论

不是驱动,是无法创建虚拟机,似乎是centos7不支持vmvga

引用来自“perofu”的评论

你可以先创建虚拟机,在配置文件里加上video段,重启试下

引用来自“代码之美”的评论

好的,我目前是用--video=vga来创建的,回来用你方法试下

引用来自“perofu”的评论

不好意思,不玩centos 7
你玩的什么
perofu
perofu

引用来自“代码之美”的评论

我在centos 7上面使用--video=vmvga选项提示vmware svga II不可用,什么原因呢

引用来自“perofu”的评论

是显卡驱动吧?

引用来自“代码之美”的评论

不是驱动,是无法创建虚拟机,似乎是centos7不支持vmvga

引用来自“perofu”的评论

你可以先创建虚拟机,在配置文件里加上video段,重启试下

引用来自“代码之美”的评论

好的,我目前是用--video=vga来创建的,回来用你方法试下
不好意思,不玩centos 7
代码之美
代码之美

引用来自“代码之美”的评论

我在centos 7上面使用--video=vmvga选项提示vmware svga II不可用,什么原因呢

引用来自“perofu”的评论

是显卡驱动吧?

引用来自“代码之美”的评论

不是驱动,是无法创建虚拟机,似乎是centos7不支持vmvga

引用来自“perofu”的评论

你可以先创建虚拟机,在配置文件里加上video段,重启试下
好的,我目前是用--video=vga来创建的,回来用你方法试下
开源虚拟化 KVM 视频教程在51CTO上线了

  《开源虚拟化KVM极速入门》视频教程,正式在51CTO上线了!   访问地址:http://edu.51cto.com/course/courseid-6815.html   由浅入深、循序渐进地掌握开源虚拟化KVM的体系结构、构建...

dbtrain
2016/08/20
0
0
KVM虚拟化学习笔记系列文章列表

kvm虚拟化学习笔记(一)之kvm虚拟化环境安装 http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 http://koumm.blog.51cto.com/703525/1289627 kvm虚拟...

蓝狐乐队
2015/03/19
0
0
独行快、众行远,推荐几个优秀的原创公众号

对软件开发、架构设计和系统运维人员来说,在技术日新月异发展的时代,必须及时补充新的知识,储备技能,才能在职场竞争中处于优势地位。架构师更是如此,不但要追求技术深度,还要兼顾技术广...

bjweimengshu
2017/12/19
0
0
独行快、众行远,一场架构师的专场汇

对软件开发、架构设计和系统运维人员来说,在技术日新月异发展的时代,必须及时补充新的知识,储备技能,才能在职场竞争中处于优势地位。架构师更是如此,不但要追求技术深度,还要兼顾技术广...

btb5e6nsu1g511eg5xeg
2017/12/18
0
0
CentOS6.5部署KVM及实现在线迁移

CentOS6.5部署KVM及实现在线迁移 一、前言   虚拟化技术已经成为未来计算机技术的一个重要的发展方向。Linux在虚拟化方面已经有了很多种解决方案:VMware、VirtualBox、Xen和KVM!现在给大...

yangxuncai110
06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows小技巧 – Win+R提高Windows使用效率

追求效率的朋友都需要一款顺手的快速启动工具,Win 平台上有键盘流的RunZ、Listary、ALTRun、Launchy、Wox 和图标流的 Fences、Rolan、 WinLaunch 等,而 Mac 上也有 Alfred、Spotlight。 而...

QQZZFT
7分钟前
1
0
Android 移植ffmpeg报错:"atof" referenced by "libavformat.so"

cannot locate symbol "atof" referenced by "libavformat-57.so"... 原因:android的stdlib.h中atof是内联的, 外部模块不能直接使用。跟android版本有关。 解决办法:将所有的atof改成str...

她叫我小渝
21分钟前
1
0
Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生...

engeue
38分钟前
1
0
php-fpm配置文件详解

第一部分:FPM 配置 参数          | 说明 -p            | 命令行中动态修改--prefix   ;include=etc/fpm.d/*.conf  | 用于包含一个或多个文件,如果glob(3)存在(...

bengozhong
40分钟前
1
0
Django允许外部ip访问

1、关闭防火墙 service iptables stop 2、设置django 开启django时,使用0.0.0.0:xxxx,作为ip和端口例如: python manage.py runserver 0.0.0.0:8000 3、在settings里修改ALLOWED_HOSTS = [......

MichaelShu
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部