广大网民习惯了使用免费破解版软件,但是作为软件产业中的一份子,我不太赞成“吃免费的午餐“;相比之下,UNIX所倡导的开源思想更符合软件开发者的利益。在Windows下安装和配置虚拟机对大家来说是一件相对容易的事,使用最多的估计是破解版的Mware,功能强大,操作容易,虽然性能不足;但是想要在Linux下使用虚拟机,并不是那么容易。
根据我们的开发服务器架构,我们需要在物理机上跑一个CentOS,然后在这个CentOS上再虚拟出三个相互独立的CentOS(LVS)来完成三份独立的工作。通过对比,决定使用开源、性能卓越、轻量级的KVM方案。想要在CentOS上使用KVM虚拟出一个CentOS,要求guest系统在局域网中能像host系统一样与其他主机进行通信,并不是一件简单的事。好了,废话少说,让我们开始吧!
(一)、KVM安装
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。
第一、看CPU是否支持KVM
# egrep '(vmx|svm)' --color=always /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 syscall nx rdtscp lm constant_tsc nonstop_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
或者
# grep -E -o 'vmx|svm' /proc/cpuinfo vmx
如果有内容输出,就表示CPU支持KVM。
第二、关闭SElinux
# vim /etc/selinux/config
设置SELINUX=disabled
第三、安装KVM
1. 安装所需要软件包
# yum install -y kvm libvirt python-virtinst qemu-kvm virt-viewer
2.启动libvirt服务
# /etc/init.d/libvirtd start Starting libvirtd daemon: [ OK ]
3.查看kvm服务是否正常
# lsmod | grep kvm kvm_intel 85256 0 kvm 224928 2 ksm,kvm_intel
或者
# virsh -c qemu:///system list Id Name State ----------------------------------------------------
因为没有任何虚拟机,所以没有显示内容
(二)、安装网桥(Bridge)
为什么需要安装Bridge?
KVM客户机有两种上网方式:
(1)用户网络(User Networking):NAT方式。让虚拟客户机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问虚拟客户机,性能上也需要大的调整。
(2)虚拟网桥(Virtual Bridge):Bridge方式。这种方式要比用户网络复杂一些,但是设置好后客户机与互联网以及主机之间的通信都很简单。
Bridge方式原理:Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。桥接网络(也叫物理设备共享)的作用是把一个物理设备复制到一台虚拟机里。网桥多用作高级设置,特别是主机需要多个网络接口的情况。
(图片来自引用文章http://www.linuxidc.com/Linux/2012-05/61445p2.htm)
1. 安装网桥管理工具
# yum install bridge-utils tunctl
2.安装网桥
我们假设主机的网络接口是eth0,而新建的bridge命名为br0。我们需要手动配置eth0和br0的相关配置文件,一个好的习惯是在改动一个关键配置文件前,先将其备份。
在对ifcfg-eth0作修改前先备份它:
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/ \ network-scripts/backup-ifcfg-eth0
新建br0的配置文件ifcfg-br0,并编辑内容:
# vim /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static BROADCAST=192.168.1.255 IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes
保存文件并编辑ifcfg-eth0:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:27:0E:09:0C:B2 ONBOOT=yes BRIDGE=br0
更改完上述配置后,建立bridge的工作基本结束,现在重启网络:
# /etc/init.d/network restart
最后,检查bridge是否成功建立:
#brctl show bridge name bridge id STP enabled interfaces br0 8000.4437e64a62ad no eth0
看到输出结果,证明bridge成功建立。也可以使用ifconfig命令查看br0设备信息。
(三)、安装虚拟机
以使用图形化界面Virtual Machine Manager为例虚拟机按正常流程安装,在配置虚拟网络接口(Virtual Network Interface)时,选择建立在主机eth0接口上的br0。
(四)总结
通过bridge网络接口方式建立的虚拟客户机,配置网络的方式与主机一样(因为虚拟机会为虚拟网络设备指定虚拟的MAC地址),可以使用dhcp或者static等方式联网。
安装bridge时,一定要安装bridge-utils和tunctl两个管理工具,否则KVM认不到这个bridge。