Howto Qemu - kvm Debian 8

Материал из support.qbpro.ru

Будем запускать виртуальную машину в qemu-kvm от пользователя username, используя spice, qxl и virtio.
Предполагается, что установлен Debian 8 amd64, с выбранными в tasksel стандартными утилитами и SSH сервером. Доустановим.

aptitude install -y firmware-linux bridge-utils etckeeper


Проверим, поддерживает ли наш процессор виртуализацию:

egrep '(vmx|svm)' /proc/cpuinfo


Включим форвардинг, net.ipv4.ip_forward=1

vim /etc/sysctl.conf


Создаем мост br0 Примерный вид /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback 

# The primary network interface
#auto eth0
#allow-hotplug eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet dhcp
       bridge_ports eth0
       bridge_stp off
       bridge_fd 0
       bridge_maxwait 0


/etc/init.d/networking restart


Проверим, должно быть похоже «br0 8000.08608ee7dc58 no eth0»

brctl show 


Используя мост, при старте виртуальной машины будут подниматься vnetX интерфейсы

tcpdump -i vnet0 -n


Устанавливаем kvm:

aptitude install qemu-kvm libvirt-bin


Добавляем пользователя в группы kvm:

adduser username kvm
adduser username libvirt


Разрешим доступ для spice и сменим пользователя, под которым все будет работать:

vim /etc/libvirt/qemu.conf


spice_listen = «0.0.0.0»
user = «username»
group = «username»

По большому счету всего готово к работе. Без запущенных виртуальных машин хост-система занимает ~150 mb ram

Можно пропустить - вариант для продвинутых GUI менеджер для выполнения базового ряда задач при работе с kvm. Создание, запуск/остановка, клонирование — почти :) все, что нужно.

На другом компьютере устанавливаем:

aptitude install ssh-askpass virt-manager virt-viewer spice-client-gtk


Запускаем virt-manager. Файл -> добавить соединение -> Гипервизор: QEMU/KVM и подключаемся к удаленному хосту под нашим пользователем username. Авторизация использует openssh-askpass. Правка -> свойства подключения — Хранилище Тут можно управлять хранилищами — например, создать qemu-iso-storage и положить туда дистрибутивы для дальнейших нужд. Например, gparted

К созданной виртуальной машине можно подключится простым вивером со всем функционалом, что предоставляет spice. Для этого необходимо узнать URI домена/вирт.машины на kvm

virsh domdisplay corn


На клиенте запустим:

remote-viewer spice://10.1.1.8:5905 


Тоже самое другим вивером, который spice-client-gtk:

spicy -h 10.1.1.8 -p 5905


В продвинутом варианте при создании новой виртуальной машины существует баг. В настройках, где выбираем spice-сервер или vnc-сервер, нельзя выбрать spice, не включив TLS. Само по себе TLS в qemu по умолчанию не используется и, соовественно, выключенно. Если TLS пока не нужно, можно временно запустить вирутальную машину с vnc-сервером, что бы в /etc/libvirt/qemu/ создался corn.xml и заменить в нем секцию <graphics… /> на spice с выключеным TLS.

 <graphics type='spice' port='5905' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
 </graphics>

Как подружить TLS написано тут


Продолжаем конфигурировать под root

Определяем пулы — где все будет лежать конфигурации storage хранятся тут /etc/libvirt/storage/ по умолчанию есть default.xml — хранилище на файловой системе в /var/lib/libvirt/images Добавляем свое qemu-test-storage:

*-as создает хранилище аналогичное дефолту, т.е. по конфигурации такое же как в default.xml
virsh pool-define-as qemu-test-storage dir --target /home/username/qemu-test-storage/


По умолчанию пул не запущен, стартуем:

virsh pool-start qemu-test-storage


Добавляем созданный пул в автостарт:

virsh pool-autostart qemu-test-storage


Посмотреть все пулы:

virsh pool-list --all


Все домены:

virsh list --all


Регистрируем домен (виртуальную машину) с конфигурацией, описанной в файле corn.xml Создать xml с конфигурацией (например, для шаблона) проще через virt-manager, чем описывать каждую опцию в virt-install. Все конфигурации виртуальных машин хранятся в /etc/libvirt/qemu/ Вообщем, предполагается, что у нас есть этот файл.

virsh define /home/username/anyfolder/corn.xml


Добавить домен в автозагрузку:

virsh autostart corn


Текущая конфигурация домена:

virsh dumpxml corn


Редактируем домен:

virsh edit corn


Стартуем домен, смотрим URI и подключаемся любым доступным способом.

virsh start corn
virsh domdisplay corn