linux与虚拟化的关系
第一部分:这一部分是对当期存在的虚拟机技术进行简单的总结与讲解,很多是一句而过的。
其实每一个技术都可以重新写出一篇内容丰富的博客,但是每个技术不是本篇文章的重点,所以不对每一个技术进行详细论述。
欢迎对每个技术进行评论与纠错。
虚拟化定义:虚拟化主要指的是特殊的技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)(IBM定义)。
虚拟化为有效利用大型机的资源提供了技术支持。
虚拟机技术也是多种多样,而可以虚拟的层次或者可虚拟的方面也是遍布从硬件到应用层整个计算机系统。
如图片所示:虚拟机分类:虚拟机的分类也是多种多样。
可以通过是否在裸机上部署来分为面向主机的的虚拟机和面向裸机的虚拟机。
面向主机的虚拟机是指的在一台已经安装操作系统的主机上安装虚拟机管理(VMM)程序,而面向裸机的是指在裸机上直接安装虚拟机管理程序,所有的虚拟机调用都是直接由虚拟机管理程序来负责,没有了操作系统这一步,所以这种方式在效率上要高于面向主机的。
不过,比较流行的技术比如vmware,Xen都是面向主机的。
然后根据上面的图去分类的话,可以分为对硬件的虚拟和对操作系统或者对软件的虚拟。
在硬件虚拟化这个层面,又有三种不同的技术:1、Full Virtualization(全虚拟化),几乎是完整地模拟一套真实的硬件设备。
大部分操作系统无须进行任何修改即可直接运行在全虚拟化环境中。
像KVM等技术是全虚拟化。
2、Partial Virtualization(部分虚拟化),仅仅提供了对关键性计算组件或者指令集的模拟。
操作系统可能需要做某些修改才能够运行在部分虚拟化环境中。
3、Paravirtualization(半虚拟化),不对硬件设备进行模拟,虚拟机拥有独立的运行环境,通过虚拟机管理程序共享底层的硬件资源。
大部分操作系统需要进行修改才能够运行在半虚拟化环境中。
它的性能要稍微高于全虚拟化。
像Xen。
因为需要改动托管系统的内核,所以Xen是不支持win虚拟机的。
另外还有像硬件辅助虚拟化,就是宿主机的硬件架构在一定程度上提供对虚拟化的支持。
像Intel-VT与AMD-V都提供了这等架构支持,请参考给出的参考资料。
软件层面的虚拟化,往往是指在同一个操作系统实例的基础上提供多个隔离的虚拟运行环境,也常常被称为容器技术。
LXC(Linux Container)则是采用了这种技术,它主要是采用了Linux本身提供的技术,在一定程度上模拟虚拟化。
软件虚拟化也可以理解成进程级虚拟机,其他虚拟化成为系统级虚拟机。
在进程级虚拟机中负责虚拟化的软件成为运行时软件,而系统级虚拟机中负责虚拟化的软件成为VMM(Virtual Machine Monitor)对于硬件与软件虚拟化两种技术,都是存在优点和缺点。
对于硬件虚拟化,我们讨论全虚拟化和部分虚拟化。
因为现在大部分的虚拟化技术Xen、KVM都支持这两种。
硬件虚拟化基本上就是在一台宿主机上虚拟了整个系统,各台虚拟机之间相互不可见。
这会很明显导致很多重复的线程和重复的内存页出现,性能上肯定会有影响。
所以采用这种技术,一台宿主机上虚拟机的个数肯定会有一定限制。
对于软件虚拟化,我们讨论LXC,因为只有这一种我用过。
LXC是通过cgroup对线程进行隔离,对资源进行限制;通过Namespace对调用系统提供的系统调用来进行资源隔离。
LXC介绍。
通过此也可以看出,它所有虚拟化出来的虚拟机都是运行在宿主机本身上的,它的线程和资源对宿主机都是可见的。
这就不存在很多重复的线程和内存也的问题,所以一台宿主机上可以通过此技术虚拟出更多的虚拟机。
最近非常流行的Docker也是软件虚拟化的一种,它的原理也是使用了Linux提供的namespace对资源进行隔离,不过它提供了比LXC更强大的功能实现。
第二部分: 这一部分就是主要介绍三个组件的不同功能,更多的细节亟待补充,也欢迎评论进行补充,纠错。
KVM介绍:对于KVM来说,其是一款支持虚拟机技术,而且是Linux内核中的一个功能模块。
它在Linux2.6.20之后的任何Linux分支中都被支持。
它还有一个条件,对硬件要求的条件,必须达到一定标准的硬件架构。
对于Intel-VT与AMD-V都是支持的。
对于是否支持也可以通过命令行查看:egrep '(vmx|svm)' --color=always /proc/cpuinfo。
如果有任何内容则说明当期硬件架构是支持KVM的,否则就不支持。
另外,就算支持,但是在bios中是默认设置不打开该功能的,所以你还要去bios设置其为enable。
当设置成功之后,还需要关机一次,注意是关机而不是重启。
否则该设置的更改就不起效。
QEMUQEMU是什么。
其实它也是一款虚拟化技术,就算不使用KVM,单传的QEMU也可以完全实现一个虚拟机。
那为何还会有QEMU-KVM这个名词那。
是因为虽然KVM的技术已经相当成熟而且可以对很多东西进行隔离,但是在某些方面还是无法虚拟出真实的机器。
比如对网卡的虚拟,那这个时候就需要另外的技术来做补充,而QEMU-KVM则是这样一种技术。
它补充了KVM技术的不足,而且在性能上对KVM进行了优化。
libvirtlibvirt又是个什么东东。
它是一系列提供出来的库函数,用以其他技术...
如何在Linux上安装libvirt虚拟化工具
展开全部 如何在Linux中安装虚拟化工具llibvirt如何在Linux中安装虚拟化工具llibvirt许多人第一次装linux,都会被那个vmware-tools弄得晕头转向。
现在详细向大家介绍如何安装linux下的vmwareTools.假设主机为windows,客户机为linux. 1.安装工具。
让虚拟机运行于窗口状态,不要全屏,...
虚拟化技术都包含什么内容?
虚拟化技术简介 什么是虚拟化 虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。
随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。
虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。
在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。
例如对物理内存的抽象,产生了虚拟内存技术,使得应用程序认为其自身拥有连续可用的地址空间(Address Space),而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段),甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。
虚拟化技术的分类 虚拟化技术主要分为以下几个大类 [1]: 平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化。
资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。
应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。
我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor 或 Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。
虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如 VMWARE 的 ESX 产品)。
运行虚拟机的真实系统我们称之为主机系统。
平台虚拟化技术又可以细分为如下几个子类: 全虚拟化(Full Virtualization) 全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。
操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。
全虚拟化 VMM 以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。
举例而言,x86 体系结构中,对于操作系统切换进程页表的操作,真实硬件通过提供一个特权 CR3 寄存器来实现该接口,操作系统只需执行 "mov pgtable,%%cr3" 汇编指令即可。
全虚拟化 VMM 必须完整地模拟该接口执行的全过程。
如果硬件不提供虚拟化的特殊支持,那么这个模拟过程将会十分复杂:一般而言,VMM 必须运行在最高优先级来完全控制主机系统,而 Guest OS 需要降级运行,从而不能执行特权操作。
当 Guest OS 执行前面的特权汇编指令时,主机系统产生异常(General Protection Exception),执行控制权重新从 Guest OS 转到 VMM 手中。
VMM 事先分配一个变量作为影子 CR3 寄存器给 Guest OS,将 pgtable 代表的客户机物理地址(Guest Physical Address)填入影子 CR3 寄存器,然后 VMM 还需要 pgtable 翻译成主机物理地址(Host Physical Address)并填入物理 CR3 寄存器,最后返回到 Guest OS中。
随后 VMM 还将处理复杂的 Guest OS 缺页异常(Page Fault)。
比较著名的全虚拟化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和 QEMU。
超虚拟化(Paravirtualization) 这是一种修改 Guest OS 部分访问特权状态的代码以便直接与 VMM 交互的技术。
在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过 Hypercall(VMM 提供给 Guest OS 的直接调用,与系统调用类似)的方式来提供。
例如,Guest OS 把切换页表的代码修改为调用 Hypercall 来直接完成修改影子 CR3 寄存器和翻译地址的工作。
由于不需要产生额外的异常和模拟部分硬件执行流程,超虚拟化可以大幅度提高性能,比较著名的 VMM 有 Denali、Xen。
硬件辅助虚拟化(Hardware-Assisted Virtualization) 硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。
例如有了 Intel-VT 技术的支持,Guest OS 和 VMM 的执行环境自动地完全隔离开来,Guest OS 有自己的“全套寄存器”,可以直接运行在最高级别。
因此在上面的例子中,Guest OS 能够执行修改页表的汇编指令。
Intel-VT 和 AMD-V 是目前 x86 体系结构上可用的两种硬件辅助虚拟化技术。
部分虚拟化(Partial Virtualization) VMM 只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其它程序可能也需要进行修改。
在历史上,部分虚拟化是通往全虚拟化道路上的重要里程碑,最早出现在第一代的分时系统 CTSS 和 IBM M44/44X 实验性的分页系统中。
操作系统级虚拟化(...
kvm虚拟化虚拟时有没有过量分配
xen和kvm,是开源免费的虚拟化软件。
vmware是付费的虚拟化软件。
hyper-v比较特别,是微软windows 2008 R2附带的虚拟化组件,如果你买了足够的授权,hyper-v(包括hyper-v 2008 core)都可以免费使用。
如果是vmware或hyper-v虚拟windows系统,不管是虚拟化软件本身,还是其中的子系统,都要支付许可费用。
如果是vmware或hyper-v虚拟linux,虚拟化软件本身要支付许可费用,子系统可以用linux来节省成本。
如果是xen或kvm虚拟windows,其中的子系统要支付许可费用。
如果是xen或kvm虚拟linux,那么虚拟化软件本身和其中的子系统无需产生任何费用。
从性能上来讲,虚拟windows,如果都能得到厂商的支持,那么,性能优化可以不用担心。
这几款软件全都能达到主系统至少80%以上的性能(磁盘,CPU,网络,内存),这时建议使用hyper-v来虚拟windows,微软自身的产品,虚拟windows是绝对有优势的。
如果是虚拟linux,建议首先使用xen,支持linux的半虚拟化,可以直接使用主系统的cpu和磁盘及网络资源,达到较少的虚拟化调度操作,可以达到非常高的性能,但xen操作复杂,维护成本较高。
其次我们推荐kvm来虚拟linux,linux本身支持kvm的virtio技术,可以达到少量的虚拟化调度操作,得到较高的系统性能。
不推荐使用hyper-v来虚拟linux,太多的不兼容性导致linux基本无法在hyper-v上跑。
如果以上产品我们不打算买厂商支持,其中vmware和hyper-v,是不建议使用的,主要是授权问题。
这时就剩下kvm和xen了,如果虚拟windows,建议使用kvm,我们可以从redhat那里免费拿到针对windows优化过的磁盘和网络的驱动程序,可以达到较高的性能(几乎与hyper-v性能持平)。
而xen的windows优化驱动不是那么容易就能拿到的(由于redhat以后不支持xen了,看看novell是否放水了,呵呵,就开放程度上来讲,redhat要好于novell)。
综上所述,在有授权的情况下,虚拟windows,建议使用hyper-v在有授权的情况下,虚拟linux,建议使用xen,如考虑到需要降低管理维护和学习成本,建议使用kvm。
在没有授权的情况下,虚拟windows,建议使用KVM在没有授权的情况下,虚拟linux,建议使用xen,如考虑到需要降低管理维护和学习成本,建议使用kvm。
开源的虚拟化软件KVM和Xen比较,哪个更有前途呢?
1、软件安装卸载,分几种情况:A:RPM包,这种软件包就像windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装非常方便,在图形界面里你只需要双击就能自动安装。
==如何卸载:1、打开一个SHELL终端2、因为LINUX下的软件名都包括版本号,所以卸载前最好先确定这个软件的完整名称。
查找RPM包软件:rpm -qa ****注意:***指软件名称开头的几个字母,不要求写全,但别错,*就是通配符号“*”,即星号,如你想查找机子里安装的REALPLAYER软件,可以输入:rpm -qa realplay*3、找到软件后,显示出来的是软件完整名称,如firefox-1.0.1-1.3.2执行卸载命令:rpm -e firefox-1.0.1-1.3.2===安装目录,执行命令查找:rpm -ql firefox-1.0.1-1.3.2===参考文章:[url]http://blog.chinaunix.net/article.p...178&blogId=1438[/url]B:tar.gz(bz或bz2等)结尾的源代码包,这种软件包里面都是源程序,没有编译过,需要编译后才能安装,安装方法为:1、打开一个SHELL,即终端2、用CD 命令进入源代码压缩包所在的目录3、根据压缩包类型解压缩文件(*代表压缩包名称)tar -zxvf ****.tar.gztar -jxvf ****.tar.bz(或bz2)4、用CD命令进入解压缩后的目录5、输入编译文件命令:./configure(有的压缩包已经编译过,这一步可以省去)6、然后是命令:make7、再是安装文件命令:make install8、安装完毕===如何卸载:1、打开一个SHELL,即终端2、用CD 命令进入编译后的软件目录,即安装时的目录3、执行反安装命令:make uninstall====安装目录:注意make install命令过程中的安装目录,或者阅读安装目录里面的readme文件,当然最好的办法是在安装的过程中指定安装目录,即在./configure命令后面加参数--prefix=/**,如:./configure --prefix=/usr/local/aaaa,即把软件装在/usr/local/路径的aaaa这个目录里。
一般的软件的默认安装目录在/usr/local或者/opt里,可以到那里去找找C:以bin结尾的安装包,这种包类似于RPM包,安装也比较简单1、打开一个SHELL,即终端2、用CD 命令进入源代码压缩包所在的目录3、给文件加上可执行属性:chmod +x ******.bin(中间是字母x,小写)3、执行命令:./******.bin(realplayer for linux就是这样的安装包)===如何卸载:把安装时中选择的安装目录删除就OK===执行安装过程中可以指定,类似于windows下安装。
2、安装完软件后如何执行。
安装完软件后可以有好多种方法执行软件:A、有些软件安装后会自动在应用程序列表里加上快捷键,和windows一样,到那里找就行了。
B、如果在应用程序列表里找不到的话,可以直接在/开始/运行命令里输入命令:启动命令一般就是软件名,如firefox,realplay,xmms等C、也可以打开一个shell终端,输入软件名,和在“运行命令”里一样。
如果不知道命令全程的话,可以输入开头的字母,然后按tab键查找,系统会自动显示以输入字母开头的所有命令/D、你也可以直接到安装目录下运行启动文件,linux下的可执行图标和shell终端图标很像E、到/usr/bin目录里找安装的软件启动文件执行命令。
linux系统把所有可执行的文件命令在/usr/bin目录里都作了启动连接,你可以去那个目录寻找你安装的文件的启动命令,双击启动
需要几个关于虚拟化的安装包,求好心人
根据你的需求,从上到下:http://mirrors.163.com/centos/6.5/os/i386/Packages/dnsmasq-2.48-13.el6.i686.rpmhttp://mirrors.163.com/centos/6.5/os/i386/Packages/libvirt-0.10.2-29.el6.i686.rpmhttp://mirrors.163.com/centos/6.5/os/i386/Packages/libvirt-python-0.10.2-29.el6.i686.rpmhttp://mirrors.163.com/centos/6.5/os/i386/Packages/python-virtinst-0.600.0-18.el6.noarch.rpmhttp://mirrors.163.com/centos/6.5/os/i386/Packages/virt-manager-0.9.0-19.el6.i686.rpmPS:先试试,如果你的Linux用不了再把你的Linux版本告诉我我帮你找找适合的包
使用软件虚拟化 MMU 是什么意思啊。
。
。
。
现在在桌面虚拟化领域可选择的软件有:NComputing vspace、Citrix、VMware等虚拟化软件。
vspace是NComputing云终端的桌面虚拟化软件,通过UXP(用户扩展协议)与连接设备通信,将每个用户的工作环境延伸至远程NComputing访问端设备,在单一操作系统下为多名用户提供工作环境,支持多媒体应用程序,如视频和Flash,支持Windows和Linux操作系统。
Citrix虚拟化软件能够让客户在任何时间、任何地点、在任何设备上,通过任何形式的网络连接,高效获取各种应用、信息及通讯。
Citrix技术使得数字办公室无处不在,令工作轻松易行。
它的性能虽好,但收费太贵。
VMware桌面虚拟化采用RDP协议,用户终端连接到服务器上的虚拟主机,但是不能实现在线视频播放,用户终端按点收费,使用起来非常昂贵,达不到应有的效果。
所以性价比最好的桌面虚拟化软件是vspace
转载请注明出处51数据库 » linux下的虚拟化软件