Что такое kvm на vds

Что такое виртуальная машина?

Виртуальная машина (ВМ, VM) – это виртуальная среда, работающая как настоящий компьютер, но внутри другого компьютера. Если выражаться проще, то это приложение, которое имитирует компьютер с полноценной операционной системой и аппаратным обеспечением. 

Она запускается на изолированном разделе жесткого диска, установленного в компьютере-хосте (так называют системы, в рамках которых запускают ВМ). Благодаря виртуальным машинам пользователи могут тестировать программное обеспечение в различных окружениях (системах, конфигурациях и т.п.) на своем ПК без необходимости запускать и настраивать отдельное устройство. 

Как работают виртуальные машины?

Определение виртуальной машины дает базовое понимание того, как все устроено, но мы пойдем чуть дальше. Запуск VM возможен благодаря технологии виртуализации. Она позволяет использовать существующее «железо» для создания его виртуальных копий. Виртуализация имитирует аппаратное обеспечение в цифровом виде для запуска нескольких полноценных операционных систем на одном компьютере поочередно или одновременно. Физическое «железо» в этом случае называется хостом, а виртуальное – гостевой ОС. 

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

Типы виртуальных машин

По типу ВМ делятся на виртуализацию процесса и виртуализацию ОС. В первом случае виртуальная машина отвечает только за работу конкретного приложения/процесса. По такому принципу работает язык программирования Java. Утилиты, написанные на нем, запускаются только в специальных виртуальных машинах – «прослойках» между аппаратной частью ПК и непосредственно приложением. Во втором случае речь идет об эмуляции полноценной системы. 

Также ВМ иногда делят на категории по типу виртуализации:

  • Аппаратная виртуализация. Когда ВМ взаимодействует с физическим оборудованием ПК.

  • Программная. Когда виртуальная машина генерирует «новый ПК» на уровне ПО и использует его для запуска других систем. 

Также есть виртуализация накопителей (когда несколько физических хранилищ данных объединяются в одно) и сети (когда несколько физически разных сетей формируют одну виртуальную).

Сетевой Bridge для kvm

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

  1. Виртуальные машины выходят во внешний мир через сам хост kvm, на котором настроен NAT. Этот вариант вам будет доступен сразу после установки kvm. Ничего дополнительно настраивать не надо, так как сетевой бридж для этого virbr0 уже будет добавлен в систему. А в правилах iptables будет добавлен MASQUERADE для NAT.
  2. Одна из виртуальных машин превращается в шлюз и через нее осуществляется доступ во внешний мир для всех виртуальных машин. Наиболее гибкий способ управления сетью для vm, но в то же время требует больше времени на настройку и набор знаний по работе с сетями.
  3. Для виртуальных машин kvm создается отдельный сетевой бридж во внешнюю сеть. Они напрямую получают в нее сетевой доступ.

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

sudo apt install bridge-utils

Теперь на хосте приводим сетевые настройки в /etc/netplan к следующему виду.

network:
  ethernets:
    ens18:
      dhcp4: false
      dhcp6: false
  version: 2

  bridges:
    br0:
      macaddress: 16:76:1a:3b:be:03
      interfaces:
        - ens18
      dhcp4: true
      dhcp6: false
      parameters:
        stp: true
        forward-delay: 4

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

В предложенном наборе правил netplan у меня один сетевой интерфейс на хосте гипервизора — ens18. Он изначально получал настройки по dhcp. Мы добавили новый сетевой бридж br0, в него добавили интерфейс ens18. Так же мы указали, что br0 будет получать сетевые настройки по dhcp. Я указал mac адрес для того, чтобы он не менялся после перезагрузки. Такое может происходить. Адрес можно указать любой, не принципиально. Я сделал похожий на адрес физического сетевого интерфейса.

Теперь надо применить новые настройки.

sudo netplan apply

Сразу после этого вы потеряете доступ к серверу по старому адресу. Интерфейс ens18 перейдет в состав bridge br0 и потеряет свои настройки. А в это время бридж br0 получит новые сетевые настройки по dhcp. IP адрес будет отличаться от того, что был перед этим на интерфейсе ens18. Чтобы снова подключиться удаленно к гипервизору kvm, вам надо будет пойти на dhcp сервер и посмотреть, какой новый ip адрес ему назначен.

Если у вас нет dhcp сервера или вы просто желаете вручную указать сетевые настройки, то сделать это можно следующим образом.

network:
  ethernets:
    ens18:
      dhcp4: false
      dhcp6: false
  version: 2

  bridges:
    br0:
      macaddress: 16:76:1a:3b:be:03
      interfaces:
        - ens18
      addresses:
        - 192.168.25.2/24
      gateway4: 192.168.25.1
      nameservers:
        addresses:
          - 192.168.25.1
          - 77.88.8.1
      dhcp4: false
      dhcp6: false
      parameters:
        stp: true
        forward-delay: 4

В этом случае после применения новых настроек, гипервизор kvm будет доступен по адресу 192.168.25.2.

Обращайте внимание на все отступы в конфигурационном файле netplan. Они важны

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

Далее еще один важный момент. Чтобы наш kvm хост мог осуществлять транзит пакетов через себя, надо это явно разрешить в sysctl. Добавляем в /etc/sysctl.d/99-sysctl.conf новый параметр. Он там уже есть, надо только снять пометку комментария.

net.ipv4.ip_forward=1

Применяем новую настройку ядра.

sudo sysctl -p /etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward = 1

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

Миграция виртуальной машины на другой гипервизор

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

В любом случае на помощь нам приходит миграция виртуальных машин с одного физического сервера на другой. Но тут встает один вопрос: мы же используем LVM и нам надо копировать блочные устройства. Как это правильно сделать?

Кто-то верно сказал, что любую задачу можно решить командой dd, надо только правильно подобрать параметры. А в совокупности с утилитой nc можно вообще победить вселенское зло. Это как раз и есть наш случай.

Если использовать rsync или scp для копирования по сети, то пока оно будет идти, ты успеешь выйти на пенсию. Утилита nc поможет сохранить наше драгоценное время.

Делаем резервную копию конфига нашей мигрирующей ВМ и выключаем ВМ.

1 $sudo virsh dumpxml test>>/tmp/test-20181128.xml

Определим объем передаваемых данных. В нашем примере это 57 Гбайт. Не хило, правда?

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

1 $sudo lvs—unitsg|grep vg_sata_test

Создаем на гипервизоре-получателе логические тома по аналогии с гипервизором-отправителем:

1 $sudo lvcreate-L10G-nvg_sata_test_root vg_sata

Передаем файл конфигурации на другой гипервизор. Тут можно использовать и rsync.

1 $sudo rsync-avzP/tmp/test-20181128.xml192.168.1.52/tmp/

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

1 $sudo nc-l-p27015|pv|dd bs=16Mof=/dev/vg_sata/vg_sata_test_swap

На источнике запускаем

1 $sudo dd bs=16Mif=/dev/vg_sata/vg_sata_test_swap|nc<ip-адресполучателя>27015

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

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

1
2
3

$sudo virsh create/tmp/test-20181128.xml

$sudo virsh start test

$sudo virsh autostart test

На этом миграция виртуальной машины закончена!

Что такое гипервизор?

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

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

Гипервизоры второго типа, также известные как размещенные гипервизоры (Hosted Hypervisor), работают с операционной системой, установленной на сервере. А операционные системы для новых пользователей создаются поверх гипервизора.

Настольные гипервизоры, такие как Oracle VirtualBox или VMware Workstation, являются гипервизорами второго типа, а VMware и KVM – первого. VMware и KVM устанавливаются непосредственно на сервер и не требуют установки какой-либо операционной системы.

Базовая настройка libvirt.

После установки пакетов и перезагрузки требуется осуществить подготовку libvirt к использованию.

Пользователь и группа libvirt.

Убедиться, что пользователь был добавлен в группу libvirt:

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

Если пользователь не в группе — добавить вручную. Команда на добавление активного пользователя в дополнительную группу libvirt без удаления из предыдущих групп:

$USER — активный пользователь.

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

Запуск демона libvirtd.

Запуск libvirtd вручную.

Можно добавить сервис в автозагрузку.

Вместе с libvirtd будет запущен virtlogd для ведения журнала событий.

Место хранения журнала событий виртуальных машин: /var/log/libvirt/qemu/

Snapshot виртуальной машины KVM

Отдельно расскажу, как сделать snapshot виртуальной машины в kvm. Для того, чтобы функционал снимков был доступен, ваши диски должны быть в формате qcow2. Именно он поддерживает снэпшоты. Если диски raw, то сделать снимок не получится. Так же необходимо, чтобы в системе был установлен qemu-guest-agent. Если его не будет, то при создании снимка работающей vm получите ошибку:

error: Guest agent is not responding: QEMU guest agent is not connected

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

sudo virsh domblklist vmserver01
Target Source
------------------------------------------------
vda /mnt/kvm/disk/vmserver01-disk1.qcow2
sda -

Отлично, имя диска vda. Теперь делаем его snapshot:

sudo virsh snapshot-create-as --domain vmserver01 snapshot-name -diskspec vda,file=/mnt/kvm/disk/vmserver01-disk1-snapshot.qcow2 --disk-only --atomic --quiesce --no-metadata
Domain snapshot snapshot-name created
vmserver01 имя виртуальной машины, для которой делаем снэпшот
snapshot-name название самого снепшота, актуально, когда их несколько
vda имя диска виртуальной машины
vmserver01-disk1-snapshot.qcow2 имя и путь для снепшота

После этого в директории /mnt/kvm/disk появится файл vmserver01-disk1-snapshot.qcow2, куда будут писаться все изменения диска. Сам же диск останется в неизменном виде. В этой ситуации его удобно забэкапить. Рассмотрим это позже. Если сейчас посмотреть список дисков виртуальной машины, то в качестве диска там будет указан снэпшот.

sudo virsh domblklist vmserver01
 Target   Source
---------------------------------------------------------
 vda      /mnt/kvm/disk/vmserver01-disk1-snapshot.qcow2

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

sudo virsh blockcommit vmserver01 vda --active --verbose --pivot
Block commit: 
Successfully pivoted

Проверьте список дисков. У вас должен исчезнуть snapshot, а основной диск вернется на прежнее место.

Драйвера и доводка

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

Нужно скормить им драйвера из набора , что подключены через IDE CD-ROM в предыдущем разделе.

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

Вот весь список, а это соседняя страница RedHat доков, где установка драйверов показана подробнее.

  • Balloon, the balloon driver, affects the PCI standard RAM Controller in the System devices group.
  • vioserial, the serial driver, affects the PCI Simple Communication Controller in the System devices group.
  • NetKVM, the network driver, affects the Network adapters group. This driver is only available if a virtio NIC is configured. Configurable parameters for this driver are documented in Appendix E, NetKVM Driver Parameters.
  • viostor, the block driver, affects the Disk drives group. This driver is only available if a virtio disk is configured.

Оборудование

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

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

Подключаться к ВМ можно разнообразно.

  1. Через графический интерфейс virt-manager
  2. Выбрать дисплей VNC-сервер и подключаться через vnc-клиента
  3. Установить Spice-клиента и подключаться через него
  4. К Windows можно подключиться через rdp, если включен терминальный сервер

У меня вариант 3, для Gentoo это программа

Сеть

Такой простой выбор сетевых опций дает результат превосходящий ожидания. Создаются 3 дополнительных сетевых интерфейса: virbr0, virbr0-nic, vnet0.

В создается свод правил, вот основные:

Windows ВМ:

Повторяю, все это libvirtd создает сам, ничего для этого делать не надо. В результате имеем нормальный роутинг между хостом и ВМ, можно обмениваться файлами по . Можно пойти дальше и создать шару на Windows, а на Linux хосте настроить samba, но мне это показалось избыточным.

Запуск виртуальной машины

Для запуска виртуальной машины кликните на неё правой кнопкой мыши и нажмите Запустить.

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

Вывести список запущенных виртуальных хостов (все доступные можно получить добавив —all):

sudo virsh list

Перезагрузить:

sudo virsh reboot $ИМЯ_ВИРТУАЛЬНОЙ_МАШИНЫ

Остановить:

sudo virsh stop $ИМЯ_ВИРТУАЛЬНОЙ_МАШИНЫ

Выполнить halt:

sudo virsh destroy $ИМЯ_ВИРТУАЛЬНОЙ_МАШИНЫ

Запуск:

sudo virsh start $ИМЯ_ВИРТУАЛЬНОЙ_МАШИНЫ

Отключение:

sudo virsh shutdown $ИМЯ_ВИРТУАЛЬНОЙ_МАШИНЫ$VM_NAME

Добавить в автозапуск:

sudo virsh autostart $ИМЯ_ВИРТУАЛЬНОЙ_МАШИНЫ$VM_NAME

Установка OpenVz

Как уже говорилось выше, часть компонентов OpenVZ от­сутствует в основной ветке ядра Linux, а соответственно и в ядрах большинства дистрибутивов. По этой причине для того, чтобы использовать OpenVZ, необходимо специ­альное ядро, в котором есть все необходимое для запуска контейнеров. Подготовленные ядра можно найти практичес­ки для любого дистрибутива. OpenVZ базируется на ядрах Red Hat, поэтому более предпочтительными являются дис­трибутивы RHEL\CentOS\Scientific Linux. Хотя на официаль­ном сайте также предоставлены репозитории и инструкции для Debian. Я сторонник CentOS, и поэтому в рамках моей статьи будет использоваться этот дистрибутив версии 6.3. Прежде чем приступать к установке компонентов OVZ, реко­мендуется сформировать отдельный раздел на жестком дис­ке или целый массив для будущего хранилища контейнеров, директории /vz. Удобнее всего это выполнить в процессе ин­сталляции ОС на этапе разбивки дисков. Когда система будет установлена и настроена сеть, можно приступать к установке нового ядра. Первым делом подключиаем репозиторий OVZ:

и устанавливаем ядро:

После установки ядро OpenVZ будет использоваться по умолчанию при загрузке ОС. Прежде чем перезагрузить­ся и отдать управление системой новому ядру, необходимо изменить ряд параметров в файле /etc/sysctl.conf:

Примечание. В свежих версия vzctl начиная с 4.4 при­веденные выше параметры будут внесены автоматически при установке.

А также отключить SELinux:

И в завершение необходимо установить пользователь­ские утилиты управления OVZ:

Далее перезагружаем систему и получаем готовую к экс­плуатации платформу OpenVZ.

Примечание. Начиная с версии ядра 3.х базовые функции, такие как создание, запуск и остановка контейнеров, возможны без установки собственного ядра OpenVZ. Для это­го лишь необходимо установить vzctl версию 4.0 или более новую .

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

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

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, а — порту 5901.

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

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

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

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

1 $sudo apt-get install-yvirt-manager

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Настройка

Настройка Virtual Machine Manager (VMM)

При первом запуске программы вы увидите две категории, обе не подключенные. Это ссылки на стандартные модули KVM, пока не работающие. Для их использования щелкните правой кнопкой мыши и выберите «connect».

Чтобы добавить новое соединение, выберите в меню File > Add Connection. При этом откроется окно, в котором можно будет задать тип гипервизора и тип соединения. VMM может использовать как локальные, так и удаленные соединения, включая QUEMU/KVM и Xen. Кроме того, поддерживаются все методы аутентификации.

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

Кратко рассмотрим остальные функции программы.
Сетевую функциональность можно просмотреть или изменить, открыв пункт Host Details. Там же мы установим утилиты для работы сетевого моста.

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

Создать виртуальную машину можно и из командной строки, но мы воспользуемся VMM. Первый шаг должен быть интуитивно понятен. Введите название и задайте расположение инсталляционного диска. Это может быть как локальное устройство в виде диска CD/DVD или образа ISO, так и HTTP или FTP сервер, NFS или PXE.

Мы используем локальный носитель. Теперь необходимо задать, будет ли это физическое устройство или образ. В нашем случае используется ISO. Далее нужно выбрать тип и версию ISO. Здесь не требуется такая уж высокая точность, но правильный выбор позволит повысить производительность виртуальной машины.

Задаем количество процессоров и размер оперативной памяти:

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

Далее мы еще уделим внимание дисковой подсистеме. Однако обратите внимание, что при работе в режиме Usermode у вас не будет прав записи в /var, где по умолчанию хранятся образы виртуальных дисков

Поэтому необходимо будет задать другое расположение для образов.
Этап 5 — это вывод сводных данных с возможностью настройки некоторых продвинутых опций. Здесь вы можете изменить тип сети, задать фиксированные MAC-адреса, выбрать тип виртуализации и целевую архитектуру. Если вы работаете в режиме Usermode, возможности настройки сети будут ограничены, например невозможно будет создать мосты между сетевыми интерфейсами. И последнее: если ваш процессор не поддерживает аппаратной виртуализации, поле Virt Type будет иметь значение QUEMU и сменить его на KVM будет невозможно. Вы можете посмотреть, как выглядят типовые настройки для виртуальной машины Ubuntu:

Наша машина готова к использованию.

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

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

При необходимости можно удалить виртуальную машину вместе со всеми ее файлами:

1. VirtualBox

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

VirtualBox поддерживает как 32, так и 64 битные системы и вы можете установить не только Linux дистрибутив, но и Windows или даже MacOS. Все системы будут отлично работать. Во время создания виртуальной машины вы можете выбрать профиль гостевой ОС, для которого автоматически выставятся правильные параметры памяти, процессора и видеокарты.

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

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

О QEMU-KVM

KVM — это модуль ядра Linux, ​обеспечивающий доступ к аппаратной виртуализации на базе Intel VT(Virtualization Technology) либо AMD SVM (Secure Virtual Machine).

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

Libvirt — свободная реализация API, демон и набор инструментов для управления виртуализацией. Позволяет управлять гипервизорами KVM, QEMU и другими.

Virtual Machine Manager — приложение для управления виртуальными машинами.

Так что же выбрать?

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

KVM обычно более масштабируем, чем VMware, в первую очередь потому что vSphere имеет некоторые ограничения на серверы, которыми он может управлять. Кроме того, VMware добавила большое количество сетей хранения данных (SAN) для поддержки различных поставщиков. Эта функция означает, что VMware имеет больше вариантов хранения, чем KVM, но также усложняет поддержку хранилища VMware при расширении.

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

Исследования показали, что совокупная стоимость владения KVM, как правило, на 39 процентов ниже, чем у VMware, хотя фактическая совокупная стоимость владения зависит от специфичных факторов, таких как эксплуатационные параметры и рабочая нагрузка площадки.

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

Облачные провайдеры, предлагающие своим клиентам услуги по модели IaaS, обычно выбирают инфраструктуру, построенную на продуктах VMware. Решения на основе VMware Sphere содержат все важные корпоративные функции по обеспечению высокой и непрерывной доступности, обеспечивают поддержку большего числа гостевых операционных систем и имеют возможность сопряжения инфраструктуры заказчика с облачными сервисами.

Завершение подготовки проброса видеокарты GTX 1060.

Вернёмся к модулю vfio-pci.ids.

Видеокарта состоит из двух устройств: видео и аудио. В целях проброса модулю vfio-pci.ids необходимо передать vendor id и device id устройств видеокарты.

Вывести ID устройств видеокарты:

Вывод для GTX 1060:

Искомые vendor id и device id имеют такой вид:

  • Видео
  • Аудио

Итоговый результат для GTX 1060 выглядит так:

После перезагрузки vfio захватит видеокарту, что сделает её доступной для проброса.

Проверить успешность захвата по ID видеоустройства:

Вывод:

В строке Kernel driver in use должно быть vfio-pci. Это означает, что видеокарта была успешно захвачена драйвером vfio_pci.

На этом непосредственная настройка хоста окончена.

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

Процесс будет осуществлён с помощью Virt-manager.

Если при запуске Virt-manager выводится ошибка «Не удалось подключиться к libvirtd», то стоит удостовериться в следующем:

  • Установлены пакеты libvirt-daemon и libvirt-daemon-system.
  • Пользователь находится в группе libvirt.

Дополнительные варианты решения:

Если есть какие-то другие проблемы, то их можно отследить через вывод в системном журнале:

Настройка параметров QEMU

Отредактируйте файл настроек:

/etc/libvirt/qemu.conf

# Позволит vnc слушать на всех адресах
vnc_listen = "0.0.0.0"

# Отключим tls (если виртуальны машины используются не для тестирования, то лучше tls включить и настроить)
vnc_tls = 

# Пароль по умолчанию для vnc - он будет использоваться в том случае, если для виртуальной машины не указан свой пароль
vnc_password = "XYZ12345"

# Пользователь от которого будет запускаться QEMU
user = "root"

# Группа от которой будет запускаться QEMU
group = "root"

# Формат сохранения и дампов, gzip или другое сжатие позволит уменьшить место, занимаемое образами, но притом увеличит время сохранения образов.
save_image_format = "gzip"
dump_image_format = "gzip"

Запустите демон libvirt и добавьте его в автозагрузку:

/etc/init.d/libvirtd start

rc-update add libvirtd

Также для виртуальной сети нам понадобятся модули и . Загрузите модули:

modprobe -a tun vhost_net

и добавьте их в автозагрузку:

/etc/modules-load.d/qemu.conf

tun
vhost_net

Графические инструменты


libvirt supports KVM

  • Kimchi веб инструмент менеджмента для KVM
  • Virtual Machine Manager поддерживает создание, редакцию, старт и остановку KVM-машин, также как холодную миграцию ВМ между хостами
  • Proxmox Virtual Environment свободный пакет менеджмента виртуализации, включая KVM и OpenVZ. Имеет установщик на голую машину, удаленный веб-интерфейс для менеджмента, и опционально коммерческую поддержку.
  • OpenQRM платформа менеджмента для управления гетерогенными дата центрами.
  • GNOME Boxes интерфейс Gnome для управления libvirt гостями на Linux.
  • oVirt свободный иснструмент менеджмента виртуализации для KVM на основе libvirt
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

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