В связи с новым местом работы приходят и новые знания, т. е. В организации где я начал работать используются виртуальные машины развернутые с использованием QEMU, а так как я с этим не работал то для себя хочу проработать данный вопрос более подробно, чтобы уже на рабочем месте не быть новичком, а уже более сносно ориентироваться.
Сказано сделано.
И так у меня есть система которая будет выступать в качестве сервера — это мой домашний/рабочий ноутбук HP dv6-3080er Ubuntu 12.04.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 kvm-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)
в случае успеха соединения — вы должны будете увидеть ниже представленный экран:
Дальше ставим систему, как будто сидим перед нею или как при использовании 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.
самый лучший и подробный рассказ по установке qwemu так еще и с установкой и настройкой ubuntu.
Согласен с Гришей. Спасибо за отличное руководство:)