Как установить kvm и управлять виртуальными машинами в ubuntu

Step 2) Install KVM, Qemu, virt-manager & libvirtd daemon

The next step is to install KVM and associated packages. So, run the command:

$ sudo apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager

The command installs the following packages.

  • qemu-kvm –  This is the main KVM package that provides virtualization support.
  • libvirt – Includes the libvirtd daemon which supports creation and management of virtual machines.
  • libvirt-client – This package provides the virsh utility used for interacting with virtual machines.
  • virt-install – A utility that helps you to create virtual machines and install OS on those virtual machines from command line.
  • virt-viewer – A utility that displays the graphical view for the virtual machine.

Once installed, we need to confirm if the required kvm modules are loaded. Therefore, run the command:

$ lsmod | grep kvm

Additionally, confirm that the libvirtd daemon is running as follows.

$ sudo systemctl status libvirtd.service

Perfect! All the prerequisites are in place. Let’s now proceed and install a virtual machine.

DNS and DHCP Guests

libvirt uses dnsmasq to hand out IP addresses to guests that are configured to use dhcp. If on your host machine you add 192.168.122.1 (the default IP of your host in libvirt) as your first nameserver in /etc/resolv.conf, then you can do name resolution for your guests. dnsmasq is smart enough to use the other ‘nameserver’ entries in your /etc/resolv.conf for resolving non-libvirt addresses. For example, if your current /etc/resolv.conf is:

search example.com
nameserver 10.0.0.1

Change this to be:

search example.com
nameserver 192.168.122.1
nameserver 10.0.0.1

Now, if you have a virtual machine named ‘hardy-amd64’, after starting it, you can do:

$ host hardy-amd64
hardy-amd64 has address <IP address given by dnsmasq>

Note that when using ssh you may need to use a trailing ‘.’ after the hostname:

$ ssh hardy-amd64.

Finally, for this to work, your guest must send its hostname as part of the dhcp request. This is done automatically on many operating systems. For systems that do not send this automatically and use dhcp3, you can adjust the dhclient.conf file. For example, on Ubuntu 6.06 LTS (Dapper), adjust /etc/dhcp3/dhclient.conf to have:

send host-name "<your guest hostname here>";

IMPORTANT: Depending on your network configuration, your host’s /etc/resolv.conf file might be periodically overwritten. You can edit /etc/resolvconf/resolv.conf.d/head instead to prevent this. If that is not an option you will have to either adjust the dhcp server on your network to hand out the additional libvirt name server for your libvirt hosts, or adjust each host machine accordingly. As there are many possible configurations for host machines, users are encouraged to look at resolvconf and/or man interfaces.

Booting Over the Network Using PXE

The Ubuntu releases prior to Karmic (9.10) did not ship pxe binary ROM images. Install kvm-pxe package (from universe) in order to use kvm boot order=nc. Visit http://etherboot.org to learn more about network booting and downloading/creating the appropriate ROM images.

KVM and QEMU can emulate a number of network cards. ROM Files included in kvm-pxe are:

‘KVM Name’ nic,model=

‘Etherboot Identification’

‘Etherboot Filename’

‘KVM filename’

e1000

((e1000:e1000-0x1026 — ))

gpxe-0.9.3-e1000-0x1026.rom

pxe-e1000.bin

ne2k_pci (default)

ns8390:rtl8029 —

gpxe-0.9.3-rtl8029.rom

pxe-ne2k_pci.bin

pcnet

pxe-pcnet.bin

rtl8139

pxe-rtl8139.bin

virtio

pxe-virtio.bin

Other ROM files include:

‘KVM Name’ nic,model=

‘Etherboot Identification’

‘Etherboot Filename’

‘KVM filename’

i82551

pxe-i82551.bin

i82557b

pxe-i82557b.bin

i82559er

pxe-i82559er.bin

ne2k_isa

pxe-ne2k_isa.bin

smc91c111

pxe-smc91c111.bin

lance

pxe-lance.bin

mcf_fec

pxe-mcf_fec.bin

Copy the respective file to /usr/share/kvm and/or /usr/share/qemu.

1.7 Configuring the KVM Virtual System

Clicking Forward will display a screen seeking additional information about the installation process. The screen displayed and information required will depend on selections made in the preceding screen. For example, if a CD, DVD or ISO was selected, this screen will ask for the specific location of the ISO file or physical media device. This screen also attempts to identify the type and version of the guest operating system to be installed (for example the Windows version or Linux distribution) based on the installation media specified. If it is unable to do so, uncheck the Automatically detect from installation media / source option, type in the first few characters of the operating system name and select an option from the list of possible matches:

Figure 26-15

Once these settings are complete, click the Forward button to configure CPU and memory settings. The optimal settings will depend on the number of CPUs and amount of physical memory present in the host together with the requirements of other applications and virtual machines that will run in parallel with the new virtual machine:

You are reading a sample chapter from Ubuntu 20.04 Essentials. Buy the full book now in eBook ($14.99) or Print ($36.99) format. Includes 37 chapters. Learn more.

Preview  Buy eBook  Buy Print

Figure 26-16

On the next screen, options are available to create an image disk of a specified size, select a preexisting volume or to create a storage volume of a specified format (raw, vmdk, ISO etc). Unless you have a specific need to use a particular format (for example you might need to use vmdk to migrate to a VMware based virtualization environment at a later date) or need to use a dedicated disk or partition, it is generally adequate to simply specify a size on this screen:

Figure 26-17

If the default settings are used here, the virtual machine will use a storage volume within the default storage pool for the virtual disk drive. To make use of the custom “MyPool” storage pool created earlier in the chapter, enable the Select or create custom storage option before clicking on the Manage… button.

In the storage volume dialog, select the MyPool entry in the left hand panel, followed by the + button in the main panel to create a new storage volume:

You are reading a sample chapter from Ubuntu 20.04 Essentials. Buy the full book now in eBook ($14.99) or Print ($36.99) format. Includes 37 chapters. Learn more.

Preview  Buy eBook  Buy Print

Figure 26-18

Note that the + button located in the bottom left-hand corner of the dialog may also be used to create new storage pools as an alternative to using the Cockpit interface.

In the configuration screen (Figure 26-19), name the storage volume, select the volume size and click on the Finish button to create the volume and assign it to the virtual machine:

Figure 26-19

Once these settings are configured, select the new volume and click on the Choose Volume button. Click the Forward button once more. The final screen displays a summary of the configuration. Review the information displayed. Advanced options are also available to change the virtual network configuration for the guest as shown in Figure 26-20:

You are reading a sample chapter from Ubuntu 20.04 Essentials. Buy the full book now in eBook ($14.99) or Print ($36.99) format. Includes 37 chapters. Learn more.

Preview  Buy eBook  Buy Print

Figure 26-20

Добавление памяти и vCPU виртуальной машине KVM

В консоли KVM вы можете добавить или уменьшить ресурсы процессора и памяти, выделенные для ВМ двумя способами:

  • С помощью virsh
  • Через конфигурационный XML файл ВМ

Если виртуальная машина запущена, ее нужно остановить:

Domain test-centos is being shutdown

Теперь с помощью virsh изменим количество виртуальных процессоров до 6 (vCPU):

Где:

<vm name>

— имя машины

<vcpu_count>

— количество ядер процессора

Например:

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

“error: invalid argument: requested vcpus is greater than max allowable vcpus for the persistent domain: 6 > 4”

Мы не можем установить количество ядер процессора, больше, чем максимальное количество. Чтобы увеличить максимальное количество ядер ВМ, выполните команду:

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

Проверим количество процессоров в настройках ВМ: овленное количество процессоров:

<domain type='kvm'>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>6</vcpu>

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

Например:

Все по той же причине, сразу же вышла ошибка:

“error: invalid argument: cannot set memory higher than max memory.”

Увеличим максимальное значение памяти::

Теперь можно увеличить память ВМ.

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

Также вы можете изменить ресурсы ВМ KVM через ее конфигурационный XML файл. Можно изменить файл в режиме онлайн или же сделав бэкап XML файла ВМ, изменить его и применить к виртуальной машине.

Отредактируем XML файл ВМ в онлайн режиме:

В открывшемся редакторе vi внесите изменения, нажав кнопку “Insert”.

Измените блок:

<domain type='kvm'>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit='KiB'>6291456</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>6</vcpu>
<os>

Например, зададим для ВМ 2 ядра и 1Гб памяти:

Учитывайие что память указывается в килобайтах.

Сохраните изменения в файле и перезапустите ВМ:

Проверьте настройки ВМ:

Тоже самое можно сделать, сделав бэкап XML файла:

Измените нужные вам параметры, сохраните файл и примените к виртуальной машине:

Domain test-centos is being shutdown
Domain test-centos defined from /root/test.xml
Domain test-centos started

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

Шаг 2. Установите QEMU/KVM на Ubuntu 20.04/22.04.

Затем обновите списки пакетов и репозитории следующим образом.

$ sudo apt update

После этого установите QEMU/KVM вместе с другими пакетами виртуализации следующим образом:

$ sudo apt install qemu-kvm virt-manager virtinst libvirt-clients bridge-utils libvirt-daemon-system -y

Давайте рассмотрим, какую роль играет каждый из этих пакетов.

  • qemu-kvm — это эмулятор с открытым исходным кодом, который эмулирует аппаратные ресурсы компьютера.
  • virt-manager — графический интерфейс на основе Qt для создания и управления виртуальными машинами с помощью демона libvirt.
  • virtinst — набор утилит командной строки для создания и внесения изменений в виртуальные машины.
  • libvirt-clients — API и клиентские библиотеки для управления виртуальными машинами из командной строки.
  • bridge-utils — набор инструментов командной строки для управления мостовыми устройствами.
  • libvirt-daemon-system — предоставляет файлы конфигурации, необходимые для запуска службы виртуализации.

На данный момент мы установили QEMU и все необходимые пакеты виртуализации. Следующим шагом является запуск и включение демона виртуализации libvirtd.

Итак, выполните следующие команды:

$ sudo systemctl enable --now libvirtd
$ sudo systemctl start libvirtd

Затем проверьте, работает ли служба виртуализации, как показано.

$ sudo systemctl status libvirtd

Судя по выходным данным выше, демон libvirtd запущен и работает, как и ожидалось. Кроме того, добавьте пользователя, вошедшего в систему, в группы kvm и libvirt, как показано ниже.

$ sudo usermod -aG kvm $USER
$ sudo usermod -aG libvirt $USER

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

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

1
2
3
4
5
6

$sudo lvcreate-L10G-nvg_sata_test_root vg_sata

$sudo lvcreate-L20G-nvg_sata_test_home vg_sata

$sudo lvcreate-L10G-nvg_sata_test_opt vg_sata

$sudo lvcreate-L10G-nvg_sata_test_var vg_sata

$sudo lvcreate-L5G-nvg_sata_test_tmp vg_sata

$sudo lvcreate-L2G-nvg_sata_test_swap vg_sata

Запускаем утилиту screen и в новом скрине создаем новую виртуальную машину следующей командой:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

$sudo virt-install\

—connect qemu///system \

—name=test.tech-geek.local\

—ram2048\

—cpu host\

—vcpus1\

—disk path=/dev/vg_sata/vg_sata_test_root,format=raw,bus=virtio,cache=none\

—cdrom/var/lib/libvirt/images/debian-9.5.0-amd64-netinst.iso\

—description=»debian-test.tech-geek.local»\

—graphics vnc,listen=0.0.0.0,keymap=us,password=12345\

—os-type=linux\

—os-variant=debiansqueeze\

—network bridgebr0\

—video=vga\

—hvm\

—accelerate

Отсоединяем на время скрин комбинацией Ctrl + A + D и подключаем созданные нами логические тома к машине нехитрой манипуляцией. Для каждого логического тома новой ВМ создаем такой файл XML.

vg_sata_test_home.xml

1
2
3
4
5

<disk type=’block’device=’disk’>

<driver name=’qemu’type=’raw’cache=’none’io=’native’/>

<source dev=’/dev/vg_sata/vg_sata_test_home’/>

<backingStore/>

<target dev=’vdb’bus=’virtio’/></disk>

В теге source указываем местоположение логического тома на гипервизоре, в теге target — название диска (vdb, vdc и так далее). Повторяем для каждого логического тома, кроме root (он уже подключен как vda и активен). После того как все файлы будут созданы, подключим все тома к виртуальной машине:

1 $sudo virsh attach-device—config<имяновойВМ>vg_sata_<имяВМ>_<имяраздела>.xml

Если все сделано правильно, на экране появится сообщение Device attached successfully.

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

1
2

$sudo netstat-tulnp|grep qemu

$sudo virsh vncdisplay<имяновойВМ>

соответствует порту 5900, а
1 — порту 5901.

При установке гостевой системы делаем ручную разметку диска с файловой системой ext4. Каждому разделу выделен свой диск vdX. Загрузчик прописываем в VDA.

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

Для любителей GUI тоже есть приятная новость. Если ты предпочитаешь работать в «Иксах», то тебе пригодится утилита virt-manager. Ниже я опишу работу с ней в Debian 9 и KDE.

Устанавливаем пакет. После установки запускаем утилиту.

1 $sudo apt-get install-yvirt-manager

Подключаемся к гипервизору по IP, вводим логин и пароль пользователя, который добавлен в группу libvirt на гипервизоре. Связь установлена. Теперь приступаем к созданию и настройке виртуальной машины. После подключения гипервизора кликаем правой кнопкой и выбираем «Добавить новое». Появится окно менеджера создания виртуальных машин.

В окне выбираем «Установка с локального образа» и нажимаем «Далее».

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

Выбираем «Использовать ISO-образ» и находим его на гипервизоре. Нажимаем «Выбрать образ» и «Далее».

Выбор локального образа

Выставляем параметры ЦП и памяти, жмем «Далее».

Параметры ЦП и памяти

Указываем носитель для системы — логический том LVM. Выбираем уже имеющийся пул
vg_sata и нажимаем значок «плюс» (добавить). Создаем новый корневой раздел
vg_sata_<имяВМ>_root и указываем объем носителя. Жмем «Финиш».

Указываем том LVM как носитель

В последнем окне проверяем настройки сети: ВМ должна использовать сетевой мост. Ставим галку «Конфигурация машины до установки ОС». Жмем «Финиш».

Перепроверка настроек

В появившемся окне добавляем остальные созданные логические тома к ВМ через добавление новых девайсов.

Добавление логических томов к ВМ

После того как все тома будут подключены, нажимаем кнопку «Начать установку» и устанавливаем ОС на новую ВМ.

Creating a network bridge on the host

You can set up your system to boot with a bridge. This works well, but does disable network manager so may not be best for desktops. You can also create a bridge on demand. This allows network manager to stay, but you have to remember to start the bridge before starting the VMs which use it. (Autostarted VMs can not use this)

Creating a bridge on demand

  • You can do this from the command line or a script. Details are covers on the Network Connection Bridge page.

  • You can use Network Manger to set up your bridge. This is covered in a website at ask.xmodulo.com/configure-linux-bridge-network-manager-ubuntu.html.

Creating a persistent bridge

Install the bridge-utils package:

sudo apt-get install bridge-utils

We are going to change the network configuration. This assumes you are not using NetworkManager to control your network cards (eth0 in the example’s case). If you are using NetworkManager, and want to continue to do so, do not use this method. Modifying /etc/network/interfaces will disable Network Manager on the next reboot.

If you are on a remote connection, and so cannot stop networking, go ahead with the following commands, and use sudo invoke-rc.d networking restart or sudo reboot at the end. If you make a mistake, though, it won’t come back up.

To set up a bridge interface, edit /etc/network/interfaces and either comment or replace the existing config with (replace with the values for your network):

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
        address 192.168.0.10
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 192.168.0.5 8.8.8.8
        dns-search example.com
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

Note: the lines auto eth0 and iface eth0 inet manual are not in the file. This is because br0 will bring up the components assigned to it.

bridge_stp off is a setting for spanning tree. If you have a possibility for network looks, you may want to turn this on.

bridge_fd 0 turns off all forwarding delay. If you do not know what this is, you probably do not need it.

bridge_maxwait 0 is how long the system will wait for the Ethernet ports to come up. Zero is no wait.

For DHCP, use;

auto lo
iface lo inet loopback

auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

This will create a virtual interface br0. You can have multiple bridges, and some need not have any actual network card assigned.

Now restart networking:

sudo /etc/init.d/networking restart

Or

sudo reboot

If your VM host «freezes» for a few seconds after starting or stopping a KVM guest when using bridged networking, it is because a Linux bridge will take the hardware address of the lowest numbered interface out of all of the connected interface. To work around this, add the following to your bridge configuration:

post-up ip link set br0 address f4:6d:04:08:f1:5f

and replace f4:6d:04:08:f1:5f with the hardware address of a physical ethernet adapter which will always be part of the bridge.

Изменение параметров виртуальной машины

Управление оперативной памятью (добавление/удаление)

Вы можете нагорячую изменять память в VM, не превышая размер, заданный при установке (параметр ram). Например, если вы создали VM с 1 ГБ памяти, вы можете динамически уменьшить этот объем не выключая VM.
Если вы хотите получить объем памяти больший, чем указывали при установке VM, то VM придется сначала отключить.

Начнем с первого варианта. Уменьшим объем памяти нагорячую с 1Гб до 512 Мб.

  1. Посмотрим какой максимум памяти на машине, выполнив или
    У меня так:
  2. Устанавливаем необходимое значение памяти в KB ( 512 х 1024 = 524288 ):
  3. Заглядываем в и видим, что максимальный объем памяти остался прежним, а используемый изменился на 524288.

Второй вариант. Увеличение объема памяти сверх установленного при создании VM.

  1. Для этого необходимо будет изменить файл конфигурации, а сначала надо погасить машину:
  2. Правим файл конфигурации. Выполняем:
    и изменяем значение (в KB)
    У кого-то это будет:

    <memory>2097152</memory>

    У меня это:

    <memory unit='KiB'>2097152</memory>
    <currentMemory unit='KiB'>2097152</currentMemory>

    Если у вас так же, то 4й шаг не понадобится.Для тех, кто не работал с vi: Чтобы начать править файл нажмите кнопку Insert, когда внесете необходимые изменения нажимайте Esc, а затем ZZ (две большие Z). Язык должен стоять английский, иначе редактор команду не поймет.

  3. Перезапускаем виртуальную машину из обновленного файла конфигурации:, либо

Проверяем память. Max.memory должна измениться, а Used Memory могла остаться прежней:
Если все изменилось – прекрасно. Если нет, то теперь выполняем: и у вас тоже все прекрасно.

Изменение количества cpu

  1. Чтобы изменить количество виртуальных процессоров необходимо отредактировать файл конфигурации VM. Для этого сначала гасим нашу машину, потом открываем файл на редактирование:
  2. Далее изменяем количество в тэгах vcpu:
  3. Перезапускаем виртуальную машину из обновленного файла конфигурации: или

Управление объемом диска VM (добавление диска к VM)

Мы всегда можем добавить дополнительные “диски” к своей виртуальной машине на KVM. Давайте добавим еще 10 Гб дискового пространства.

  1. Создадим пустой файл на 10 Гб (естественно, путь выбираем свой):
  2. Выключаем VM
  3. Добавим дополнительную запись для «диска» в XML-файл виртуальной машины. Удобно скопировать блок с описанием уже существующего диска и отредактировать значения в тегах target и address:
    Например у нас было такое описание диска:

     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1.img'/>
     <target dev='vda' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
    function='0x0'/>
     </disk>

    Мы добавляем после него еще вот такой блок для подключения нашего нового диска:

     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1-add.img'/>
     <target dev='vdb' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
    function='0x0'/>
     </disk>

    В тэге target мы изменили имя устройства. Оно должно следовать за первым в алфавитном порядке (первый наш диск vda, второй будет vdb).
    В тэге address необходимо использовать уникальный адрес слота (здесь это slot=’0x06′). Проверяйте адрес слота ВСЕХ устройств, а не только дисков.

  4. Перезапустим нашу виртуальную машину с обновленным конфигом XML:, а может

Этап 3: Настройка сетевого моста

Один из способов получения доступа из виртуальной машины к внешним сетям — мост, встроенный в ваш хост Linux. Это называется сетевой мост. Ниже описано, как создать и настроить сетевой мост Linux br0 для мостового соединения с KVM.
Сначала установим необходимый для создания сетевого моста пакет.

$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0

#auto eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet dhcp
       bridge_ports eth0
       bridge_stp off
       bridge_fd 0
       bridge_maxwait 0

Здесь предполагается, что главным сетевым интерфейсом, который имеет доступ к внешним сетям, является eth0. Кроме того, предполагается, что eth0 получает IP-адреса посредством DHCP

Обратите внимание, что в /etc/network/interface нет настроек для eth0, так как он подключается к сетевому мосту br0.
Перезагрузите сетевые службы и убедитесь, что сетевой мост настроен успешно. В этом случае br0 должен присвоить сетевой адрес интерфейса eth0, в свою очередь интерфейсу eth0 не должно быть присвоено сетевого адреса.

$ sudo /etc/init.d/networking restart
$ ifconfig

Настройка демона libvirt для управления виртуальными машинами под управлением KVM (на примере Debian Stretch)

Проверим наличие аппаратной поддержки виртуализации:

$ egrep -c '(vmx|svm)' /proc/cpuinfo

Устанавливаем систему виртуализации qemu с поддержкой KVM и демон libvirt для управления виртуальными машинами, работающими под управлением KVM:

# apt-get install qemu-kvm libvirt-daemon-system

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

# usermod -aG libvirt stupin

Пользователь получит доступ к Unix-сокету /var/run/libvirt/libvirt-sock

Установим netcat из OpenBSD, поддерживающий опцию -U для подключения к Unix-сокету. Это нужно для перенаправления подключения от SSH-клиента в Unix-сокет libvirt:

# apt-get install netcat-openbsd

Осталось включить и запустить демона:

# systemctl enable libvirtd
# systemctl start libvirtd

Графическое управление

Чтобы сделать некое подобие «Диспетчера Hyper-V» (Графическую консоль для управления виртуальными машинами) устанавливаем следующий пакет:

# apt-get install virt-manager

Открываем Virt-Manager. Файл>Добавить соединение>

  • Локальная машина
  • Удаленный сервер
    • QEMU/KVM-Connect to remove host over SSH
      • вводим имя пользователя
      • вводим IP
      • ставим галочку подключаться автоматически

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

  1. Нажимаем на кнопку «Создать виртуальную машину»
  2. Выбираем метод установки — локальный/ISO
  3. Выбираем ISO/CD и тип ОС (с помощью автодополнения)
  4. Выбираем количество ОЗУ и процессоров
  5. Создаем виртуальный жесткий диск
  6. Вводим название и выбираем сеть

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

Выберите машину, нажмите на лампу…

Настройка жесткого диска

…Диск-1> Дополнительные параметры>Шина диска

Тип диска:

  • IDE — рекомендуется для Windows XP и младше
  • SATA — для 7 и старше

Включить меню загрузки> ставите очередность.

Иначе вы просто не загрузитесь с CD/ISO.

запускать при старте системы

Подключение ISO

…Выберите IDE CDROM> Browse.

В окне «Выберите том хранилища» нажмите на плюс (добавить пул), выберите тип dir-каталог в файловой системе и укажите папку с iso-образами.

Выберите образ из пула и нажмите на кнопку «Выбор тома».

Примечание: В качестве каталога можно указать папку прописанную в /etc/openssh — так вы легко сможете закидывать и подключать ISO-образы

Сеть

Важно обратить внимание, во избежание ошибки при запуске виртуальной машины «сеть «default» не активна» на настройку:
После создания виртуальной машины в virt-manager Правка — Свойства подключения — вкладка Виртуальные сети — на сети default поставить галочку «Автозапуск: При загрузке», применить

NAT

NAT — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса одной сети, в адрес другой сети.

Т.е. у вас в локальной сети сеть 192.168.0.x., а у виртуальных машин будет 192.168.1.x. И NAT позволит вам общатся между сетью 0.x и 1.x.

По-умолчанию в virt-manager уже есть NAT-интерфейс, но если вы его случайно удалили или хотите создать новый, то это делается так:

  • откройте Правка>Свойства подключения>Виртуальные сети>+
  • введите название сети
  • режим: NAT
  • Forward to: любое физическое устройство

Можете так же настроить адресацию IPv4 и DHCP-сервер (они настраиваются автоматически).

И в настройках виртуальной машины выберите данный интерфейс.

Мост

Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать сетевой мост.

Примечание: При этом управление сетью перейдет к etcnet и NetworkManager уже будет не нужен, его и его апплет можно удалить: apt-get remove NetworkManager NetworkManager-applet-gtk. В трее, соответственно, иконка статуса сети исчезнет.

  • создать бридж
  • в virt-manager в свойствах виртуальной машины, в свойствах сетевого интерфейса выбираем
    • устройство моста
    • вручную вводим имя нашего моста — vmbr0

Примечание: Попробуйте запустить LiveCD — система должна получить по DHCP IP адрес и иметь доступ в LAN и интернет

Проброс портов

Из переписки:

Настроил тут проброс порта в QEMU-виртуалку. Казалось бы, в чём проблема-то?

 cmd|qemu -netdev user,id=user0,hostfwd=tcp::2222-:22 -device e1000,netdev=user0" …

как-то так (можно вместо e1000 паравиртуальный драйвер, это побыстрее будет).

Но. Я это сделал через libvirt! И оказалось, что штатными средствами (не только тыкая в менюшки virt-manager, но и, кажется, вообще прямой настройкой сети) нельзя. Не знаю, почему. Может быть, можно, но я не нашёл как. А я искал. То, что в libvirt называется NAT, в действительности садится на tun/tap, лезет в iptables и т. д. Наверное, для совместимости с другими платформами виртуализации, не знаю.

Короче.

  1. В настройках virt-manager разрешаем «Редактирование XML»
  2. Удаляем все сетевые устройства.
  3. Добавляем в конец общего XML-я виртуалки (например, во вкладке «Обзор»), перед закрывающим </domain>, такие строки:
 <qemu:commandline>
   <qemu:arg value="-netdev"/>
   <qemu:arg value="user,id=user0,hostfwd=tcp::2222-:22"/>
   <qemu:arg value="-device"/>
   <qemu:arg value="e1000,netdev=user0"/>
 </qemu:commandline>

Если неймспейс qemu не загружен, то такие:

И qemu преспокойненько само всё как надо делает. Фишка — не забыть про
иначе просто не заработает, а вам ничего не скажет)

Графики

Откройте «Правка> Параметры», вкладка «Статистика», отметьте галочками, какие графики вы хотите сделать доступными.

Вкл./выкл. график вы можете через «Вид> График».

Снимок машины можно создать только если виртуальный жесткий диск у вас в формате *.qcow2.

Управление из консоли

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

virsh list —all список всех виртуальных машин
virsh dominfo vm1 информация о машине vm1
virsh start vm1 включить
virsh shutdown vm1 послать сигнал завершения
virsh destroy vm1 принудительно завершить работу
virsh save vm1 file_name сохранить состояние в файл
virsh restore file_name восстановить состояние из файла (откатить изменения)

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

for i in $(virsh list —all | awk ‘{print $2}’); do echo -e «$i\n$(virsh dumpxml $i | grep file=)»; done

Если нужен список только работающих на данный момент виртуалок, то убираем параметр —all:

for i in $(virsh list | awk ‘{print $2}’); do echo -e «$i\n$(virsh dumpxml $i | grep file=)»; done

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

Переходим к созданию виртуальных машин, для этого в панели Cockpit переходим к пункту “Virtual Machines”, далее нажимаем на кнопку “Create VM”:

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

Теперь давайте установим “virt-manager”, о котором писалось выше. Он позволит вам управлять виртуальными машинами KVM. Для его установки вводим команду:

После установки вы найдете virt-manager в установленных программах, он будет называться “Менеджер виртуальных машин”. После его запуска в окне программы увидите ваши виртуальные машины:

Возможно, вам так же необходимо будет добавить вашего пользователя в группу “libvirt” и “kvm”, у меня такой необходимости не было, но, на всякий пожарный как говорится…Для этого вводим команды:

Установка гостевой Windows 10

Запускаем стандартную установку данной ОС, выбираем редакцию, вводим или пропускаем (для получения 30 дневной пробной версии) серийный номер, принимаем лицензионное соглашение с конечным пользователем, затем Выборочная установка ибо нам требуется создать разделы на диске и установить драйвер VirtIO для ранней стадии загрузки системы.

Когда появится сообщение об ошибке о том, что не удалось загрузить драйверы, нажмём кнопку Загрузить, а затем в появишемся окне разрешим автоматический поиск при помощи нажатия OK.

Ошибка, связанная с отсутствием драйвера VirtIO

Укажем версию драйвера Red Hat VirtIO SCSI controller для Windows 10 и нажмём Далее.

Ручная установка драйвера VirtIO

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

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

Установка KVM на Ubuntu Server

Для того чтобы установить KVM из терминала набираем следующую команду:

Для более ранних ОС:

Следующим шагом при реализации kvm виртуализации будет настройка сетевого моста на вашем сервере. Как это сделать я писал в этой статье.

Да чуть не забыл, управление виртуальными машинами из консоли производится при помощи утилиты virsh. Так что для начала можно посмотреть man или help данной утилиты:

Давайте рассмотрим некоторые полезные команды необходимые для управления нашими будущими гостевыми ОС.

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

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

Если уже был сконфигурирован сетевой мост то доступные интерфейсы можно посмотреть так:

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

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

Устанавливаем необходимую утилиту:

Теперь набираем команду:

Вывод будет примерно такой:

Ну вот, когда мы знаем всю интересующую нас информацию можно приступать к установке виртуальной машины.

Решение проблем

1. Я получил ошибку, когда попытался создать виртуальную машину:

error: internal error: no supported architecture for os type 'hvm'

Вы получите эту ошибку, если ваш процессор не поддерживает аппаратную виртуализацию (то есть Intel VT или AMD-V), которая требуется для работы KVM. Если же вы получили эту ошибку с процессором, поддерживающим Intel VT или AMD-V, возможные решения этой проблемы:
Во-первых, проверьте, загружены ли требуемые модули ядра.

$ lsmod | grep kvm

Если модуль kvm не загружен, вам необходимо загрузить его:

$ sudo modprobe kvm_intel (для процессоров Intel)
$ sudo modprobe kvm_amd (для процессоров AMD)

Второе решение — добавление аргумента «—connect qemu:///system» к команде virsh, как показано ниже. Этот аргумент может потребоваться, если вы используете более одного гипервизора (то есть VMware, VirtualBox) на сервере.

$ virsh --connect qemu:///system create alice.xml

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

$ virsh console alice
error: internal error: cannot find character device <null>


Эта ошибка возникает потому, что вы не определили устройство консоли в XML-файле виртуальной машины.
Добавьте приведенные ниже строки в раздел «device» XML-файла.

<console type='pty'>
 <target port='0'/>
</console>

взято тут…

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: