在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:~ #