Howto Qemu-kvm Debian 8

от автора

В этом howto мы с вами просто и быстро, шаг за шагом, запустим гипервизор Qemu-KVM в debian 8.

image

Будем запускать виртуальную машину в 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 и положить туда дистрибутивы для дальнейших нужд. Например, sourceforge.net/projects/gparted/files/gparted-live-stable

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

virsh domdisplay corn 

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

remote-viewer spice://10.1.1.1:5905  

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

spicy -h 10.1.1.1 -p 5905 

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

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

Как подружить TLS написано тут — habrahabr.ru/post/221693

Продолжем конфигурировать под 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/robot/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/robot/anyfolder/corn.xml 

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

virsh autostart corn 

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

virsh dumpxml corn 

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

virsh edit corn 

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

virsh start corn virsh domdisplay corn 

Что бы установить windows на VirtIO раздел, установщику требуется драйвер из папки viostor комплекта драйверов virtio for windows.
На linux-kvm.org лежат исходники, на fedoraproject.org можно найти собраные virt-win.iso

Теперь расширим том домена.
Воспользуемся qemu-img — QEMU disk image utility. В нашем случае том corn.qcow2
Наблюдение — windows 7 мало 10GB, что бы разом выкачать все из центра обновлений и корректно их установить.
Бывает полезно сначало установить «Обновление для Windows 7 (KB2852386)» — позволяет худо-бедно (читай, никак) очищать C:\Windows\winxsx через стандартную «очистку диска» и между перезагрузками, а после использовать цент обновлений.

Проверим раздел:

cd  /home/username/qemu-qcow2-storage/ qemu-img info corn.qcow2 qemu-img check corn.qcow2 

Минимально достаточно следующего:

qemu-img resize qemu-qcow2-storage/corn.qcow2 +10GB 

Затем добавляем устройство CD-ROM, «вставляем туда gparted» и все как обычно. Русский язык — 24.
По хорошему надо использовать libguestfs-tools или resize2fs

Для Windows 8.1 нужен wddm драйвер, QXL будет очень медленно, лучше пробросить видекарту хоста
Про OEM-активация Windows очень хорошо написано тут — habrahabr.ru/post/247597

Всем спасибо.

ссылка на оригинал статьи http://habrahabr.ru/post/260791/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *