KVM在OpenSUSE 11.3服务器上的虚拟化

KVM在OpenSUSE 11.3服务器上的虚拟化 本指南解释了如何安装和使用KVM创建和 正在运行虚拟机...

在OpenSUSE 11.3服务器上使用KVM进行虚拟化

本指南介绍如何安装和使用KVM在OpenSUSE 11.3服务器上创建和运行虚拟机。 我将演示如何创建基于图像的虚拟机以及使用逻辑卷(LVM)的虚拟机。 KVM是基于内核的虚拟机的缩写,并利用硬件虚拟化,即需要一个支持硬件虚拟化的CPU,例如Intel VT或AMD-V。

我不会保证这将为您工作!

1初步说明

我使用的主机名为server1.example.com的OpenSUSE 11.3服务器和IP地址192.168.0.100这里作为我的KVM主机。

我们还需要一个桌面系统,我们安装virt-manager,以便我们可以连接到我们安装的虚拟机的图形控制台。 我在这里使用OpenSUSE 11.3桌面。

2安装KVM

OpenSUSE 11.3 KVM主机:

首先检查您的CPU是否支持硬件虚拟化 - 如果是这种情况,该命令

egrep '(vmx|svm)' --color=always /proc/cpuinfo

应该显示一些东西,例如:

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 extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
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 extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
server1:~ #

如果没有显示任何内容,那么您的处理器不支持硬件虚拟化,您必须停止在这里。

要安装KVM和virtinst (创建虚拟机的工具),我们运行

yast2 -i kvm libvirt libvirt-python qemu virt-manager

然后为libvirtd创建系统启动链接...

chkconfig --add libvirtd

...并启动libvirt守护进程:

/etc/init.d/libvirtd start

要检查KVM是否已成功安装,请运行

virsh -c qemu:///system list

它应该显示如下:

server1:~ # virsh -c qemu:///system list
 Id Name                 State
----------------------------------

server1:~ #

如果它显示错误,那么出现问题。

接下来,我们需要在我们的服务器上设置一个网桥,以便我们的虚拟机可以从其他主机访问,就像它们是网络中的物理系统一样。

为此,我们安装了包bridge-utils ...

yast2 -i bridge-utils

...并配置一个桥。

要配置网桥,请按如下所示创建文件/ etc / sysconfig / network / ifcfg-br0 (请确保使用/ etc / sysconfig / network / ifcfg-eth0文件中的IPADDR设置):

vi /etc/sysconfig/network/ifcfg-br0

STARTMODE='auto'
BOOTPROTO='static'
IPADDR='192.168.0.100/24'
MTU=''
NETMASK=''
NETWORK=''
BROADCAST=''
USERCONTROL=no
NAME='Bridge 0'
NM_CONTROLLED=no
BRIDGE='yes'
BRIDGE_PORTS='eth0'
BRIDGE_AGEINGTIME='300'
BRIDGE_FORWARDDELAY='0'
BRIDGE_HELLOTIME='2'
BRIDGE_MAXAGE='20'
BRIDGE_PATHCOSTS='19'
BRIDGE_PORTPRIORITIES=
BRIDGE_PRIORITY=
BRIDGE_STP='on'

修改/ etc / sysconfig / network / ifcfg-eth0如下(将IPADDR设置为0.0.0.0 ,并将STARTMODE更改为hotplug ):

vi /etc/sysconfig/network/ifcfg-eth0

BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='0.0.0.0'
MTU=''
NAME='MCP77 Ethernet'
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='hotplug'
USERCONTROL='no'

然后重新启动网络:

/etc/init.d/network restart

之后运行

ifconfig

现在应该显示网桥( br0 ):

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:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1446 (1.4 Kb)  TX bytes:3774 (3.6 Kb)

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:18882 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13546 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25589600 (24.4 Mb)  TX bytes:1324302 (1.2 Mb)
          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:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:100 (100.0 b)  TX bytes:100 (100.0 b)

server1:~ #

3在您的OpenSUSE 11.3桌面上安装virt-manager

OpenSUSE 11.3桌面:

我们需要一种连接到我们客人的图形控制台的方法 - 我们可以使用virt-manager来实现。 我假设你使用的是OpenSUSE 11.3桌面。

成为根...

su

...并运行...

yast2 -i virt-manager libvirt

...安装virt-manager。

(如果您使用的是Ubuntu 10.10桌面,可以按如下方式安装virt-manager:

sudo aptitude install virt-manager

4创建Debian Lenny Guest(基于图像)

OpenSUSE 11.3 KVM主机:

现在我们回到我们的OpenSUSE 11.3 KVM主机。

看一眼

man virt-install

学习如何使用它。

我想在目录/ vm中创建我的虚拟机(它们不能在/ root目录中创建,因为qemu用户在该目录中没有读取权限),所以我必须先创建它:

mkdir /vm

(如果您尝试在/ 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

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

输出如下:

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 storage file vm1 100% |=========================|  12 GB    00:00
Creating domain...                                                 0 B 00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
server1:~ #