Установка QEMU-KVM в Linux

Сегодня речь пойдёт о виртуализации. В частности, об установке и базовой настройке гипервизора 2 типа QEMU-KVM на основе Linux (Debian).

Подготовка

Перед началом установки следует убедиться в том, что виртуализация поддерживается на аппаратном уровне:

egrep '(vmx|svm)' --color=always /proc/cpuinfo

Если в выводе команды встретились аббревиатуры «vmx» или «svm», значит всё хорошо и можно начинать установку гипервизора. В противном случае либо ваше оборудование не поддерживает аппаратную виртуализацию, либо нужно включить такую поддержку через BIOS.

Установка QEMU-KVM

Устанавливаем необходимые пакеты:

sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Включаем vhost-net. Это подсистема ядра linux, позволяющая уменьшить задержки и увеличить производительность сетевой подсистемы. Доступна в QEMU, начиная с версии 0.13.

sudo modprobe vhost_net
sudo echo vhost_net >> /etc/modules

Проверяем:

user@host:~$ lsmod | grep vhost
vhost_net              17307  0
tun                    26385  1 vhost_net
vhost                  22500  1 vhost_net
macvtap                17526  1 vhost_net

Настройка сети

Если планируется выпускать виртуальные машины в интернет через NAT, то в консоли никаких дополнительных настроек можно не делать, их сделал за нас libvirt (создал NAT). Если же у вас есть достаточно «белых» IP-адресов, чтобы выдать хотя бы по одному каждой виртуалке, либо планируется использовать виртуальные машины в рамках одной подсети с другими машинами, то придётся настроить сетевой мост.
Далее исходим из того, что аппаратный сервер имеет один физический сетевой интерфейс eth0, через который и общается с миром. Вносим изменения в конфигурацию интерфейса eth0 в файле /etc/network/interfaces следующим образом.
Было:

auto eth0
iface eth0 inet static
  address xxx.xxx.105.100
  netmask 255.255.254.0
  network xxx.xxx.104.0
  broadcast xxx.xxx.105.255
  gateway xxx.xxx.105.208
  dns-nameservers 8.8.8.8 8.8.4.4

Стало:

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
  address xxx.xxx.105.100
  netmask 255.255.254.0
  network xxx.xxx.104.0
  broadcast xxx.xxx.105.255
  gateway xxx.xxx.105.208
  dns-nameservers 8.8.8.8 8.8.4.4
  bridge_ports eth0
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0

То есть теперь у нас интерфейс eth0 не имеет своего ip-адреса, зато в системе появился сетевой мост br0, которому этот ip-адрес и отошёл.

Ещё раз очень внимательно проверяем внесённые изменения, особенно если производим описанные выше манипуляции с настройками сети удалённо (в случае ошибки придётся совершить поездку к серверу). После чего выполняем:

sudo /etc/init.d/networking restart

Проверяем поднялся ли сетевой мост br0:

sudo ifconfig

Если нет, то поднимаем:

sudo ifup br0

Установка virt-manager

Ставим нужный пакет:

sudo apt-get install virt-manager

Добавляем пользователя, от имени которого работаем, в группу libvirt:

usermod -aG libvirt user

Если вы имеете физический доступ к настраиваемому серверу и на нём установлен X-сервер, то на этом установку можно считать законченной, можете уже запустить графическую оболочку virt-manager и начать создавать виртуальные машины. Если же непосредственного доступа к серверу нет, либо на него не хочется ставить X-сервер, то выполним ещё несколько упражнений, но уже на другой машине, на которой установлены «иксы».

Удалённое подключение к virt-manager

Сначала проверим разрешён ли X11 Forwarding на сервере, на котором мы установили QEMU-KVM. Для этого проверяем наличие в конфиге /etc/ssh/sshd_config строки:

...
X11Forwarding yes
...

Если такой строки не было либо было установлено значение «no», то исправляем и перезапускаем ssh-сервер:

sudo /etc/init.d/ssh restart

Теперь переходим к машине, с которой будем подключаться к гипервизору. Как уже было сказано выше, нам необходим установленный X-сервер. Если ещё не установили, то:

sudo apt-get install xorg

Подключаемся по ssh к гипервизору:

ssh -X servername

Пробуем запустить virt-manager:

virt-manager

Получилось? Если нет, то попробуйте на сервере с гипервизором для подключившегося пользователя установить переменную DISPLAY:

export DISPLAY=localhost:10.0

Теперь должно получиться.

Если вдруг вы захотите управлять виртуальными машинами из MS Windows, то это тоже возможно. Установите VcXsrv Windows X Server. Также не забудьте установить putty.

Запускаем putty. В настройках подключения (Connection->SSH->X11) включаем X11 forwarding «Enable X11 forwarding». В разделе Session указываем DNS-имя или IP-адрес нашего гипервизора. Подключаемся.

Запускаем virt-manager:

virt-manager

В случае ошибок вида:

Gtk-WARNING **: cannot open display: ...

попробуйте установить переменную DISPLAY, как было описано здесь.

На этом сеанс магии закончен 🙂

Добавить комментарий