Предварительная установка
Для запуска KVM, необходимо процессор поддерживающий аппаратную виртуализацию. Intel и AMD и разработали расширения для своих процессоров, считаются соответственно Intel VT-х (кодовое название Vanderpool) и AMD-V (кодовое название Pacifica). Чтобы узнать поддерживает ваш процессор данную опцию, выполните:
# egrep -c '(vmx|svm)' /proc/cpuinfo
- Если получите ответ 0 — это означает, что ваш процессор не поддерживает аппаратную виртуализацию.
- Если получите ответ 1 или другое число — это означает, что ваш процессор поддерживает виртуализацию в BIOS.
По умолчанию, если вы загрузились в XEN ядро не будет отображаться SVM или флаг VMX с помощью команды GREP. Чтобы увидеть включены ли данные флаги от Xen, введите:
# cat /sys/hypervisor/properties/capabilities
Вы должны увидеть HVM флаги.
Кроме того, вы можете выполнить:
# kvm-ok
Если получите следующий вывод, то у вас все хорошо и у вас имеется поддержка:
INFO: /dev/kvm exists
KVM acceleration can be used
Если получите следующий вывод, то у вас нет поддержки и будет работать гораздо медленнее без этих расширений KVM:
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
ПРИМЕЧАНИЕ: Вы можете увидеть сообщение вроде «KVM acceleration can/can NOT be used». Это вводит в заблуждение, и только означает что KVM является *currently* available (i.e. «turned on»), и говорит что они включены, но не поддерживаются.
Используйте 64 битное ядро (если это возможно)
Запуск на 64 битном ядре рекомендуется, но не требуется.
Чтобы обеспечить поддержку более 2 Гб оперативной памяти для виртуальных машин, необходимо использовать 64-битное ядро. На 32-битном ядре будут ограничено использование РАМ до 2 Гб.
Кроме того, 64-разрядная система может содержать как 32-разрядные, так и 64-разрядные ОС, а 32-битная система может вместить только 32-разрядные ОС ваших виртуальных машин. Чтобы проверить, какой розрядности ваш процессор, вы можете запустить эту команду:
# egrep -c ' lm ' /proc/cpuinfo
- Если вы имеете 0, то это означает что ваш процессор не 64-битный.
- Если вы имеете 1 и выше, то это говорит что имеет поддержку.
Чтобы посмотреть архитектуру вашего сервера, используйте:
# uname -m
x86_64 указывает работу c 64-разрядным ядром. Если вы используете i386, i486, i586 или i686, вы работаете в 32-битным ядром.
Установка гипервизора KVM на Debian/Ubuntu
Для минимальной установки, потребуется лишь следующий пакет virtinst который можно установить:
# aptitude install virtinst
Следующие пакеты необходимы если вам необходимо включить KVM на уже установленной ОС, я установлю и их:
# aptitude install kvm libvirt-bin virtinst bridge-utils
Для того, чтобы использовать графический интерфейс установите:
# aptitude install virt-manager virt-viewer
Моя первая виртуальная машина будет установлена именно через графический интерфейс т.к он очень простой.
Добавляем своего пользователя в группы:
# adduser `id -un` libvirtd
$ sudo adduser `id -un` kvm
Например:
# adduser captain kvm
# adduser captain libvirtd
После установки, вы должны войти снова, чтобы ваш пользователь становится действительным членом KVM и libvirtd групп пользователей. Члены этой группы могут запускать виртуальные машины.
Настройка сетевого моста для подключения виртуальных машин к реальной сети
Данная настройка необходима для вашего гипервизера, для того чтобы виртуальные сервера имели прямой доступ к интернету. Внесем некоторые изменения в конфигурационный файл
# nano /etc/network/interfaces
Если у вас имеется сетевой интерфейс eth0, то его нужно заменить на br0 с добавляем следующих строк:
#auto eth0
#iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.10.10
gateway 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
ИЛИ
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Я буду использовать следующий пример с DHCP
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Это создаст виртуальный интерфейс br0.
Теперь перезагрузите сеть:
# /etc/init.d/networking restart
Если ваша VM «замораживает» в течение нескольких секунд после запуска или остановки KVM при использовании мостового сети, это потому, что мост Linux примет аппаратный адрес с наименьшим номером интерфейса. Чтобы обойти эту проблему, добавьте следующeю конфигурацию вашего моста:
# post-up ip link set br0 address f4:6d:04:08:f1:5f
Замените f4:6d:04:08:f1:5f с аппаратным адресом физического Ethernet адаптер, который всегда будет частью моста.
Проверка установки KVM
$ virsh -c qemu:///system list
Id Name State
----------------------------------
Если получите вывод:
$ virsh -c qemu:///system list
libvir: Remote error : Permission denied
error: failed to connect to the hypervisor
$
Файл sock должен иметь права, аналогичные как:
$ sudo ls -la /var/run/libvirt/libvirt-sock
srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock
Так же, /dev/kvm должен иметь правильные группы. Если ты видишь:
$ ls -l /dev/kvm
crw-rw----+ 1 root root 10, 232 Jul 8 22:04 /dev/kvm
Вы можете столкнуться с проблемами при создании виртуальной машины. Изменить группу устройства для kvm/libvirtd:
# chown root:libvirtd /dev/kvm
Теперь вам нужно либо войти снова или перезагрузить модули ядра:
# rmmod kvm
# modprobe -a kvm
Далее рассмотрим создание виртуальной машины на KVM.