KVM在Fedora 17服务器上的虚拟化

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

在Fedora 17服务器上使用KVM实现虚拟化

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

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

1初步说明

我正在使用Fedora 17服务器,其主机名为server1.example.com ,IP地址为192.168.0.100,这里是我的KVM主机。

我的Fedora 17系统上已禁用SELinux。 我没有用SELinux测试; 它可能会工作,但如果没有,你最好关闭SELinux:

vi /etc/selinux/config

设置SELINUX =已禁用 ...

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

...并重启:

reboot

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

2安装KVM

Fedora 17 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 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 libvirt python-virtinst qemu-kvm

创建libvirt守护程序的系统启动链接并启动它:

systemctl enable libvirtd.service
systemctl start libvirtd.service

要检查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),但在通常不更改网络连接的服务器上:

systemctl disable NetworkManager.service
systemctl enable network.service
systemctl restart network.service
systemctl stop NetworkManager.service

检查您的/etc/resolv.conf是否列出您以前配置的所有Nameservers:

cat /etc/resolv.conf

如果缺少Nameservers,请运行

system-config-network

并再次添加缺失的Nameservers。

接下来通过运行找出您的主要网络接口

ifconfig

在我的情况下,它被命名为em1 - 这对于确保您编辑正确的网络配置文件(在我的/ etc / sysconfig / network-scripts / ifcfg-em1)中很重要

要配置网桥,请创建文件/ etc / sysconfig / network-scripts / ifcfg-br0 (请使用DNS1 (加上任何其他DNS设置(如果有)), / etc / sysconfig中的GATEWAYIPADDRNETMASKSEARCH/ network-scripts / ifcfg-em1文件):

vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
DNS1=8.8.8.8
GATEWAY=192.168.0.1
IPADDR=192.168.0.100
NETMASK=255.255.255.0
ONBOOT=yes
DNS2=8.8.4.4
SEARCH="example.com"

修改/ etc / sysconfig / network-scripts / ifcfg-em1如下(注释掉BOOTPROTODNS1 (和所有其他DNS服务器,如果有), GATEWAYIPADDRNETMASKSEARCH ,将NM_CONTROLLED设置为no ,然后添加BRIDGE = br0 ):

vi /etc/sysconfig/network-scripts/ifcfg-em1

UUID="e8a818cc-0e23-47b8-88f3-013567828572"
NM_CONTROLLED=no
#BOOTPROTO=none
HWADDR=00:1e:90:f3:f0:02
ONBOOT=yes
#IPADDR=192.168.0.100
#NETMASK=255.255.255.0
#DNS2=8.8.4.4
TYPE=Ethernet
#GATEWAY=192.168.0.1
#DNS1=8.8.8.8
IPV6INIT=no
USERCTL=no
PREFIX=24
BRIDGE=br0

然后重新启动系统:

reboot

重新启动后,运行

ifconfig

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

[root@server1 ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::21e:90ff:fef3:f002  prefixlen 64  scopeid 0x20<link>
        ether 00:1e:90:f3:f0:02  txqueuelen 0  (Ethernet)
        RX packets 70  bytes 7511 (7.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 76  bytes 10847 (10.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:1e:90:f3:f0:02  txqueuelen 1000  (Ethernet)
        RX packets 117  bytes 15163 (14.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92  bytes 12899 (12.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 16436
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether ce:18:6f:2a:7f:0b  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@server1 ~]#

3安装virt-viewer或virt-manager在您的Fedora 17桌面上

Fedora 17桌面:

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

成为根...

su

...并运行...

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

...安装virt-manager。

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

sudo apt-get install virt-manager

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

Fedora 17 KVM主机:

现在我们回到我们的Fedora 17 KVM主机。

看一眼

man virt-install

学习如何使用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 /目录中创建它,因为稍后将介绍如何通过Fedora从Fedora创建虚拟机桌面和virt-manager将在/ var / lib / libvirt / images /目录中查找ISO映像)

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.5-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.5-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.5-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 ~]#