虚拟化开源的软件 KVM或则Xen

http://www.searchvirtual.com.cn/microsites/2011kvm/index.html

http://jueshitou.blog.51cto.com/385947/177624/

虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
   虚拟化按照虚拟的方式可以分为软件虚拟,如vmware,他是直接提取awardBIOS的程序(当然是经过授权的)。另外是基于硬件的,cpu虚拟化。CPU的虚拟化,又可以分为全虚拟化,和半虚拟化。AMD目前多已支持全虚拟化,而intel只有部分支持虚拟化。当然小机不在此次讨论之列。
  为我们可以通过以下命令来查看CPU是否支持全虚拟化!
[root@jadeshow ~]# egrep '(vmx|svm)' /proc/cpuinfo
flags        : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow
flags        : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow
下面进入本次讨论的重点,使用KVM来启动虚拟机。
KVM 实际上还是一种相对来说比较新的技术。目前存在各具功能的开源技术,例如 Xen、Bochs、UML、Linux-VServer 和 coLinux,但是 KVM 目前正在被大量使用。另外,KVM 不再仅仅是一个全虚拟化解决方案,而将成为更大的解决方案的一部分。
好下面我们来进行实际的操作。
首先查询以下包 qemu-kvm virt-manager virt-viewer python-virtinst
是否安装。
 
 
rpm -q qemu-kvm virt-manager virt-viewer python-virtinst




然后依次执行以下命令:
 yum install qemu-kvm virt-manager virt-viewer python-virtinst
yum install qemu-kvm virt-manager virt-viewer 
python-virtinst
yum groupinstall 'Virtualization'



建立一个虚拟机:
这时候就可以通过X界面来建立一个虚拟机咯。
应用程序--->系统工具----->虚拟器管理系统

这里选择使用什么方式启动,本地光盘(镜像)启动,网络安装,或者网络启动.我这里选择的光盘镜像启动.

之后就是非常简单的一步一步点下去了,然后就能进入系统安装阶段了.这里就不赘述了.
成功的关键是配置网络及路由(这个在网上流传的版本中没有提到)
请生成一个文件(qemu-ifup),将这个文件加上可执行属性,文件内容如下:
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
        /usr/bin/sudo /usr/sbin/tunctl -u `whoami` -t $1
        /usr/bin/sudo /sbin/ip link set $1 up
        sleep 0.5s
        /usr/bin/sudo /usr/sbin/brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi

将这个文件保存在你的HOME目录下,或者其它的目录也行。
修改你的/etc/network/interfaces文件如下:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
    bridge_ports eth0 //注意这个eth0,这是你的计算机的实际网卡,请根据你的网络修改,也可能跟我的这个一样。
    address 192.168.1.242 //根据你的需要设置从这里到下面的参数,这个网络跟你的实现网络在一个子网内,不然无法桥接
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-nameserver 192.168.1.1 219.141.136.10
    dns-search Office

此时,重新启动计算机即可。
你可能注意到, 这个文件里可能有关于eth0的配置,请删除它即可,也就是说,不能对eth0进行任何配置,这个接口在重新启动后,应该是没有配置IP的,否则不能工作。
重新启动完成后,请比照一下你的接口配置是否跟我的一样:
#ifconfig
br0       Link encap:以太网  硬件地址 00:21:5e:4e:33:e2  
          inet 地址:192.168.1.242  广播:192.168.1.255  掩码:255.255.255.0
          inet6 地址: fe80::221:5eff:fe4e:33e2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:48324758 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:25261650 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0
          接收字节:63199826111 (63.1 GB)  发送字节:5380518900 (5.3 GB)
eth0      Link encap:以太网  硬件地址 00:21:5e:4e:33:e2  
          inet6 地址: fe80::221:5eff:fe4e:33e2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:48903854 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:28125512 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:64152739997 (64.1 GB)  发送字节:6185466883 (6.1 GB)
          中断:16

请注意,只有br0有地址,而eth0是没有地址的,再比照一下你的路由表:
#route
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
localnet        *               255.255.255.0   U     0      0        0 br0
default         bogon           0.0.0.0         UG    100    0        0 br0

请注意,如果你的路由表与我的不一样,例如出现四行,即又加上了
localnet * ...................    eth0
default bogon ..................eth0
那么,你八成是不能成功桥接的,出现这样的问题应该是由于你的ETH0网络被配置了IP,处理的办法就是想办法去掉eth0的IP,可以使用这个方法:
#ifconfig eth0 0.0.0.0
比较一下,你的桥接网络接口:
#brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.00215e4e33e2    no        eth0
                            tap0
                            tap1
                            tap2

应该有这行存在(可能还会出现其它的行,例如pan0),后面的tapX是不同的虚拟机的接口,这里可以看出,我桥接了三个虚拟接口到一个直接的接口。
如果你的IP地址配置与路由表跟我的一样,那么,应该是可以桥接成功的。
接下来就是启动你的虚拟机,启动前需要创建虚拟机的磁盘(即下面的u_ubuntu.img,可以参照网上的方法,这里就不重复了),启动虚拟机的方法:
 kvm -hda u_ubuntu.img -boot c -net nic,model=virtio,macaddr=DE:AD:AF:22:33:22 -net tap,script=qemu-ifup -m 1024 -smp 2 -clock rtc -localtime

当然,有很的参数可用,我就不介绍了(其实我也不是很懂,嘿嘿),关键的问题就是macaddr和script两项,如果你有多个虚拟机,那么一样要配置不同的macaddr,script一定要指向你刚才保存的那个文件,可以使用绝对路径指明。
启动后,你应该可以正常安装操作系统了,安装完成后,如果虚拟机操作系统网络配置成DHCP,那么应该可以获取一个192.168.1.0网络内的地址,如果你不能获取地址,那么说明配置不成功。
在虚拟机工作的情况下,在宿主计算机上运行ifconfig,应该可以看到一个自动增加的接口tapX(其中X从0开始)。
小结一下:
1)eth0(宿主计算机连接到网络的真实网络接口)不能有IP地址!
2)路由表一定要正确,可以去找一找关于路由方面的介绍,了解一下这个路由信息的意思。
               
 
  一 KVM虚拟机简介 
  kernel-based Virtual Machine的简称,是一个开源的 系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
  KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于 软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己到 进程调度器,存储管理模块等,所以代码较为庞大。广为流传的 商业系统虚拟化软件VMware ESX系列也是基于软件模拟的Para-Virtualization。
  二 KVM虚拟机安装与使用
   1 前期准备
   1.1确定机器有VT
  终端输入命令: grep vmx /proc/cpuinfo (INTEL芯片)
  grep svm /proc/cpuinfo (AMD芯片)
  不知道芯片的生产厂商则输入:egrep '(vmx|svm)' /proc/cpuinfo
  如果flags: 里有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法成功安装KVM虚拟机。
   1.2 确保BIOS里开启VT:
  Intel(R) Virtualization Tech [Enabled]
  如有必要,还需在BIOS中开启VT-d
   1.3 确保内核版本较新,支持KVM
  用uname –r查看内核版本,如果在2.6.20以下的linux版本,需升级内核。
   2安装KVM
  下面就Ubuntu和CentOS下安装使用KVM虚拟机做介绍:
  Ubuntu 中用guest登陆,安装KVM的命令为:
  sudo apt-get install kvm qemu qemu-kvm virt-manager kernel-package linux-source kqemu-source build-essential
  kvm安装成功后会有/dev/kvm,如果无需图形管理器,只需要安装前三个即可。
  再来查看下KVM是否安装成功,执行:virsh -c qemu:///system list
  如果输入结果像下面这样的,那么成功了:
  Connecting to uri: qemu:///system
  Id Name State
  ----------------------------------
  注1:CentOS中安装时,先要选择Selinux为enalble,使用命令
  #system-config-securitylevel-tui
  可查看或修改selinux的状态。
  注2: CentOS中用root登陆时则安装命令为:
  Yum install kvm kmod-kvm qemu
  再装入kvm模块:modprobe kvm-intel (Intel机器) 或者 modprobe kvm-amd (amd机器)
  注3:可以用以下命令来检查是否装入kvm模块:
  /sbin/lsmod | grep kvm
  如果输出关于kvm版本的信息则已装入kvm模块
  注4: 安装好后,可使用qemu-kvm命令,输入该命令,如果系统显示未知的命令,可查看/usr/libexec中是否有qemu-kvm 可执行文件,如果有,将其拷贝到/bin目录下即可。如果确实按照上面的步骤进行了,却在/bin,/usr/libexec,/usr/bin,/usr/sbin里都找不到qemu-kvm可执行文件,可执行以下命令:
  #yum provides "*/qemu-kvm"
  注5:安装新内核后,可能有部分软件版本过低,不兼容。比如firefox因版本过低,无法启动。
  CentOS下可使用如下命令更新该软件(以firefox为例):
  #yum update firefox
   3 在KVM下安装虚拟机
   3.1用QEMU创建磁盘镜像
  sudo qemu-img create –f qcow windows.img 8G
  注:在CentOS和新版Qemu中为:qemu-img create –f qcow2 windows.img 8G
   3.2使用KVM安装Guest VM
   光盘安装:
  sudo kvm –localtime –cdrom /dev/cdrom -m 512 -boot d win2.img
   硬盘安装
  sudo kvm –localtime –m 512 –hda windows.img –cdrom winxp.iso –boot d –clock –rtc –no-acpi
  注:官方推荐使用 -no-acpi 参数,原因是 qemu/kvm不太支持,可能造成 cpu 的占用偏高。
   注1:CentOS下硬盘安装为 qemu-kvm –localtime –m 512 –hda windows.img –cdrom winxp.iso –boot d –no-acpi 即需要去掉了-clock rtc选项,否则会出现无法初始化时钟。
  注2:CentOS quest mouse: export SDL_VIDEO_X11_DGAMOUSE=0可解决VM中无法识别USB鼠标的问题。
  注3: 安装win 7时,不能使用-no-acpi选项。
   4 KVM启动Guest
   sudo kvm –boot c –m 512
  –hda windows.img
  ② sudo kvm -boot c
  -m 512
  -hda /home/lm/kvm/winxp.img
  -localtime
  -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,df=h,ifname=tap0,script=no
  -clock rtc
  -soundhw es1370
  -smp 2
  注意:在KVM-87下,请去掉df=h
  -m 512 分配512MB的内存
  -hda /home/lm/kvm/winxp.img
  -localtime 使用本地时间(一定要加这个参数,不然虚拟机时间会有问题)
  -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,df=h,ifname=tapo,script=no
  使用网络,并连接到一个存在的网络设备tap0,注意mac地址一定要自己编一个,特别是如果你虚拟了多个系统并且要同时运行的话,不然就MAC冲突了,在KVM-87下去掉df=h
  -boot d 从光盘启动 (从 镜像启动也是用这个。从硬盘启动则为 -boot c )
  -smp 2 smp处理器个数为2个,如果你是4核处理器,后面的数字就为4
  -clock rtc
  使用rtc时钟(如果不开启此选项,WINXP可能会很慢)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福海鑫森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值