如何在CentOS上安装和配置KVM如何在CentOS上安装和配置KVM如何在CentOS上安装和配置KVM如何在CentOS上安装和配置KVM
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在CentOS上安装和配置KVM

KVM 是一种基于内核的虚拟机管理程序,在 Linux 服务器市场中迅速成熟并流行。自 RHEL 6 起,红帽正式放弃了 Xen,转而使用 KVM。随着红帽正式支持 KVM,在基于 RedHat 的系统上安装 KVM 应该变得轻而易举。

在本教程中,我将描述如何在 CentOS 上安装和配置 KVM 和 VirtManager。使用本教程不需要有 CentOS 桌面环境。本教程实际上是在 CentOS 6.4 服务器上测试的。

检查硬件虚拟化支持

KVM需要硬件虚拟化支持,例如Intel VT或AMD的AMD-V,它们是硬件辅助虚拟化的指令集扩展。检查 CentOS 主机上是否支持硬件虚拟化:


$ egrep -i 'vmx|svm' --color=always /proc/cpuinfo

如果CPU标志包含vmx或svm,则表示硬件虚拟化支持可用。

为本地主机配置 FQDN

为本地主机配置 FQDN(完全限定域名)。否则,您可能会在启动 libvirtd 守护进程时收到警告,例如“getaddrinfo failed for 'myhost': Name or service notknown”。

要配置 FQDN,请编辑以下配置文件:


$ sudo -e /etc/sysconfig/network

HOSTNAME=xxx.yyy

禁用 SELinux

在安装 KVM 之前,请注意有几个 SELinux 布尔值会影响 KVM 和 libvirt 的行为。在本教程中,我将把 SELinux 设置为 Permissive 以进行演示。如果您不想更改 SELinux 模式,请参阅有关 KVM SELinux 布尔值的文档。

要在 CentOS 上禁用 SELinux:


$ sudo -e /etc/selinux/config

SELINUX=permissive

重新启动计算机以使更改生效。

安装 KVM、QEMU 和用户空间工具

安装 KVM 和 virtinst(创建虚拟机的工具),如下所示:


$ sudo yum install kvm libvirt python-virtinst qemu-kvm

启动 libvirtd 守护进程,并将其设置为自动启动:


$ sudo service libvirtd start
$ sudo chkconfig libvirtd on

检查KVM是否安装成功。您应该不会看到如下错误。


$ sudo virsh -c qemu:///system list

 Id    Name                           State
----------------------------------------------------

为 VM 网络配置 Linux 桥

单独安装KVM无法实现虚拟机之间的通信或访问外部网络。您需要单独配置虚拟机网络。在本教程中,我将通过 Linux 桥接设置桥接网络。

安装创建和管理桥接设备所需的软件包:


$ sudo yum install bridge-utils

如果网络管理器已启用,您需要将其禁用,然后切换到默认的网络管理器,如下所示。


$ sudo service NetworkManager stop
$ sudo chkconfig NetworkManager off
$ sudo chkconfig network on
$ sudo service network start

禁用网络管理器后,您可以通过在 /etc/sysconfig/network-scripts 中创建其配置来配置桥接接口。

要配置新网桥,您首先必须选择一个活动网络接口(例如,eth0),并将其从属于该网桥。根据网络接口是通过 DHCP 还是静态分配 IP 地址,有两种不同的方法来配置新网桥。

通过 DHCP 配置网桥 br0:


$ sudo -e /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BRIDGE=br0

$ sudo -e /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=dhcp

要使用静态 IP 地址配置网桥 br0:


$ sudo -e /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BRIDGE=br0

$ sudo -e /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Bridge
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.10.1.105
NETMASK=255.255.255.0
GATEWAY=10.10.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4

请注意,从属接口 (eth0) 的配置没有 BOOTPROTO 字段,但添加了 BRIDGE 字段。

相应生成配置文件后,运行以下命令来激活更改。


$ sudo service network restart

您现在应该看到具有正确 IP 地址的 br0 桥接口,如下所示。


$ ifconfig

br0       Link encap:Ethernet  HWaddr D4:85:64:78:01:DC
          inet addr:10.10.1.105  Bcast:135.112.33.255  Mask:255.255.255.0
          inet6 addr: fe80::d685:64ff:fe78:1dc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:182 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:15434 (15.0 KiB)  TX bytes:6648 (6.4 KiB)

eth0      Link encap:Ethernet  HWaddr D4:85:64:78:01:DC
          inet6 addr: fe80::d685:64ff:fe78:1dc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:188 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:21424 (20.9 KiB)  TX bytes:6408 (6.2 KiB)

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 52:54:00:59:A3:88
          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: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)

安装VirtManager

最后一步是安装名为 VirtManager 的桌面 UI,用于通过 libvirt 管理虚拟机 (VM)。

Install and Run VirtManager


$ sudo yum install virt-manager libvirt qemu-system-x86 openssh-askpass libcanberra-devel

Launch VirtManager Locally

如果您使用的是 CentOS 桌面,此时您应该能够在本地启动 VirtManager,只需运行:


$ sudo virt-manager

远程启动 VirtManager

但是,如果您使用没有桌面 UI 的 CentOS 服务器,请按照以下步骤启动 VirtManager。

首先,在 CentOS 服务器上运行的 sshd 上启用 X11 转发:


$ sudo yum install xauth

$ sudo -e /etc/ssh/sshd_config

X11Forwarding yes

$ sudo service sshd restart

然后,为 virt-manager 创建以下包装器脚本。


$ sudo -e /usr/bin/vm

#! /bin/bash
xauth list | while read line; do
 sudo -i xauth add $line
done
sudo -i virt-manager

$ sudo chmod +x /usr/bin/vm

最后,从单独的桌面计算机连接到 CentOS 服务器,并运行包装脚本 vm 来远程启动 VirtManager。


$ ssh -X [email _server

KVM 和 VirtManager 设置故障排除

1. 如果您在尝试远程启动 VirtManager 时看到以下错误,请确保使用包装脚本 (vm) 来启动它,如上所述。


X11 connection rejected because of wrong authentication.
Traceback (most recent call last):
  File "/usr/share/virt-manager/virt-manager.py", line 383, in 
    main()
  File "/usr/share/virt-manager/virt-manager.py", line 286, in main
    raise gtk_error
RuntimeError: could not open display

2. 如果您看到以下 D-Bus 错误:


D-Bus library appears to be incorrectly set up; failed to read machine
uuid: UUID file '/var/lib/dbus/machine-id'

然后运行以下命令并重新启动主机。


$ sudo sh -c 'dbus-uuidgen > /var/lib/dbus/machine-id'

3. 如果运行 VirtManager 时遇到字体问题,请安装以下字体,然后重新启动它。


$ sudo yum install dejavu-lgc-sans-fonts
©2015-2025 艾丽卡 support@alaica.com