Библиотека сайта 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
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