在CentOS 5.2服务器上使用KVM进行虚拟化
版本1.0
作者:Falko Timme
本指南介绍如何安装和使用KVM在CentOS 5.2服务器上创建和运行虚拟机。 我将演示如何创建基于图像的虚拟机以及使用逻辑卷(LVM)的虚拟机。 KVM是基于内核的虚拟机的缩写,并利用硬件虚拟化,即需要一个支持硬件虚拟化的CPU,例如Intel VT或AMD-V。
我不会保证这将为您工作!
1初步说明
我使用的是CentOS 5.2服务器,其主机名为server1.example.com
,IP地址为192.168.0.100,
这里是我的KVM主机。
我们还需要一个桌面系统,我们安装virt-manager,以便我们可以连接到我们安装的虚拟机的图形控制台。 我在这里使用Ubuntu 8.10桌面。
2安装KVM
CentOS 5.2 KVM主机:
跑
system-config-securitylevel
并将SELinux设置为Permissive
(如果将SELinux设置为Disabled,
则virt-install将无法正常工作)。
然后检查您的CPU是否支持硬件虚拟化 - 如果是这种情况,该命令
egrep '(vmx|svm)' --color=always /proc/cpuinfo
应该显示一些东西,例如:
[root@server1 ~]# 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 mmx fxsr sse sse2 ht syscall
nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
[root@server1 ~]#
如果没有显示任何内容,那么您的处理器不支持硬件虚拟化,您必须停止在这里。
现在我们导入软件包的GPG密钥:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
要安装KVM和virtinst
(创建虚拟机的工具),我们运行
yum install kvm kmod-kvm qemu libvirt python-virtinst
然后重新启动系统:
reboot
重新启动后,应加载KVM内核模块:
lsmod | grep kvm
[root@server1 ~]# lsmod | grep kvm
kvm_amd 50452 0
kvm 109264 1 kvm_amd
[root@server1 ~]#
(该输出来自具有AMD-V处理器的系统,如果您的系统使用Intel VT CPU,则应显示如kvm_intel
。)
要检查KVM是否已成功安装,请运行
virsh -c qemu:///system list
它应该显示如下:
[root@server1 ~]# virsh -c qemu:///system list
Id Name State
----------------------------------
[root@server1 ~]#
如果它显示错误,那么出现问题。
接下来,我们需要在我们的服务器上设置一个网桥,以便我们的虚拟机可以从其他主机访问,就像它们是网络中的物理系统一样。
为此,我们安装了包bridge-utils
...
yum install bridge-utils
...并配置一个桥。 创建文件/ etc / sysconfig / network-scripts / ifcfg-br0
(请使用BOOTPROTO
, BROADCAST
,
/ etc / sysconfig / network-scripts / ifcfg-eth0
文件中的IPADDR
, NETMASK
和NETWORK
值):
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0 TYPE=Bridge BOOTPROTO=static BROADCAST=192.168.0.255 IPADDR=192.168.0.100 NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes |
修改/ etc / sysconfig / network-scripts / ifcfg-eth0
如下(注释掉BOOTPROTO
, BROADCAST
,
IPADDR
, NETMASK
和NETWORK
,并添加BRIDGE = br0
):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ DEVICE=eth0 #BOOTPROTO=static #BROADCAST=192.168.0.255 HWADDR=00:10:A7:05:AF:EB #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 #NETWORK=192.168.0.0 ONBOOT=yes BRIDGE=br0 |
重新启动网络...
/etc/init.d/network restart
...运行
ifconfig
现在应该显示网桥( br0
):
[root@server1 ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:10:A7:05:AF:EB
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1160 (1.1 KiB) TX bytes:14875 (14.5 KiB)
eth0 Link encap:Ethernet HWaddr 00:10:A7:05:AF:EB
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13662 errors:7 dropped:160 overruns:4 frame:0
TX packets:11646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15144608 (14.4 MiB) TX bytes:1379942 (1.3 MiB)
Interrupt:74 Base address:0xcc00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4308 (4.2 KiB) TX bytes:4308 (4.2 KiB)
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:9987 (9.7 KiB)
[root@server1 ~]#
3安装virt-viewer或virt-manager在您的Ubuntu 8.10桌面上
Ubuntu 8.10桌面:
我们需要一种连接到我们客人的图形控制台的方法 - 我们可以使用virt-manager(参见KVM Guest Management with Ubuntu 8.10中的Virt-Manager )。 我假设你使用的是Ubuntu 8.10桌面。
跑
sudo aptitude install virt-manager
安装virt-manager。
(如果您使用的是Fedora 10桌面,可以按如下方式安装virt-manager:
成为根...
su
...运行
yum install virt-manager
)