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           使用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                                     30624     8 r-----    367.0
system1                                       2048     1 -b----      5.9


再来一个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 :  nfs:主機IP:Linux 實際可以安裝的目錄
#WWW :   http://主機IP/可以安裝的目錄
#FTP :   ftp://主機IP/可以安裝的目錄

 =================================

http://www.diybl.com/course/6_system/linux/Linuxjs/20090215/155571.html

https://help.ubuntu.com/community/KVM

====================================

ubuntu9.04下kvm虚拟机的安装与桥接网络配置(总结)
2009-09-25 01:16

 

装kvm虚拟机前要看好自己机器的CPU是否支持VT技术,相关型号去网上查询,老机器一般VT在BIOS里都是预置关闭的,需要手动在BIOS里开启后才能安装。

查询是否支持的命令:

sq@sq-desktop:~$ egrep '(vmx|svm)' /proc/cpuinfo

如果返回了下列字符,则表示支持
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow


开始安装KVM
sudo apt-get install kvm libvirt-bin qemu
sudo usermod -aG libvirtd `id -un`

安装虚拟机
sudo apt-get install python-virtinst virt-manager

 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为安装系统需要的镜像,可以为绝对路径,也可以在当前目录下。
然后运行
sudo virt-manager
开始图形化安装系统
光驱网卡之类的手动添加,精简版的系统一般不ok,如果装不上系统,请重新选择镜像。

安装完后进系统的话会比较卡。鼠标也会不同步,设置一个内网ip,192.168.11.1
关掉图形界面用rdesktop远程登进去
命令如下
rdesktop -u 用户名 -p 密码 -a 16 192.168.11.1 -r clipboard:PRIMARYCLIPBOARD

然后设置网桥

sudo apt-get install bridge-utils

因为需要用桥接,所以要删除掉原来9.04里的network-manager

sudo apt-get remove network-manager

sudo vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 10.65.160.104
        network 10.65.128.0
        netmask 255.255.128.0
        broadcast 10.65.255.255
        gateway 10.65.156.27
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

将interfaces文件修改如上
IP为主机上外网的IP
然后 sudo /etc/init.d/networking restart

再修改虚拟机的配置文件如下
位置/etc/libvirt/qemu/**.xml

<domain type='kvm'>
<name>xp</name>
<uuid>45aa027e-c65c-15ad-e777-0d047eabd3d3</uuid>
<memory>262144</memory>
<currentMemory>262144</currentMemory>
<vcpu>1</vcpu>
<os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='hd'/>
</os>
<features>
    <acpi/>
    <apic/>
    <pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <source file='/home/bl/kvm/xp.img'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='file' device='cdrom'>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>
    <interface type='bridge'>
      <mac address='54:52:00:28:56:fa'/>
      <source bridge='br0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' keymap='en-us'/>
</devices>
</domain>

#主要是修改网桥虚拟机使用的网卡br0

然后进虚拟机配置IP,网络桥接使虚拟机中的网络和主机的网络一样使用。
为外网IP:10.65.160.135,子网,网关,DNS等。

更新虚拟机virtl数据库
sudo virsh define /etc/libvirt/qemu/**.xml
sudo virsh start **

 ================================

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来指定要转储到哪一个虚拟机。

====================================

Ubuntu 8.10 中用KVM虚拟WinXP
2009-09-25 01:20

 

KVM 就是KernelVirtual Machine 是运行在内核级别的,是比较高效的。只可以在Linux 下安装,只有CPU支持VT才可以使用KVM虚拟机。

第一步 检查CPU是否支持VT
用#cat /proc/cpuinfo查看CPU的支持信息
如果在Flags这一项可以找到一个vmx或者svm这说明你的CPU是支持VT的

第二步 如果第一步支持的话,可以安装相关的软件包
#sudo apt-get install kvm qemu

第三步 安装WinXP
建立目录
#mkdir kvm
创建虚拟硬盘
#qemu-img create -f qcow2 kvm/winxp.img 5G (-f qcow2是创建一个实际的文件,并不是直接给分配置5G的空间,可是这个空间又会随使用而增大,最大为5G)
开始安装XP
#sudo kvm -m 512 -hda kvm/winxp.img -cdrom /dev/scd0 -boot d(其中 -m 512是为虚拟机分配512M的内存,-hda kvm/winxp.img是把kvm下的winxp.img当做虚拟机的硬盘它的名字是hda,-cdrom /dev/scd0 是指定我的光驱为虚拟机的CDROM[若ubuntu系统里边直接有XP的ISO可用-cdrom /path/isoname.iso即可],-boot d是指我让虚拟机从光盘引导)
当XP的文件都拷贝完成要重启时可以直接关掉窗口,并使用如下命令进入开始后续的安装:
#sudo kvm -m 512 -hda kvm/winxp.img -cdrom /dev/scd0
安装完成以及以后都可以使用如下命令进入XP
#sudo kvm -m 512 -hda kvm/winxp.img -net nic -net user(-net nic -net user是网络方面的选项)


关闭XP可以在XP中正常的关闭即可

 ==========================================================================

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