在Fedora 13服务器上使用KVM进行虚拟化
本指南介绍如何安装和使用KVM在Fedora 13服务器上创建和运行虚拟机。 我将演示如何创建基于图像的虚拟机以及使用逻辑卷(LVM)的虚拟机。 KVM是基于内核的虚拟机的缩写,并利用硬件虚拟化,即需要一个支持硬件虚拟化的CPU,例如Intel VT或AMD-V。
我不会保证这将为您工作!
1初步说明
我使用Fedora 13服务器,主机名为server1.example.com
,IP地址为192.168.0.100,
这里是我的KVM主机。
我们还需要一个桌面系统,我们安装virt-manager,以便我们可以连接到我们安装的虚拟机的图形控制台。 我在这里使用Fedora 13桌面。
2安装KVM
Fedora 13 KVM主机:
首先检查您的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 rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
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 rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
[root@server1 ~]#
如果没有显示任何内容,那么您的处理器不支持硬件虚拟化,您必须停止在这里。
要安装KVM和virtinst
(创建虚拟机的工具),我们运行
yum install kvm qemu libvirt python-virtinst qemu-kvm
然后启动libvirt守护进程:
/etc/init.d/libvirtd start
要检查KVM是否已成功安装,请运行
virsh -c qemu:///system list
它应该显示如下:
[root@server1 ~]# virsh -c qemu:///system list
Id Name State
----------------------------------
[root@server1 ~]#
如果它显示错误,那么出现问题。
接下来,我们需要在我们的服务器上设置一个网桥,以便我们的虚拟机可以从其他主机访问,就像它们是网络中的物理系统一样。
为此,我们安装了包bridge-utils
...
yum install bridge-utils
...并配置一个桥。
禁用Fedora的NetworkManager
并启用“正常”网络。 NetworkManager
适用于网络连接可以更改的桌面(例如LAN与WLAN),但在通常不更改网络连接的服务器上:
chkconfig NetworkManager off
chkconfig --levels 35 network on
/etc/init.d/network restart
检查您的/etc/resolv.conf
是否列出您以前配置的所有Nameservers:
cat /etc/resolv.conf
如果缺少Nameservers,请运行
system-config-network
并再次添加缺失的Nameservers。
要配置网桥,请创建文件/ etc / sysconfig / network-scripts / ifcfg-br0
(请使用DNS1
(加上任何其他DNS设置(如果有)), / etc / sysconfig
中的GATEWAY
, IPADDR
, NETMASK
和SEARCH
值/ network-scripts / ifcfg-eth0
文件):
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=145.253.2.75 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes DNS2=8.8.8.8 SEARCH="example.com" |
修改/ etc / sysconfig / network-scripts / ifcfg-eth0
如下(注释掉BOOTPROTO
, DNS1
(和所有其他DNS服务器,如果有), GATEWAY
, IPADDR
, NETMASK
和SEARCH
,并添加BRIDGE = br0
):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# nVidia Corporation MCP77 Ethernet DEVICE=eth0 #BOOTPROTO=none #DNS1=145.253.2.75 #GATEWAY=192.168.0.1 HWADDR=00:1E:90:F3:F0:02 #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 ONBOOT=yes #DNS2=8.8.8.8 TYPE=Ethernet IPV6INIT=no USERCTL=no PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=yes NAME="System eth0" UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 BRIDGE=br0 |
然后重新启动系统:
reboot
重新启动后,运行
ifconfig
现在应该显示网桥( br0
):
[root@server1 ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:1E:90:F3:F0:02
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7116 (6.9 KiB) TX bytes:9437 (9.2 KiB)
eth0 Link encap:Ethernet HWaddr 00:1E:90:F3:F0:02
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:59 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11062 (10.8 KiB) TX bytes:5433 (5.3 KiB)
Interrupt:28 Base address:0xe000
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
virbr0 Link encap:Ethernet HWaddr 22:E3:B3:E8:87:8C
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:3306 (3.2 KiB)
[root@server1 ~]#
3在Fedora 13桌面上安装virt-manager
Fedora 13桌面:
我们需要一种连接到我们客人的图形控制台的方法 - 我们可以使用virt-manager来实现。 我假设你使用的是Fedora 13桌面。
成为根...
su
...并运行...
yum install virt-manager libvirt qemu-system-x86
...安装virt-manager。
(如果您使用的是Ubuntu 10.04桌面,可以按如下方式安装virt-manager:
sudo aptitude install virt-manager
)
4创建Debian Lenny Guest(基于图像)
Fedora 13 KVM主机:
现在我们回到我们的Fedora 13 KVM主机。
看一眼
man virt-install
学习如何使用它。
我想在目录/ vm
中创建我的虚拟机(它们不能在/ root目录中
创建,因为qemu
用户在该目录
中没有读取权限),所以我必须先创建它:
mkdir /vm
(如果您尝试在/ root目录
中创建虚拟机,您将收到类似于此的错误:
[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f ~/vm10.qcow2 -s 12 -c ~/debian-500-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debianlenny --accelerate --network=bridge:br0 --hvm
Starting install...
Creating storage file vm10.qcow2 | 12 GB 00:00
ERROR internal error Process exited while reading console log output: char device redirected to /dev/pts/2
qemu: could not open disk image /root/vm10.qcow2: Permission denied
Domain installation may not have been
successful. If it was, you can restart your domain
by running 'virsh start vm10'; otherwise, please
restart your installation.
ERROR internal error Process exited while reading console log output: char device redirected to /dev/pts/2
qemu: could not open disk image /root/vm10.qcow2: Permission denied
Traceback (most recent call last):
File "/usr/sbin/virt-install", line 972, in <module>
main()
File "/usr/sbin/virt-install", line 834, in main
start_time, guest.start_install)
File "/usr/sbin/virt-install", line 896, in do_install
dom = install_func(conscb, progresscb, wait=(not wait))
File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 798, in start_install
return self._do_install(consolecb, meter, removeOld, wait)
File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 899, in _do_install
self.domain = self.conn.createLinux(install_xml, 0)
File "/usr/lib64/python2.6/site-packages/libvirt.py", line 1147, in createLinux
if ret is None:raise libvirtError('virDomainCreateLinux() failed', conn=self)
libvirtError: internal error Process exited while reading console log output: char device redirected to /dev/pts/2
qemu: could not open disk image /root/vm10.qcow2: Permission denied
[root@server1 ~]#
)
要创建名为vm10,512MB
RAM,两个虚拟CPU和磁盘映像/vm/vm10.qcow2
(大小为12GB)的Debian Lenny guest虚拟机(桥接模式),请将Debian Lenny Netinstall CD插入CD驱动器并运行
virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f /vm/vm10.qcow2 -s 12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debianlenny --accelerate --network=bridge:br0 --hvm
当然,您还可以创建Debian Lenny Netinstall CD的ISO映像...
dd if=/dev/cdrom of=/vm/debian-500-amd64-netinst.iso
...并在virt-install命令中使用ISO映像:
virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f /vm/vm10.qcow2 -s 12 -c /vm/debian-500-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debianlenny --accelerate --network=bridge:br0 --hvm
输出如下:
[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f /vm/vm10.qcow2 -s 12 -c /vm/debian-500-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debianlenny --accelerate --network=bridge:br0 --hvm
Starting install...
Creating domain... | 0 B 00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
[root@server1 ~]#