Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Установка и настройка KVM в CentOS

Оригинал: How to install and configure KVM on CentOS
Автор: Dan Nanni
Дата публикации: 24 октября 2013 года
Перевод: А. Кривошей
Дата перевода: апрель 2014 г.

KVM - это гипервизор уровня ядра системы, который быстро набрал популярность на рынке серверов Linux. Red Hat официально отказалась от Xen в пользу KVM, начиная с релиза RHEL 6. С получением официальной поддержки, установка KVM в системах на базе RedHat должна значительно упроститься.
В этом руководстве я опишу установку и настройку KVM и VirtManager в CentOS. Для установки не требуется графический интерфейс, по факту действия, описанные ниже тестировались на CentOS 6.4 server.

Проверка аппаратной поддержки виртуализации

KVM требует наличия поддержки аппаратной виртуализации (VT от Intel или AMD-V), которая представляет собой расширения набора инструкций процессора. Проверьте, поддерживает ли ваш хост аппаратную виртуализацию, с помощью команды:

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

Если флаги процессора содержат "vmx" or "svm", значит аппаратная виртуализация поддерживается.

Настройка FQDN для локального хоста

Настройте FQDN (полностью определенное имя домена - fully qualified domain name) для локального хоста, иначе при запуске демона libvirtd вы увидите предупреждение: "getaddrinfo failed for 'myhost': Name or service not known".
Для настройки FQDN отредактируйте следующий конфигурационный файл:

$ sudo -e /etc/sysconfig/network
HOSTNAME=xxx.yyy

Отключение SELinux

Перед установкой KVM обратите внимание на то, что некоторые установки SELinux могут влиять на поведение KVM и libvirt. В этом руководстве я решил в демонстрационных целях отключить SELinux. Если вы не хотите этого делать, обратитесь к документации по логическим значениям KVM SELinux.

Отключение SELinux в CentOS:

$ sudo -e /etc/selinux/config
SELINUX=disabled

Перезагрузите компьютер, чтобы изменения вступили в силу.

Установка KVM, QEMU и пользовательских утилит

Перед установкой импортируйте GPG-ключи для программных пакетов:

$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Установите 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
----------------------------------------------------

Настройка сетевого моста для подключения виртуальных машин к сети

Сама по себе установка KVM не дает возможности виртуальным машинам сообщаться друг с другом или получать доступ к внешним сетям. Сеть необходимо настроить отдельно. В этом примере я покажу, как настроить сетевой мост.
Установите пакет, необходимый для создания и управления сетевыми мостами:

$ sudo yum install bridge-utils

Отключите службу Network Manager, и переключитесь на менеджер сети по умолчанию, как показано ниже.

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

Для настройки нового моста вы должны выбрать активный сетевой интерфейс (например eth0) и сделать его сетевым мостом. В зависимости от того, каким образом назначается сетевой адрес - по DHCP или статически, имеется два способа настройки нового моста.

Настройка моста br0 с DHCP:

$ 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

Настройка моста br0 со статическим IP-адресом:

$ 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

Вы должны увидеть сетевой мост br0 с правильным IP-адресом, как показано ниже.

$ 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 для управления виртуальными машинами с помощью libvirt.
Установка VirtManager производится с помощью команды:

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

1. Запуск VirtManager на локальной системе

Если вы используете CentOS в качестве рабочей системы на десктопе, то можете просто запустить VirtManager с помощью команды:

$ sudo virt-manager

VirtManager

2. Удаленный запуск VirtManager

Если вы используете CentOS в качестве сервера без графического интерфейса, необходимо выполнить определенные подготовительные действия для запуска VirtManager.

Включите форвардинг X11 на SSH-сервер:

$ 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

Затем подключитесь к своему серверу с другой машины (десктопа) и запустите этот скрипт для удаленного запуска VirtManager.

$ ssh -X dev@centos_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