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/p_w_picpaths/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/p_w_picpaths/rhel4pv.dsk
-s 3
--vnc
-p
-l ftp://10.0.0.2/ftp/dist/redhat/alphas/rhel5.4a1/Server/ia64/
用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
Domain-0
system1
再来一个nfs的:
[root@maxcm ~]# virt-install -n system -r 10240 -f /var/lib/xen/p_w_picpaths/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 :
#WWW :
#FTP :
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
另外一个命令模式的 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
|
Name
virt-install - provision new virtual machines
Synopsis
virt-install [ OPTION ]...
- -m MAC , --mac=MAC
- Fixed MAC address for the guest; If this parameter is omitted, or the value "RANDOM" is specified a suitable address will be randomly generated. For Xen virtual machines it is required that the first 3 pairs in the MAC address be the sequence '00:16:3e', while for QEMU or KVM virtual machines it must be '54:52:00'.
- -b BRIDGE , --bridge=BRIDGE
- Bridge device to connect the guest NIC to. This parameter is deprecated in favour of the "--network" parameter.
- -w NETWORK , --network=NETWORK
- Connect the guest to the host network. The value for "NETWORK" can take one of 3 formats:
- bridge:BRIDGE
- Connect to a bridge device in the host called "BRIDGE". Use this option if the host has static networking config & the guest requires full outbound and inbound connectivity to/from the LAN . Also use this if live migration will be used with this guest.
- network:NAME
- Connect to a virtual network in the host called "NAME". Virtual networks can be listed, created, deleted using the "virsh" command line tool. In an unmodified install of "libvirt" there is usually a virtual network with a name of "default". Use a virtual network if the host has dynamic networking (eg NetworkManager), or using wireless. The guest will be NATed to the LAN by whichever connection is active.
- user
- Connect to the LAN using SLIRP . Only use this if running a QEMU guest as an unprivileged user. This provides a very limited form of NAT .
- If this option is omitted a single NIC will be created in the guest. If there is a bridge device in the host with a physical interface enslaved, that will be used for connectivity. Failing that, the virtual network called "default" will be used. This option can be specified multiple times to setup more than one NIC .
-
Examples
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/p_w_picpaths/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 p_w_picpath:
# 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 p_w_picpath 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 p_w_picpath ~/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 p_w_picpath of the CentOS DVD...
sudo dd if=/dev/cdrom of=~/CentOS-5.2-x86_64-bin-DVD.iso
... and use the ISO p_w_picpath 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