热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

全虚拟化与半虚拟化之争

介绍KVM,它的本质以及如何配置和安装。虚拟化最近几年取得了长足的进步,首先由于有大量的开源虚拟机管理程序在不断发展,这个改进几乎排除了操作系统与大功率服务器快速增长的利用之间的障碍,公司立即受益。知道最近,软件仿真虚拟化一直是关注的焦点,两

介绍KVM,它的本质以及如何配置和安装。虚拟化最近几年取得了长足的进步,首先由于有大量的开源虚拟机管理程序在不断发展,这个改进几乎排除了操作系统与大功率服务器快速增长的利用之间的障碍,公司立即受益。知道最近,软件仿真虚拟化一直是关注的焦点,两个常见的软件仿真虚拟化途径是完全虚拟化和半虚拟化。对于完全虚拟化,通常调用管理程序或虚拟机监视器,存在于虚拟操作系统和硬件层之间,这个层在操作系统实例之间多路复用竞争系统资源。半虚拟化不同,管理程序在一个协作的环境中运作,因为每个客户操作系统都知道它正运行在一个虚拟化环境中,因此每个使用管理程序的协作都在硬件下完成虚拟。

两个途径都有优势也有劣势,半虚拟化的主要优势在于它运行尽可能快地基于软件的虚拟化,以不支持有专利的操作系统为代价。完全虚拟化没有这个限制,但是,完全虚拟化管理程序非常复杂。VMware,一个商业虚拟化解决方案,它就是一个完全虚拟化的例子,Xen,用户模式Linux(UML)和其他提供的是半虚拟化解决方案。

简单介绍一下基于硬件的虚拟化,这个线路已经变得模糊起来,随着Intel的VT技术和AMD的SVM技术的出现,编写一个管理程序变得更加简单了,现在,保持管理程序复杂性到最小程度,对于完全虚拟化受益匪浅。

Xen作为最优秀的半虚拟化引擎,在基于硬件的虚拟化的帮助下,现在也支持完全虚拟化MS windows了。KVM是一个相对较新的简单的,但也非常强大的虚拟化引擎,它已经集成到Linux内核中去了,让内核天生有虚拟化的能力,因为KVM使用的是基于硬件的虚拟化技术,它不需要修改客户操作系统,因此,部署在一个受支持的处理器上,它可以从Linux支持任何平台。

KVM

kvm是一个独特的管理程序,kvm开发者们发明了一个方法让Linux内核自身变成一个管理程序,通过将KVM作为一个内核模块实现,在虚拟环境下Linux内核集成管理程序将其作为一个可加载的模块可以简化管理和提升性能。这可能是开发者将KVM添加到内核的主要原因。

这种方法有许多优势,通过添加虚拟化功能到一个标准的Linux内核,虚拟环境能从所有正在Linux内核上运行的工作中受益,在这种模式下,每个虚拟机都是一个常规的Linux进程,通过Linux调度程序进行调度,通常,一个标准的Linux进程都有两个执行模式:内核模式和用户模式。对于应用程序而言用户模式是默认模式,当它需要一些来自内核的服务时就进入内核模式,如往磁盘上写入时。KVM添加了第三个模式:客户模式。

客户模式进程是运行在虚拟机内的,它非常象正常模式(无虚拟实例),有它自己的内核和用户空间变量、在客户模式下可以使用正常的kill和ps命令,因为无虚拟实例,KVM虚拟机表现为一个正常的进程,能象其他进程一样被杀掉,KVM利用硬件虚拟技术虚拟处理器的形态,虚拟机的内存管理由内核直接处理,目前的版本I/O在用户空间处理,主要通过QEMU完成。

一个典型的KVM安装包括以下部件:

一个管理虚拟硬件的设备驱动,这个驱动通过一个字符设备/dev/kvm陈列它的功能

一个模拟pc硬件的用户空间部件,目前,这在用户空间处理,它是一个稍微改动过的QEMU进程。

I/O模型直接衍生于QEMU,支持写时复制磁盘映像和其他QEMU特征。

你如何查明你的系统是否能运行KVM?首先,你需要一个支持虚拟化的处理器,这里有一个兼容KVM的处理器列表(http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors),看看你的处理器是否在其中。另外,你还可以检查/proc/cpuinfo,如果在cpu flags字段看到了vmx或smx,那么你的处理器就支持KVM。

  如何比较KVM和现存的管理程序

相对它的竞争者而言,KVM还是一个比较新的项目,与KVM的主要开发者Avi Kivity会面时,他是这样与其他解决方案做对比的:

在许多方面,VMware是一个基础破坏技术,它只用软件技术管理众所周知地的复杂的x86架构的完全虚拟化,达到了非常好的性能和稳定性。结果,VMware变得非常大而其非常复杂的软件了。换句话说,KVM依赖于最新的硬件的虚拟技术,就其本身而论,它非常小(大约1万行代码)且相当简单,另外一个巨大的不同之处是VMware是有专利的,而KVM是开源的。

Xen是一个相当大的项目,同时提供半虚拟化和完全虚拟化,它被设计为一个独立的内核,它只需要Linux执行I/O,这样使得它相当的大,它有自己的调度程序、内存管理器、计时器和机器初始化程序。

相反,KVM使用标准Linux调度程序、内存管理器和其他服务。这样KVM开发者们可以集中精力在虚拟化上,将虚拟技术建立在内核上而不是去替换内核。

QEMU是一个用户空间模拟器,它是一个相当惊人的项目,可以在不同宿主处理器上模拟非常多的客户处理器,而且性能非常好。但是,用户空间架构不允许它在无内核加速器的情况下解决天生的速度问题。KVM认可QEMU的实用价值,使用它进行I/O硬件模拟。尽管KVM不带有任何特殊的用户空间,但QEMU代码写得非常好--因此我们使用了这些代码。

但是,KVM也不是完美的,因为它还是一个新技术,它包括下面的这样一些限制:

在写本文的时候,KVM仅支持Intel和AMD虚拟化,而Xen还支持IBM PowerPC和Itanium【安腾】处理器。

目前的版本最宿主SMP处理器的支持还比较弱。


推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 项目需要将音视频文件上传服务器,考虑并发要求高,通过七牛来实现。直接上代码usingQiniu.IO;usingQiniu.IO.Resumable;usingQiniu.RPC; ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • NFS文件共享系统
    1、概述:NFS(NetworkFileSystem)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享 ... [详细]
  • 定义#definePCAP_OPENFLAG_PROMISCUOUS1    定义适配器是否必须进入混杂模式。#definePCAP_OPENFLAG_DATATX_UDP2    ... [详细]
author-avatar
兔子是不常吃萝卜的
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有