Используем KVM для создания виртуальных машин на сервере. Установка виртуальной машины Qemu-KVM на домашний ПК с Linux

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

Почему ? Эта операционная система мне близка и понятна, так что при выборе дистрибутива мучений, терзаний и метаний испытано не было. Особых преимуществ перед Red Hat Enterprise Linux у него нет, но было принято решение работать со знакомой системой.

Если вы планируете самостоятельно развернуть инфраструктуру, используя аналогичные технологии, я бы посоветовал взять именно RHEL: благодаря хорошей документации и хорошо написаным прикладным программам это будет если не на порядок, то уж точно раза в два проще, а благодаря развитой системе сертификации без особого труда можно будет найти некоторое количество специалистов, на должном уровне знакомых в данной ОС.

Мы же, повторюсь, решили использовать Debian Squeeze с набором пакетов из Sid/Experimental и некоторыми пакетами, бэкпортированными и собранными с нашими патчами.
В планах имеется публикация репозитория с пакетами.

При выборе технологии виртуализации рассматривались два варианта - Xen и KVM.

Также во внимание принимался факт наличия огромного количества разработчиков, хостеров, комерческих решений именно на базе Xen - тем интереснее было провести в жизнь решение именно на базе KVM.

Основной же причиной, по которой мы решили использовать именно KVM, является необходимость запуска виртуальных машин с FreeBSD и, в перспективе, MS Windows.

Для управления виртуальными машинами оказалось чрезвычайно удобно использовать и продукты, использующие ее API: virsh , virt-manager , virt-install , пр.

Это система, которая хранит настройки виртуальных машин, управляет ими, ведёт по ним статистику, следит за тем, чтобы при старте у виртуальной машины поднимался интерфейс, подключает устройства к машине - в общем, выполняет кучу полезной работы и еще немножко сверх того.

Разумеется, решение не идеально. Из минусов следует назвать:

  • Абсолютно невменяемые сообщения об ошибках.
  • Невозможность изменять часть конфигурации виртуальной машины на лету, хотя QMP (QEMU Monitor Protocol) это вполне позволяет.
  • Иногда к libvirtd по непонятной причине невозможно подключиться - он перестаёт реагировать на внешние события.

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

В KVM ничего такого не было до появления механизма распределения ресурсов ядра . Как обычно в Linux, доступ к этим функциям был реализован посредством специальной файловой системы cgroup , в которой при помощи обычных системных вызовов write() можно было добавить процесс в группу, назначить ему его вес в попугаях, указать ядро, на котором он будет работать, указать пропускную способность диска, которую этот процесс может использовать, или, опять же, назначить ему вес.

Профит в том, что всё это реализуется внутри ядра, и использовать это можно не только для сервера, но и для десктопа (что и использовали в известном «The ~200 Line Linux Kernel Patch That Does Wonders »). И на мой взгляд, это одно из самых значительных изменений в ветке 2.6, не считая любимого #12309 , а не запиливание очередной файловой системы. Ну, разве что, кроме POHMELFS (но чисто из-за названия).

Отношение к этой библиотеке-утилите у меня весьма неоднозначное.

С одной стороны это выглядит примерно так:

И ещё эту штуку чертовски сложно собрать из исходников и тем более в пакет: иногда мне кажется, что Linux From Scratch собрать с нуля несколько проще.

С другой стороны - очень мощная штука, которая позволяет создавать образы для виртуальных машин, модифицировать их, ужимать, ставить grub, модифицировать таблицу разделов, управлять конфигурационными файлами, переносить «железные» машины в виртуальную среду, переносить виртуальные машины с одного образа на другой, переносить виртуальные машины из образа на железо и, честно говоря, тут меня фантазия немного подводит. Ах, да: ещё можно запустить демон внутри виртуальной машины Linux и получить доступ к данным виртуальной машины вживую, и всё это делать на shell, python, perl, java, ocaml. Это краткий и далеко не полный список того, что можно сделать с .

Интересно, что большая часть кода в генерируется в момент сборки, равно как и документация к проекту. Очень широко используется ocaml, perl. Сам код пишется на C, который потом оборачивается в OCaml, и повторяющиеся куски кода генерируются сами. Работа с образами осуществляется путём запуска специального сервисного образа (supermin appliance), в который через канал внутрь него отправляются команды. Внутри этого образа содержится некоторый rescue набор утилит, таких как parted, mkfs и прочих полезных в хозяйстве системного администратора.

Я с недавнего времени его даже дома стал использовать, когда выковыривал из образа nandroid нужные мне данные. Но для этого требуется ядро с поддержкой yaffs.

Прочее

Ниже приведено ещё несколько интересных ссылок на описание использованных пограммных средств - почитать и поизучать самостоятельно, если интересно. Например,

Мне лично проще всего думать о KVM (Kernel-based Virtual Machine), как о таком уровне абстракции над технологиями хардверной виртуализации Intel VT-x и AMD-V. Берем машину с процессором, поддерживающим одну из этих технологий, ставим на эту машину Linux, в Linux’е устанавливаем KVM, в результате получаем возможность создавать виртуалки. Так примерно и работают облачные хостинги, например, Amazon Web Services . Наряду с KVM иногда также используется и Xen, но обсуждение этой технологии уже выходит за рамки данного поста. В отличие от технологий контейнерной виртуализации, например, того же Docker , KVM позволяет запускать в качестве гостевой системы любую ОС, но при этом имеет и бо льшие накладные расходы на виртуализацию.

Примечание: Описанные ниже действия были проверены мной на Ubuntu Linux 14.04, но по идее будут во многом справедливы как для других версий Ubuntu, так и других дистрибутивов Linux. Все должно работать как на десктопе, так и на сервере, доступ к которому осуществляется по SSH.

Установка KVM

Проверяем, поддерживается ли Intel VT-x или AMD-V нашим процессором:

grep -E "(vmx|svm)" / proc/ cpuinfo

Если что-то нагреполось, значит поддерживается, и можно действовать дальше.

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

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Что где принято хранить:

  • /var/lib/libvirt/boot/ — ISO-образы для установки гостевых систем;
  • /var/lib/libvirt/images/ — образы жестких дисков гостевых систем;
  • /var/log/libvirt/ — тут следует искать все логи;
  • /etc/libvirt/ — каталог с файлами конфигурации;

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

Создание первой виртуалки

В качестве гостевой системы я выбрал FreeBSD. Качаем ISO-образ системы:

cd / var/ lib/ libvirt/ boot/
sudo wget http:// ftp.freebsd.org/ path/ to/ some-freebsd-disk.iso

Управление виртуальными машинами в большинстве случаев производится при помощи утилиты virsh:

sudo virsh --help

Перед запуском виртуалки нам понадобится собрать кое-какие дополнительные сведения.

Смотрим список доступных сетей:

sudo virsh net-list

Просмотр информации о конкретной сети (с именем default):

sudo virsh net-info default

Смотрим список доступных оптимизаций для гостевых ОС:

sudo virt-install --os-variant list

Итак, теперь создаем виртуальную машину с 1 CPU, 1 Гб RAM и 32 Гб места на диске, подключенную к сети default:

sudo virt-install \
--virt-type =kvm \
--name freebsd10 \
--ram 1024 \
--vcpus =1 \
--os-variant =freebsd8 \
--hvm \
--cdrom =/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--network network =default,model =virtio \
--graphics vnc \
--disk path =/ var/ lib/ libvirt/ images/ freebsd10.img,size =32 ,bus =virtio

Вы можете увидеть:

WARNING Unable to connect to graphical console: virt-viewer not
installed. Please install the "virt-viewer" package.

Domain installation still in progress. You can reconnect to the console
to complete the installation process.

Это нормально, так и должно быть.

Затем смотрим свойства виртуалки в формате XML:

sudo virsh dumpxml freebsd10

Тут приводится наиболее полная информация. В том числе есть, к примеру, и MAC-адрес, который понадобятся нам далее. Пока что находим информацию о VNC. В моем случае:

С помощью любимого клиента (я лично пользуюсь Rammina) заходим по VNC , при необходимости используя SSH port forwarding. Попадаем прямо в инстялятор FreeBSD. Дальше все как обычно — Next, Next, Next, получаем установленную систему.

Основные команды

Давайте теперь рассмотрим основные команды для работы с KVM.

Получение списка всех виртуалок:

sudo virsh list --all

Получение информации о конкретной виртуалке:

sudo virsh dominfo freebsd10

Запустить виртуалку:

sudo virsh start freebsd10

Остановить виртуалку:

sudo virsh shutdown freebsd10

Жестко прибить виртуалку (несмотря на название, это не удаление):

sudo virsh destroy freebsd10

Ребутнуть виртуалку:

sudo virsh reboot freebsd10

Склонировать виртуалку:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--file / var/ lib/ libvirt/ images/ freebsd10-clone.img

Включить/выключить автозапуск:

sudo virsh autostart freebsd10
sudo virsh autostart --disable freebsd10

Запуск virsh в диалоговом режиме (все команды в диалоговом режиме — как описано выше):

sudo virsh

Редактирование свойств виртуалки в XML, в том числе здесь можно изменить ограничение на количество памяти и тд:

sudo virsh edit freebsd10

Важно! Комментарии из отредактированного XML, к сожалению, удаляются.

Когда виртуалка остановлена, диск тоже можно ресайзить:

sudo qemu-img resize / var/ lib/ libvirt/ images/ freebsd10.img -2G
sudo qemu-img info / var/ lib/ libvirt/ images/ freebsd10.img

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

Резервное копирование и восстановление производятся довольно просто. Достаточно сохранить куда-то вывод dumpxml, а также образ диска, а потом восстановить их. На YouTube удалось найти видео с демонстрацией этого процесса, все и вправду несложно.

Настройки сети

Интересный вопрос — как определить, какой IP-адрес получила виртуалка после загрузки? В KVM это делается хитро. Я в итоге написал такой скрипт на Python :

#!/usr/bin/env python3

# virt-ip.py script
# (c) 2016 Aleksander Alekseev
# http://сайт/

import sys
import re
import os
import subprocess
from xml .etree import ElementTree

def eprint(str ) :
print (str , file = sys .stderr )

if len (sys .argv ) < 2 :
eprint("USAGE: " + sys .argv [ 0 ] + " " )
eprint("Example: " + sys .argv [ 0 ] + " freebsd10" )
sys .exit (1 )

if os .geteuid () != 0 :
eprint("ERROR: you shold be root" )
eprint("Hint: run `sudo " + sys .argv [ 0 ] + " ...`" ) ;
sys .exit (1 )

if subprocess .call ("which arping 2>&1 >/dev/null" , shell = True ) != 0 :
eprint("ERROR: arping not found" )
eprint("Hint: run `sudo apt-get install arping`" )
sys .exit (1 )

Domain = sys .argv [ 1 ]

if not re .match ("^*$" , domain) :
eprint("ERROR: invalid characters in domain name" )
sys .exit (1 )

Domout = subprocess .check_output ("virsh dumpxml " +domain+" || true" ,
shell = True )
domout = domout.decode ("utf-8" ) .strip ()

if domout == "" :
# error message already printed by dumpxml
sys .exit (1 )

Doc = ElementTree.fromstring (domout)

# 1. list all network interfaces
# 2. run `arping` on every interface in parallel
# 3. grep replies
cmd = "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 {} 2>&1 | " + \
"grep "bytes from") || true"

for child in doc.iter () :
if child.tag == "mac" :
macaddr = child.attrib [ "address" ]
macout = subprocess .check_output (cmd .format (macaddr) ,
shell = True )
print (macout.decode ("utf-8" ) )

Скрипт работает как с default сетью, так и с bridged сетью, настройку которой мы рассмотрим далее. Однако на практике куда удобнее настроить KVM так, чтобы он всегда назначал гостевым системам одни и те же IP-адреса. Для этого правим настройки сети:

sudo virsh net-edit default

… примерно таким образом:

>



>

После внесения этих правок


>

… и заменяем на что-то вроде:




>

Перезагружаем гостевую систему и проверяем, что она получила IP по DHCP от роутера. Если же вы хотите, чтобы гостевая система имела статический IP-адрес, это настраивается как обычно внутри самой гостевой системы.

Программа virt-manager

Вас также может заинтересовать программа virt-manager:

sudo apt-get install virt-manager
sudo usermod -a -G libvirtd USERNAME

Так выглядит ее главное окно:

Как видите, virt-manager представляет собой не только GUI для виртуалок, запущенных локально. С его помощью можно управлять виртуальными машинами, работающими и на других хостах, а также смотреть на красивые графички в реальном времени. Я лично нахожу особенно удобным в virt-manager то, что не нужно искать по конфигам, на каком порту крутится VNC конкретной гостевой системы. Просто находишь виртуалку в списке, делаешь двойной клик, и получаешь доступ к монитору.

Еще при помощи virt-manager очень удобно делать вещи, которые иначе потребовали бы трудоемкого редактирования XML-файлов и в некоторых случаях выполнения дополнительных команд. Например, переименование виртуальных машин, настройку CPU affinity и подобные вещи. Кстати, использование CPU affinity существенно снижает эффект шумных соседей и влияние виртуальных машин на хост-систему. По возможности используйте его всегда.

Если вы решите использовать KVM в качестве замены VirtualBox, примите во внимание, что хардверную виртуализацию они между собой поделить не смогут. Чтобы KVM заработал у вас на десктопе, вам не только придется остановить все виртуалки в VirtualBox и Vagrant , но и перезагрузить систему. Я лично нахожу KVM намного удобнее VirtualBox, как минимум, потому что он не требует выполнять команду sudo / sbin/ rcvboxdrv setup после каждого обновления ядра, адекватно работает c Unity , и вообще позволяет спрятать все окошки.

KVM или Kernel Virtual Module - это модуль виртуализации для ядра Linux, который позволяет превратить ваш компьютер в гипервизор для управления виртуальными машинами. Этот модуль работает на уровне ядра и поддерживает такие технологии аппаратного ускорения, как Intel VT и AMD SVM.

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

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

Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:

egrep -c "(vmx|svm)" /proc/cpuinfo

Если в результате будет возвращено 0 - значит ваш процессор не поддерживает аппаратной виртуализации, если 1 или больше - то вы можете использовать KVM на своей машине.

Теперь мы можем перейти к установке KVM, набор программ можно получить прямо из официальных репозиториев:

sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager cpu-checker

Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirtd, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:

sudo gpasswd -a ПОЛЬЗОВАТЕЛЬ libvirtd

После выполнения этой команды выйдите из системы и войдите снова. Далее, давайте проверим все ли правильно было установлено. Для этого используйте команду kvm-ok:

INFO: /dev/kvm exists
KVM acceleration can be used

Если все было сделано правильно, то вы увидите такое же сообщение.

Использование KVM в Ubuntu 16.04

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

Настройка моста в NetworkManager

Это можно сделать несколькими способами, например, можно использовать программу конфигурации сети NetworkManager.

Кликните по значку NetworkManager на панели, затем выберите изменить соединения , затем нажмите кнопку Добавить :

Затем выберите тип соединения Мост и нажмите Создать :

В открывшемся окне нажмите кнопку Добавить, чтобы связать наш мост с подключением к интернету:

Из списка выберите Ethernet и нажмите Создать :

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

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

Ручная настройка моста

Сначала нужно установить набор утилит bridge-utils если вы еще этого не сделали:

sudo apt install bridge-utils

Затем, с помощью программы brctl мы можем создать нужный нам мост. Для этого используйте такие команды:

sudo brctl addbr bridge0
$ sudo ip addr show
$ sudo addif bridge0 eth0

Первая команда добавляет устройство моста br0, с помощью второй вам нужно определить какой сетевой интерфейс является основным подключением к внешней сети, в моем случае это eth0. И с помощью последней команды мы связываем мост br0 с eth0.

Теперь необходимо добавить несколько строк в настройки сети чтобы все поднималось автоматически после старта системы. Для этого откройте файл /etc/network/interfaces и добавьте туда такие строки:

sudo gedit /etc/network/interfaces

loopback
auto lo bridge0
iface lo inet loopback
iface bridge0 inet dhcp
bridge_ports eth0

Когда настройки будут добавлены перезагрузите сеть:

sudo systemctl restart networking

Теперь установка и настройка KVM полностью завершена и вы можете создать свою первую виртуальную машину. После этого вы можете посмотреть доступные мосты с помощью команды:

Создание виртуальных машин KVM

Настройка KVM Ubuntu завершена и теперь мы можем перейти к ее использованию. Сначала давайте просмотрим список уже существующих виртуальных машин:

virsh -c qemu:///system list

Он пуст. Создать виртуальную машину можно через терминал или в графическом интерфейсе. Для создания через терминал используйте команду virt-install. Сначала перейдем в папку libvirt:

cd /var/lib/libvirt/boot/

Для установки CentOS команда будет выглядеть вот так:

sudo virt-install \
--virt-type=kvm \
--name centos7 \
--ram 2048 \
--vcpus=2 \
--os-variant=rhel7 \
--hvm \
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1511.iso \
--network=bridge=br0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2

Разберем подробнее что означают параметры этой команды:

  • virt-type - тип виртуализации, в нашем случае kvm;
  • name - имя новой машины;
  • ram - количество памяти в мегабайтах;
  • vcpus - количество ядер процессора;
  • os-variant - тип операционной системы;
  • cdrom - установочный образ системы;
  • network-bridge - сетевой мост, который мы настроили ранее;
  • graphics - способ получения доступа к графическому интерфейсу;
  • diskpath - адрес нового жесткого диска для этой виртуальной машины;

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

sudo virsh vncdisplay centos7

Теперь вы можете ввести полученные данные в вашем клиенте VNC и подключится к виртуальной машине даже удаленно. Для Debian команда будет немного отличаться, но все выглядит похожим образом:

Переходим в папку для образов:

cd /var/lib/libvirt/boot/

Можно скачать установочный образ из интернета если это необходимо:

sudo wget https://mirrors.kernel.org/debian-cd/current/amd64/iso-dvd/debian-8.5.0-amd64-DVD-1.iso

Затем создадим виртуальную машину:

sudo virt-install \
--virt-type=kvm \
--name=debina8 \
--ram=2048 \
--vcpus=2 \
--os-variant=debian8 \
--hvm \
--cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \
--network=bridge=bridge0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2

Теперь снова посмотрим список доступных машин:

virsh -c qemu:///system list

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

sudo virsh start имя_машины

Для остановки:

sudo virsh shutdown имя_машины

Для перевода в режим сна:

sudo virsh suspend имя_машины

Для перезагрузки:

sudo virsh reboot имя_машины

sudo virsh reset имя_машины

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

sudo virsh destroy имя_машины

Создание виртуальных машин в GUI\

Если у вас есть доступ к графическому интерфейсу то нет никакой необходимости использовать терминал, вы можете применить полноценный графический интерфейс менеджера виртуальных машин Virtual Manager. Программу можно запустить из главного меню:

Для создания новой машины кликните по иконке со значком монитора. Дальше вам будет необходимо выбрать образ ISO вашей системы. Также можно использовать реальный CD/DVD привод:

На следующем экране выберите количество памяти, которая будет доступна для виртуальной машины, а также количество ядер процессора:

На этом экране вам нужно выбрать размер жесткого диска, который будет доступен в вашей машине:

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

После этого машина будет готова к использованию и появится в списке. Вы можете запустить ее с помощью зеленого треугольника на панели инструментов менеджера.

Выводы

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

На завершение лекция от яндекса о том что такое виртуализация в Linux:

Как энтузиаст Linux, я проверяю очень много Open Source и Linux-приложений, а также дистрибутивы каждый день. В основном, я использую Oracle VirtualBox для тестирования и воспроизведения различных операционных систем. VirtualBox является популярным инструментом виртуализации для развертывания или тестирования различного рода дистрибутивов. Как и Oracle VirtualBox, Есть много продуктов для виртуализации, такие как , OpenVZ, KVM, Proxmox и т.д. Сегодня мы будем обсуждать QEMU.

QEMU это эмулятор и виртуализатор машин, который поставляется с открытым исходным кодом, который позволяет пользователям создавать и управлять виртуальными машинами внутри операционной системы.

При использовании в качестве машины, эмулятор QEMU может запускать операционку и программы, сделанные для одной машины, на другой машине (например, ваш собственный ПК). С помощью динамической трансляции, он достигает очень хорошую производительность.

При использовании в качестве виртуализатора, QEMU достигает очень похожей производительности, выполнив гостевой код непосредственно на главном процессоре. QEMU поддерживает виртуализацию при выполнении под гипервизором Xen или с помощью KVM модуля ядра в Linux.

QEMU имеет два режима работы:

Полная эмуляция системы: В этом режиме QEMU эмулирует полноценную систему (например ПК), включая процессор и различные периферийные устройства. Он может быть использован для запуска различных операционных систем без необходимости перезагрузки ПК или для отладки кода системы.
Эмуляция пользовательского режима: В этом режиме QEMU может запускать процессы Linux, скомпилированные для одного процессора на другом процессоре. Например, он может быть использован для запуска wine или для облегчения кросс-компиляции и кросс-отладки.

QEMU может работать без драйвера хоста ядра, и все же дает приемлемую производительность.

Установить QEMU в Ubuntu 16.04

В этом примере давайте посмотрим, как установить и настроить QEMU в Ubuntu 16.04 LTS, а также как создавать и управлять виртуальными машинами.

QEMU доступен по-умолчанию в репозиториях Ubuntu. Таким образом, мы можем установить его с инструментом Virt Manager, с помощью команды:

Sudo apt install qemu-kvm qemu qemu-system virt-manager virt-viewer libvirt-bin

После установки вышеуказанных пакетов, перезагрузите систему.

Создание виртуальных машин

Теперь, давайте создадим новую виртуальную машину.

Сначала нужно создать виртуальный образ жесткого диска для новой виртуальной машины. Например, давайте создадим образа жесткого диска размером 20GB.

Qemu-img create ubuntu.img 20G

Затем скачайте установочный образ сервера Ubuntu 15.04 с официального сайта.

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

Для 64bit систем

Qemu-system-x86_64 -hda ubuntu.img -boot d -cdrom /home/linuxthebest/Загрузки/ubuntu-15.04-server-i386.iso -m 1024

Для 32bit систем

Qemu-system-i386 -hda ubuntu.img -boot d -cdrom /home/linuxthebest/Загрузки/ubuntu-15.04-server-amd64.iso -m 1024

Где “/home/linuxthebest/Загрузки/ubuntu-15.04-server-i386.iso – это директория куда был скачан образ, а 1024 – размер выделенной оперативной памяти машине.

При загрузке появится экран установки, нажмите клавишу Enter и продолжайте установку как обычно.

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

Qemu -hda ubuntu.img -m 1024

Вот и все.

Не нравится командная строка? Создание и управление виртуальными машинами из командной строки, может быть немного трудно некоторым пользователям. Не беспокойтесь, мы можем также создавать виртуальные машины с помощью GUI инструмента под названием Virtual Machine Manager (Virt Manager) .

Если ранее не установили, то установить можно с помощью команды

Sudo apt install virt-manager qemu-system libvirt-bin

Создание и управление виртуальными машинами с помощью диспетчера Virt

Запустите Virtual Machine Manager

Sudo virt-manager

По умолчанию интерфейс Virt Manager, будет выглядеть как показано ниже.

Теперь мы создадим и установим Ubuntu 16.10 на виртуальную машину.

Для того, чтобы создать виртуальную машину, перейдите в Файл -> Новая виртуальная машина.

Выберите, какую вы хотите установить операционную систему.

Вы можете установить гостевую ОС с помощью локального образа ISO/CD-ROM, Сетевая установка, серверная PXE, или импортировать существующие образы дисков. Кроме того, вы можете выбрать архитектуру гостевой ОС из дополнительных параметров.

Выберите объем оперативной памяти и процессоров.

Введите свой размер виртуального жесткого диска. По умолчанию 8GB.

Введите свое имя гостевой ОС. И, выберите тип сети, из дополнительных параметров. И, наконец, нажмите кнопку Готово.

После нажатия на кнопку Готово, гостевая ОС начнет автоматически загружаться.

Вот и все. Теперь, установите гостевую ОС, так, как вы делаете это в обычной системе.

Я установил Ubuntu 16.10 в virt manager, и кстати там работает unity 8, по сравнению с virtualbox, в котором оно не работает, поэтому если вы хотите протестировать новое рабочее окружение, то можете установить virt manager и там запустить unity 8.


  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то