Xen与KVM的比较
Xen也是Linux下的一个虚拟化解决方案,也将很快被编入内核中。Xen的实现方法是,运行支持Xen功能的kernel,这个kernel是工作在Xen的控制之下,叫做Domain0,使用这个 kernel启动机器后,你可以在这个机器上使用qemu软件,虚拟出多个系统。Xen的缺点是,如果你需要更新Xen的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。
相比较,KVM就简化的多了。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小,所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。
不难看出,xen和KVM是linux下两个重要的虚拟化解决方案。xen的工作方式是直接修改kernel,变成一个xen kernel,也就是Domain 0.然后在这个Domain 0的控制下虚拟出多个Domain u的方式,可以看出这种方式其实是在kernel与硬件之间加了一个xen控制层,来实现虚拟化。Virtual machines are created by a software layer called the virtual machine monitor (VMM)。linus对于这种方法看来很抵触。而kvm的实现方法却有所不同,它首先是需要CPU虚拟功能的支持,本身是以模块的形式加入到 kernel中,你可以把KVM理解为一个绿色软件。KVM是后起之秀,在目前的功能和应用上还远不及Xen,不过可以预见,不久的将来,以及各大厂商, 特别是intel对于虚拟化的重视,虚拟化的实现更多依赖于CPU,KVM的简洁和绿色将会更加成功。
=============================
确认cpu是否支持虚拟化:
# egrep '(vmx|svm)' /proc/cpuinfo
============================
现在我们就用命令行来创建一个虚拟机:
[root@maxcm ~]# virt-install -n system1 -r 2048 -f /var/lib/xen/images/rhel4pv.dsk -s 3 --vnc -p -l ftp://10.0.0.2/ftp/dist/redhat/alphas/rhel5.4a1/Server/ia64/
解释一下:
-n system1 命名
-r 2048 分配的内存大小
-f /var/lib/xen/images/rhel4pv.dsk 虚拟机的文件路径
-s 3 虚拟机的文件大小
--vnc 使用vnc
-p 半虚拟
-l ftp://10.0.0.2/ftp/dist/redhat/alphas/rhel5.4a1/Server/ia64/ 安装树路径或者是系统ISO
用ISO文件安装:
#virt-install -n xp -r 512 -f xp.img -s 10 -c winxpsp3.iso --accelerate --connect=qemu:///system --vnc --noautoconsole
#xp为虚拟机的名字,256为内存大小,xp.img是虚拟硬盘的名称,10是硬盘大小,winxpsp3.iso为安装系统需要的镜像,可以为绝对路径,也可以在当前目录下。
查看一下,已经有了。
[root@maxcm ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 30624 8 r----- 367.0
system1 1 2048 1 -b---- 5.9
再来一个nfs的:
[root@maxcm ~]# virt-install -n system -r 10240 -f /var/lib/xen/images/rhel5pv.dsk -s 10 --vcpus=4 --vnc -p -l nfs:10.0.0.2:/pbfd/dist/redhat/alphas/rhel5.4a1/Server/ia64
/pbfd/dist/redhat/alphas/rhel5.4a1/Server/ia64存放著 RHEL4 光碟的所有�热�.
#NFS : nfs:主�CIP:Linux ���H可以安�b的目�
#WWW : http://主�CIP/可以安�b的目�
#FTP : ftp://主�CIP/可以安�b的目�
=================================
http://www.diybl.com/course/6_system/linux/Linuxjs/20090215/155571.html
https://help.ubuntu.com/community/KVM
====================================
装kvm虚拟机前要看好自己机器的CPU是否支持VT技术,相关型号去网上查询,老机器一般VT在BIOS里都是预置关闭的,需要手动在BIOS里开启后才能安装。 查询是否支持的命令: sq@sq-desktop:~$ egrep '(vmx|svm)' /proc/cpuinfo 如果返回了下列字符,则表示支持
安装虚拟机 sudo virt-install -n xp -r 512 -f xp.img -s 10 -c winxpsp3.iso --accelerate --connect=qemu:///system --vnc --noautoconsole #xp为虚拟机的名字,256为内存大小,xp.img是虚拟硬盘的名称,10是硬盘大小,winxpsp3.iso为安装系统需要的镜像,可以为绝对路径,也可以在当前目录下。 安装完后进系统的话会比较卡。鼠标也会不同步,设置一个内网ip,192.168.11.1 然后设置网桥 sudo apt-get install bridge-utils 因为需要用桥接,所以要删除掉原来9.04里的network-manager sudo apt-get remove network-manager sudo vim /etc/network/interfaces auto eth0 auto br0 将interfaces文件修改如上 再修改虚拟机的配置文件如下 <domain type='kvm'> #主要是修改网桥虚拟机使用的网卡br0 然后进虚拟机配置IP,网络桥接使虚拟机中的网络和主机的网络一样使用。 更新虚拟机virtl数据库 |
================================
28.6 virsh管理工具
另外一个命令模式的 Xen 管理工具叫做virsh(Virtual Shell)。virsh 是由一个名为 libvirt的软件提供的管理工具,提供管理虚拟机更高级的能力。virsh大部分的功能与xm 一样,你可以利用 virsh 来启动、删除、控制、监控Xen 的区域,因此你也可以利用 virsh 来管理 Xen 中所有的虚拟机。
你可能会很好奇,既然已经提供了xm管理工具,为何Red Hat Enterprise Linux 还需提供virsh?
这是因为在Linux领域里,除了Xen外,还有许多种机制也提供虚拟化的功能,然而,不同的虚拟化系统的使用方法都不太相同。为了让Linux可以通过同一种方法读取与管理各种虚拟化子系统,libvirt团队(http://libvirt.org/)便开发出了libvirt.so链接库,让软件的开发人员可以用 libvirt.so提供的API来管控所有的虚拟化系统。而virsh 就是利用 libvirt.so 链接库编写而成的管理工具。因此,不管实质上执行的是何种虚拟化子系统,你只需学会 virsh 的使用方法,就可以藉此来使用或管理各种虚拟化系统提供的虚拟机了。
本节将介绍 virsh 这个管理工具的使用方法。
转储区域配置
除了上述的功能外,virsh也允许把某一个虚拟机目前的设置值存储下来。virsh把设置值存储下来的动作,称为"转储(Dump)"。
转储虚拟机设置值有什么好处?
好处很多,我至少想到两个。首先,转储虚拟机的设置值可以让你把某一个虚拟机的设置备份下来,以供日后恢复该设置配置。其次,如果要用 virsh 来启动一个虚拟机,你必须指定该虚拟机的配置文件。因此,如果你希望用virsh 来管理所有的虚拟机,那么请务必把每一个虚拟机的设置值转储下来后妥善保存。
如果要转储虚拟机的设置值,你可以执行:
virsh dumpxml DOMAIN |
其中的DOMAIN就是要转储的虚拟机。你可以使用虚拟机的名称、标识符或是UUID来指定要转储到哪一个虚拟机。
====================================
KVM 就是KernelVirtual Machine 是运行在内核级别的,是比较高效的。只可以在Linux 下安装,只有CPU支持VT才可以使用KVM虚拟机。 第一步 检查CPU是否支持VT 第二步 如果第一步支持的话,可以安装相关的软件包 第三步 安装WinXP
|
==========================================================================
virt-install - provision new virtual machines
virt-install [ OPTION ]...
Install a paravirtualized Xen guest, 500 MB of RAM , a 5 GB of disk, and Fedora Core 6 from a web server, in text-only mode:
# virt-install \ --paravirt \ --name demo \ --ram 500 \ --file /var/lib/xen/images/demo.img \ --file-size 6 \ --nographics \ --location http://download.fedora.redhat.com/pub/fedora/linux/core/6/x86_64/os/
Install a QEMU guest, with a real partition, for a different architecture using SDL graphics, using a local ISO image:
# virt-install \ --connect qemu:///system \ --name demo \ --ram 500 \ --file /dev/hdc \ --network bridge:eth1 \ --arch ppc64 \ --sdl \ --cdrom /root/boot.iso
Install a QEMU guest, with a real partition, for a different architecture using SDL graphics, using a remote kernel and initrd pair:
# virt-install \ --connect qemu:///system \ --name demo \ --ram 500 \ --file /dev/hdc \ --network bridge:eth1 \ --arch ppc64 \ --sdl \ --location http://download.fedora.redhat.com/pub/fedora/linux/core/6/x86_64/os/
Install a KVM guest, using LVM partition, virtual networking, booting from the host CDROM , using VNC server/viewer
# virt-install \ --connect qemu:///system \ --name demo --ram 500 \ --file /dev/HostVG/DemoVM \ --network network:default \ --accelerate \ --vnc \ --cdrom /dev/cdrom
Run a Live CD image under Xen fullyvirt, in diskless environment
# virt-install \ --hvm \ --name demo \ --ram 500 \ --nodisk \ --livecd \ --vnc \ --cdrom /root/fedora7live.iso
==================
To create a CentOS 5.2 guest (in bridging mode) with the name vm10, 512MB of RAM, two virtual CPUs, and the disk image ~/vm10.qcow2 (with a size of 12GB), insert the CentOS DVD into the CD drive and run
sudo virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f ~/vm10.qcow2 -s 12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --accelerate --network=bridge:br0 --hvm
Of course, you can also create an ISO image of the CentOS DVD...
sudo dd if=/dev/cdrom of=~/CentOS-5.2-x86_64-bin-DVD.iso
... and use the ISO image in the virt-install command:
sudo virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f ~/vm10.qcow2 -s 12 -c ~/CentOS-5.2-x86_64-bin-DVD.iso --vnc --noautoconsole --os-type linux --accelerate --network=bridge:br0 --hvm