Howto Qemu - kvm Debian 8
Будем запускать виртуальную машину в 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