KVM在Debian Squeeze服务器上的虚拟化

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

在Debian Squeeze服务器上使用KVM进行虚拟化

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

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

1初步说明

我使用的主机名为server1.example.com ,IP地址为192.168.0.100的机器作为我的KVM主机。

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

2安装KVM

Debian Squeeze 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 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 pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
root@server1:~#

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

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

apt-get install kvm qemu-kvm libvirt-bin virtinst

之后,我们必须将我们当前登录的用户( root )添加到组libvirtkvm中

adduser `id -un` libvirt
adduser `id -un` kvm

您需要注销并重新登录才能使新组成员身份生效。

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

virsh -c qemu:///system list

它应该显示如下:

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

root@server1:~#

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

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

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

apt-get install bridge-utils

...并配置一个桥。 打开/ etc / network / interfaces

vi /etc/network/interfaces

在修改之前,我的文件如下所示:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

我改变它,使它看起来像这样:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.0.100
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

(确保您的网络使用正确的设置!)

重新启动网络...

/etc/init.d/networking restart

...运行

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:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:310 (310.0 B)  TX bytes:838 (838.0 B)

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:45364 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24634 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:66909993 (63.8 MiB)  TX bytes:1988727 (1.8 MiB)
          Interrupt:28

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:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

root@server1:~#

3安装virt-viewer或virt-manager在您的Ubuntu 10.10桌面上

Ubuntu 10.10桌面:

我们需要一种连接到我们客人的图形控制台的方法 - 我们可以使用virt-manager(参见KVM Guest Management with Ubuntu 8.10中的Virt-Manager )。 我假设你使用的是Ubuntu 10.10桌面。

sudo apt-get install virt-manager

安装virt-manager。

4从命令行创建一个Debian Squeeze Guest(基于图像)

Debian Squeeze KVM主机:

现在我们回到我们的Debian Squeeze KVM主机。

看一眼

man virt-install

学习如何使用它。

我们将在第二章中安装KVM时自动创建的/ var / lib / libvirt / images /目录中创建基于映像的虚拟机。

要创建名称为vm10,512MB RAM,两个虚拟CPU和磁盘映像/var/lib/libvirt/images/vm10.img (大小为12GB)的Debian Squeeze guest虚拟机(桥接模式),请插入Debian将Netinstall CD压缩到CD驱动器并运行

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

当然,您还可以创建Debian Squeeze Netinstall CD的ISO映像(请在/ var / lib / libvirt / images /目录中创建它),因为稍后我会展示如何通过virt-manager从Ubuntu创建虚拟机桌面和virt-manager将在/ var / lib / libvirt / images /目录中查找ISO映像)

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso

...并在virt-install命令中使用ISO映像:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

输出如下:

root@server1:~# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm


Starting install...
Allocating 'vm10.img' |  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.
root@server1:~#