Эмулятор виртуальных машин QEMU-KVM на Ubuntu Precise

Posted by

В связи с новым местом работы приходят и новые знания, т. е. В организации где я начал работать используются виртуальные машины развернутые с использованием , а так как я с этим не работал то для себя хочу проработать данный вопрос более подробно, чтобы уже на рабочем месте не быть новичком, а уже более сносно ориентироваться.

Сказано сделано.

И так у меня есть система которая будет выступать в качестве сервера — это мой домашний/рабочий ноутбук HP dv6-3080er .5 Desktop amd64

Первым делом необходимо проверить, поддерживает ли железо сервера аппаратную виртуализацию командой:

keiz@dv6:~$ egrep ‘(vmx|svm)’ /proc/cpuinfo

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr npt lbrv svm_lock nrip_save

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr npt lbrv svm_lock nrip_save

Вывод вышеприведенной команды ну пуст поэтому делаю вывод, что железо поддерживает аппаратную виртуализацию.

В моей системе два процессора:

keiz@dv6:~$ egrep -c ‘(vmx|svm)’ /proc/cpuinfo

2

Первым делом обновляю информацию по установленным пакетам в системе:

keiz@dv6:~$ sudo apt-get update && sudo apt-get upgrade -y

Дальше устанавливаю в системе следующие пакеты:

keiz@dv6:~$ sudo apt-get install ubuntu-virt-server python-vm-builder -ipxe -y

После нужно проверить что текущая учетная запись состоит в группе Libvirtd:

keiz@dv6:~$ cat /etc/group | grep libvirtd

libvirtd:x:139:keiz

Отлично с этим проблем нет. Проверим что KVM (Kernel-based Virtual Machine) успешно запускается:

keiz@dv6:~$ sudo virsh -c qemu:///system list

ID Имя Статус

———————————-

Запускается, но так как виртуальных машин пока нет то и вывод пуск.

Далее для будущих виртуальных машин понадобиться сеть работающая как бы напрямую с текущей, т. е. Организации так называемого bridge:

keiz@dv6:~$ sudo apt-get install bridge-utils

keiz@dv6:~$ sudo nano /etc/network/interfaces

auto br0

iface br0 inet static

address 10.10.10.2

network 10.10.0.0

netmask 255.255.255.0

broadcast 10.10.0.254

gateway 10.10.10.1

dns-nameservers 192.168.1.9

bridge_ports eth0

bridge_fd 9

bridge_hello 2

bridge_maxage 12

bridge_stp off

Сохраняю внесенные изменения и перезапускаю сетевую подсистему:

keiz@dv6:~$ sudo /etc/init.d/networking restart

Далее через команду ifconfig проверяем, что все сетевые интерфейс поднялись и им присвоены определенные адреса обозначенные в конфигурационном файле выше.

Теперь для полного завершения советую перезапустить систему:

keiz@dv6:~$ sudo reboot

После того как система перезагрузилась создадим первую виртуальную машину.

keiz@dv6:~$ apt-cache search virt-install

virtinst — Programs to create and clone virtual machines

keiz@dv6:~$ apt-cache search virt-viewer

virt-viewer — Displaying the graphical console of a virtual machine

keiz@dv6:~$ sudo apt-get install virtinst virt-viewer -y

Далее мне понадобится дистрибутив который я хочу сделать гостевым, пусть будет — ubuntu 12.04.5 server amd64, его я скачал с официального сайта.

Далее формирую настройки гостевой системы с применением дистрибутива Ubuntu 12.04.5 Server:

keiz@dv6:~$ sudo virt-install -n UServer -r 1024 -f /var/lib/libvirt/images/server.img -s 10 -c /var/lib/libvirt/images/ubuntu-12.04.5-server-amd64.iso --accelerate --os-type=linux --os-variant=generic26 -v --vnc -w bridge:br0

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

-n Userver — имя ВМ;

-r 1024 — выделяемый объем ОЗУ для нее;

-f server.img — файл, являющийся виртуальный жестким диском для гостевой ОС;

-s 10 — объем этого диска в гигабайтах;

-c ubuntu-12.04.5-server-amd64.iso — образ дистрибутива гостевой ОС, подключаемый как виртуальный cdrom;

--accelerate --os-type=linux --os-variant=generic26 -v — ускоряем, оптимизируем ВМ для конкретной гостевой ОС и задействуем аппаратные возможности виртуализации;

--vnc — запускаем для ВМ vnc-сервер;

-w bridge:br0 — указываем использовать сетевой мост.

Если в процессе создания VM в консоли содержится следующий текст, то виртуальная машина запустилась:

Начинается установка…

Создание файла хранилища server.im | 10 GB 00:00

Создание домена… | 0 B 00:00

Не удалось открыть дисплей:

Run ‘virt-viewer —help’ to see a full list of available command line options

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

Проверяю, какие виртуальные машины сейчас запущены:

keiz@dv6:~$ sudo virsh -c qemu:///system list

ID Имя Статус

———————————-

4 UServer работает

также можно подключаться к сервису libvirt, запущенному на другом хосте, введя в терминале: (предварительно требуется настроить авторизацию по ключам, т. к. соединение выполняется через SSH)

keiz@dv6:~$ virt-manager -c qemu+ssh://dv6/system

Теперь, т. к. в процессе создания данной машины я указал что поднять для нее VNC котором отображается экран данной виртуальной машины), то попробуем подключиться к ней через данное соединение на адрес 127.0.0.1 и стандартный порт 5900

keiz@dv6:~$ sudo netstat -tulpn | grep :5900

tcp 0 0 127.0.0.1:5900 0.0.0.0:* LISTEN 16988/kvm

, для этого воспользуемся описание как поднять VNC сервер на Ubuntu 12.04.5 Desktop следующей заметки:

установим в систему пакет:

keiz@dv6:~$ sudo apt-get install xtightvncviewer

если же Вы подключены к системе через putty то запустить сессию у Вас не получится:

keiz@dv6:~$ vncviewer 127.0.0.1:0

Error: Can’t open display:

Если же это как у меня Desktop версия хостовой системы с развернутым по заметке выше qemu, то при открытой консоли (Ctrl + Alt + T) и введенной команде vncviewer 127.0.0.1:0 у Вас откроется экран и первое что вы увидите внутри это мастер выбора языка для устанавливаемой операционной системы.

Но получается я могу подключаться к KVM только локально, а чтобы это можно было делать из любого места, нужно когда создаю новую VM указать что VNC работает без привязки к какому либо сетевому интерфейсу:

keiz@dv6:~$ sudo virsh -c qemu:///system destroy UServer

Домен UServer разрушен

keiz@dv6:~$ sudo virsh -c qemu:///system undefine UServer

Определение домена UServer удалено

Создаю заново VM:

keiz@dv6:~$ sudo virt-install -n UServer -r 1024 -f /var/lib/libvirt/images/server.img -s 10 -c /var/lib/libvirt/images/ubuntu-12.04.5-server-amd64.iso --accelerate --os-type=linux --os-variant=generic26 --graphics vnc,listen=0.0.0.0 -w bridge:br0 -v

Начинается установка…

Создание домена… | 0 B 00:00

Не удалось открыть дисплей:

Run ‘virt-viewer —help’ to see a full list of available command line options

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

keiz@dv6:~$ sudo netstat -tulpn | grep :5900

tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 24421/kvm

Теперь уже можно будет подключиться к KVM из любого места в сети.

А если же в качестве серверной части используется Ubuntu 12.04.5 Server amd64 то чтобы подключиться к консоли создаваемой виртуальной машины поступим следующим образом, к примеру с рабочей системы Windows 7 (Профессиональная) . Устанавливаем клиент VNC = UltraVNC

http://www.uvnc.eu/download/1205/UltraVNC_1_2_05_X64_Setup.exe

ставлю только один компонент — UltraVNC Viewer

Запускаю его:

Пуск — Все программы — UltraVNC — UltraVNC Viewer

VNC Server:192.168.1.48:0

, где 192.168.1.48это IP адрес KVM системы (HP dv6-3080er)

в случае успеха соединения — вы должны будете увидеть ниже представленный экран:

Создаваемая виртуальная машина в QEMU KVM на Ubuntu 12.04.5

Дальше ставим систему, как будто сидим перед нею или как при использовании VirtualBox,ESXi, но по мне удобнее работать всё-так и ESXiмое мнение возможностей больше, плюс к тому ж имею некоторый опыт который приобретался в различных компаниях где я работал и самостоятельные наработки тоже играют свою роль. А вот Virtualbox хорош при отладке, настройке, проработки тем которые уже после можно переносить с тестового окружения в боевое (на ESXi).

Чтобы управлять с рабочего стола сидя за основной системой Ubuntu 12.04.5 Desktop (рабочее окружение Gnome Classic) можно использовать GUIориентированную оснастку (в репозитариях версия: 0.9.1):

keiz@dv6:~$ apt-cache search virt-manager

virt-manager — desktop application for managing virtual machines

keiz@dv6:~$ sudo apt-get install virt-manager -y

Запускаю оснастку:

Alt + F2и набираю: virt-manager

либо

Alt + F1 → Приложения — Системные утилиты — Менеджер виртуальных машин

и посредством данного менеджера можно создавать VMдобавлять новые диски,настраивать сеть,смотреть нагрузку создаваемую ими на хостовую систему,клонировать,создавать новые VM да и много чего разного.

На заметку: если через оснастку зашли внутри виртуальной машины то чтобы вернуться в хостовую систему следует нажать сочетание клавиш: Ctrl + Alt

На заметку: в OpenSUSE 13.2 версия утилиты virt-manager уже 1.0.1 и там возможностей больше (к примеру есть функцию из GUI создавать snapshot), а вот в Ubuntu 12.04 такой функции почему-то, в ручную ставя deb пакеты из Ubuntu 14.04.2 всего лишь поднимаю версию до 0.9.5. Увы.

Вот как-то так, можно использовать обычную Ubuntu систему как небольшой отладчик конфигураций и проработка решений перед внедрение в боевую систему. Конечно же существует много разновидностей использования виртуализации к примеру: VirtualBox,Vmware Workstation, ESXi так что выбор за вами. В последующих заметках я буду ссылаться на эту заметку и развивать ее. А пока собственно все, удачи с уважением автор блога — ekzorchik.

2 комментария

  1. самый лучший и подробный рассказ по установке qwemu так еще и с установкой и настройкой ubuntu.

Leave a Reply

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

20 − тринадцать =