虚拟化按照虚拟的方式可以分为软件虚拟,如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
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 实际上还是一种相对来说比较新的技术。目前存在各具功能的开源技术,例如 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),将这个文件加上可执行属性,文件内容如下:
将这个文件保存在你的HOME目录下,或者其它的目录也行。
修改你的/etc/network/interfaces文件如下:
此时,重新启动计算机即可。
你可能注意到, 这个文件里可能有关于eth0的配置,请删除它即可,也就是说,不能对eth0进行任何配置,这个接口在重新启动后,应该是没有配置IP的,否则不能工作。
重新启动完成后,请比照一下你的接口配置是否跟我的一样:
请注意,只有br0有地址,而eth0是没有地址的,再比照一下你的路由表:
请注意,如果你的路由表与我的不一样,例如出现四行,即又加上了
localnet * ................... eth0
default bogon ..................eth0
那么,你八成是不能成功桥接的,出现这样的问题应该是由于你的ETH0网络被配置了IP,处理的办法就是想办法去掉eth0的IP,可以使用这个方法:
应该有这行存在(可能还会出现其它的行,例如pan0),后面的tapX是不同的虚拟机的接口,这里可以看出,我桥接了三个虚拟接口到一个直接的接口。
如果你的IP地址配置与路由表跟我的一样,那么,应该是可以桥接成功的。
接下来就是启动你的虚拟机,启动前需要创建虚拟机的磁盘(即下面的u_ubuntu.img,可以参照网上的方法,这里就不重复了),启动虚拟机的方法:
当然,有很的参数可用,我就不介绍了(其实我也不是很懂,嘿嘿),关键的问题就是macaddr和script两项,如果你有多个虚拟机,那么一样要配置不同的macaddr,script一定要指向你刚才保存的那个文件,可以使用绝对路径指明。
启动后,你应该可以正常安装操作系统了,安装完成后,如果虚拟机操作系统网络配置成DHCP,那么应该可以获取一个192.168.1.0网络内的地址,如果你不能获取地址,那么说明配置不成功。
在虚拟机工作的情况下,在宿主计算机上运行ifconfig,应该可以看到一个自动增加的接口tapX(其中X从0开始)。
小结一下:
1)eth0(宿主计算机连接到网络的真实网络接口)不能有IP地址!
2)路由表一定要正确,可以去找一找关于路由方面的介绍,了解一下这个路由信息的意思。
(菜鸟写博,老鸟飞过。欢迎拍砖,深入交流!)
这里选择使用什么方式启动,本地光盘(镜像)启动,网络安装,或者网络启动.我这里选择的光盘镜像启动.
之后就是非常简单的一步一步点下去了,然后就能进入系统安装阶段了.这里就不赘述了.
成功的关键是配置网络及路由(这个在网上流传的版本中没有提到)
请生成一个文件(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
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
# 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 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
内核 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
比较一下,你的桥接网络接口:
#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)路由表一定要正确,可以去找一找关于路由方面的介绍,了解一下这个路由信息的意思。
(菜鸟写博,老鸟飞过。欢迎拍砖,深入交流!)
本文转自 珏石头 51CTO博客,原文链接:http://blog.51cto.com/gavinshaw/177624,如需转载请自行联系原作者