Если вам нужно иметь несколько операционных систем на своем компьютере, но вы не хотите использовать двойную загрузку, то остается единственный вариант — это виртуализация и виртуальные машины для Linux. При использовании двойной загрузки на медленных системах перезагрузка из одной системы в другую может занимать до нескольких минут, а это очень неудобно.
Поэтому, виртуализация — это отличное решение, потому что при достаточном количестве оперативной памяти и мощности процессора вы сможете запустить несколько систем одновременно и даже полноценно с ними работать. Но какое программное обеспечение лучше использовать? Что выбрать и как все это работает, все это — тема нашей сегодняшней статьи.
- Что такое виртуальная машина?
- Security
- Storage
- Memory management
- Performance and scalability
- Scheduling and resource control
- Lower latency and higher prioritization
- Подходы к виртуализации
- Динамическая трансляция
- Паравиртуализация
- Аппаратная виртуализация
- Kernel-based Virtual Machine
- Libvirt
- Создадим виртуалку
- Что дальше?
- Дополнительное чтение
- VirtualBox
- XEN
- Qemu
- Установка KVM в Ubuntu 20
- Создание виртуальных машин KVM
- Создание виртуальных машин в GUI
- Gnome Boxes
- Графические утилиты управления
- VMware
- Выводы
Что такое виртуальная машина?
Виртуальные машины — это программы, которые создают программную среду, имитирующую нужное аппаратное оборудование. В эту среду может быть установлена операционная система и затем ее можно будет полноценно использовать. Мы называем такие системы гостевыми, в то время как основная система, установленная на компьютере, называется хостом.
Раньше виртуальные машины выполняли всю работу сами, на программном уровне, и понятно, что все это работало очень медленно. Но потом процессоры начали поддерживать аппаратную виртуализацию, это в разы ускоряет работу гостевой операционной системы. Это такие технологии, как AMD-V от AMD или Intel VT-x от Intel. Правда, эти технологии могут быть по умолчанию отключены в BIOS.
Кроме виртуальных машин, которые полностью эмулируют работу компьютера к виртуализации под linux можно отнести контейнеры, например, LXC или OpenVZ. Дальше мы рассмотрим виртуальны машины для Linux, которые вы можете использовать для установки своих систем.
У этого термина существуют и другие значения, см. K VM (значения).
Информация в этой статье или некоторых её разделах устарела.
Вы можете помочь проекту, обновив её и убрав после этого данный шаблон.
KVM (Kernel-based Virtual Machine) — программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine).
Сам по себе KVM не выполняет эмуляции. Вместо этого программа, работающая в пространстве пользователя, использует интерфейс /dev/kvm для настройки адресного пространства гостя виртуальной машины, через него же эмулирует устройства ввода-вывода и видеоадаптер.
KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, VMware и других, содержащие операционные системы. Каждая виртуальная машина имеет своё собственное виртуальное аппаратное обеспечение: сетевые карты, диск, видеокарту и другие устройства.
KVM или Kernel Virtual Module — это модуль виртуализации для ядра Linux, который позволяет превратить ваш компьютер в гипервизор для управления виртуальными машинами. Этот модуль работает на уровне ядра и поддерживает такие технологии аппаратного ускорения, как Intel VT и AMD SVM.
Само по себе программное обеспечение KVM в пространстве пользователя ничего не виртуализирует. Вместо этого, оно использует файл /dev/kvm для настройки виртуальных адресных пространств для гостевой машины в ядре. Каждая гостевая машина будет иметь свою видеокарту, сетевую и звуковую карту, жесткий диск и другое оборудование.
Также у гостевой системы не будет доступа к компонентам реальной операционной системы. Виртуальная машина выполняется в полностью изолированном пространстве. Вы можете использовать KVM как в системе с графическим интерфейсом, так и на серверах. В этой статье мы рассмотрим как выполняется установка KVM в Ubuntu 20.04.
KVM is part of Linux. Linux is part of KVM. Everything Linux has, KVM has too. But there are specific features that make KVM an enterprise’s preferred hypervisor.
Security
KVM uses a combination of security-enhanced Linux (SELinux) and secure virtualization (sVirt) for enhanced VM security and isolation. S ELinux establishes security boundaries around VMs. s Virt extends SELinux’s capabilities, allowing Mandatory Access Control (MAC) security to be applied to guest VMs and preventing manual labeling errors.
Storage
KVM can use a wide variety of certified Linux-supported hardware platforms. Because hardware vendors regularly contribute to kernel development, the latest hardware features are often rapidly adopted in the Linux kernel.
Memory management
KVM supports live migration, which is the ability to move a running VM between physical hosts with no service interruption. The VM remains powered on, network connections remain active, and applications continue to run while the VM is relocated. K VM also saves a VM’s current state so it can be stored and resumed later.
Performance and scalability
KVM inherits the performance of Linux, scaling to match demand load if the number of guest machines and requests increases. K VM allows the most demanding application workloads to be virtualized and is the basis for many enterprise virtualization setups, such as datacenters and private clouds (via OpenStack®).
Scheduling and resource control
In the KVM model, a VM is a Linux process, scheduled and managed by the kernel. The Linux scheduler allows fine-grained control of the resources allocated to a Linux process and guarantees a quality of service for a particular process. In KVM, this includes the completely fair scheduler, control groups, network name spaces, and real-time extensions.
Lower latency and higher prioritization
The Linux kernel features real-time extensions that allow VM-based apps to run at lower latency with better prioritization (compared to bare metal). The kernel also divides processes that require long computing times into smaller components, which are then scheduled and processed accordingly.
Допустим ты молодой, но всё ещё бедный студент, А значит из всех возможных платформ ты имеешь лишь ПК на Windows и PS4. В один прекрасный день ты решаешься взяться за ум и стать программистом, но мудрые люди в интернете сообщили тебе, что нормальным инженером без Linux не стать. Установить Fedora своей основной и единственной системой ты не можешь, потому что Windows всё ещё нужен для игр и вконтактика, а установить Linux второй системой на жёсткий диск тебе мешает страх или отсутствие опыта.
Или вот, допустим, ты уже вырос, теперь ты главный по серверам в большой компании, и в один прекрасный день ты замечаешь, что большая часть серверов не загружена даже наполовину. Разместить больше приложений и данных на серверах ты не можешь из соображений безопасности, а затраты на поддержку и содержание растущей фермы серверов стремительно увеличиваются.
Или, вот скажем, у тебя уже борода и очки, ты технический директор, и тебя не устраивает, что чтобы разработчики получили для развёртывания нового приложения новый сервер нужно ждать аж два месяца. Как в таких условиях быстро двигаться вперёд?
А, может, ты и вовсе архитектор, который спроектировал новую сложную систему для обработки бизнес аналитики. В систему твою входят такие вещи, как ElasticSearch, Kafka, Spark и много чего ещё, и каждый компонент должен жить отдельно, настраиваться по уму и общаться с другими компонентами. Как хороший инженер, ты понимаешь, что недостаточно просто установить весь этот зоопарк прямо себе на систему. Нужно попробовать развернуть максимально близкое к будущему production окружение, и желательно так, чтобы твои наработки потом бесшовно заработали на production серверах.
И что же делать во всех этих непростых ситуациях? Правильно: использовать виртуализацию.
Виртуализация как раз и позволяет устанавливать множество полностью изолированных друг от друга и работающих бок о бок операционных систем на одном и том же железе.
Немного истории. Первые технологии виртуализации появились аж в 60-ых годах, однако настоящая нужда в них появилась только в 90-ых, по мере всё большего роста количества серверов. Именно тогда возникла проблема эффективной утилизации всех железок, а также оптимизации процессов обновления, развёртывания приложений, обеспечения безопасности и восстановления систем в случае какой-нибудь катастрофы.
Оставим за кадром долгую и мучительную историю развития различных технологий и методов виртуализации — для любопытного читателя в конце статьи найдутся дополнительные материалы на эту тему. Важно то, к чему в итоге всё это пришло: к трём основным подходам к виртуализации.
Подходы к виртуализации
Независимо от подхода и технологии, при использовании виртуализации всегда существует host-машина и установленный на ней гипервизор, управляющий guest-машинами.
В зависимости от используемой технологии, гипервизор может быть как отдельным ПО, устанавливаемым прямо на железо, так и частью операционной системы.
Внимательный читатель, любящий модные словечки, через пару параграфов начнёт бурчать, что его любимые Docker-контейнеры тоже считаются виртуализацией. Мы поговорим о технологиях контейнеров в другой раз, но да, ты прав, внимательный читатель, контейнеры тоже в каком-то роде виртуализация, только на уровне ресурсов одной и той же операционной системы.
Существует три способа взаимодействия виртуальных машин с железом:
Динамическая трансляция
В этом случае виртуальные машины не имеют ни малейшего понятия, что они — виртуальные. Гипервизор перехватывает на лету все команды от виртуалки и обрабатывает их, заменяя на безопасные, а затем возвращает назад в виртуалку. Такой подход, очевидно, страдает некоторыми проблемами с производительностью, но зато позволяет виртуализировать любую ОС, так как гостевая ОС не нуждается в модификации. Динамическая трансляция используется в продуктах VMWare — лидере коммерческого ПО для виртуализации.
Паравиртуализация
В случае с паравиртуализацией исходный код гостевой ОС специально изменяется так, чтобы все инструкции выполнялись максимально эффективно и безопасно. При этом виртуалка всегда в курсе, что она — виртуалка. Из плюсов — улучшенная производительность. Из минусов — таким образом нельзя виртуализовать, например, MacOS или Windows, или любой другую ОС, к исходникам которой нет доступа. Паравиртуализация в той или иной форме используется, например, в Xen и KVM.
Аппаратная виртуализация
Разработчики процессоров вовремя осознали, что архитектура x86 плохо подходит для виртуализации, так как изначально была заточена под одну ОС за раз. Поэтому, уже после того как появились динамическая трансляция от VMWare и паравиртуализация от Xen, Intel и AMD начали выпускать процессоры с аппаратной поддержкой виртуализации.
Особого прироста производительности это поначалу не дало,так как главным фокусом первых релизов было улучшение архитектуры процессоров. Однако, теперь, спустя больше 10 лет после появления Intel VT-x и AMD-V, аппаратная виртуализация ничем не уступает и даже в чём-то превосходит другие решения.
Аппаратную виртуализацию использует и требует KVM (Kernel-based Virtual Machine), которую мы и будем использовать в дальнейшем.
Kernel-based Virtual Machine
KVM — это решение для виртуализации, встроенное прямо в ядро Linux, не уступающее остальным решениям в функциональности и превосходящее их в удобстве использования. Более того, KVM — open source технология, которую, тем не менее, на всех парах двигает вперёд (как в плане написания кода, так и в плане маркетинга) и внедряет в свои продукты Red Hat.
Это, кстати, одна из многих причин, почему мы настаиваем на Red Hat дистрибутивах.
Создатели KVM изначально сфокусировались на поддержке аппаратной виртуализации и не стали переизобретать многие вещи. Гипервизор, по сути, это маленькая операционная система, которая должна уметь работать с памятью, с сетью и т.п. Linux уже отлично умеет всё это делать, поэтому использование ядра Linux в качестве гипервизора — логичное и красивое техническое решение. Каждая виртуальная машина KVM —это всего лишь отдельный Linux процесс, безопасность обеспечивается при помощи SELinux/sVirt, ресурсы управляются при помощи CGroups.
Мы ещё поговорим о SELinux и CGroups в другой статье, не пугайся, если не знаешь таких слов.
KVM не просто работает как часть ядра Linux: начиная с версии ядра 2.6.20 KVM является основной составляющей Linux. Иными словами, если у вас стоит Linux, то у вас уже есть KVM. Удобно, правда?
Стоит сказать, что в сфере публичных облачных платформ Xen доминирует чуть больше, чем полностью. Например, AWS EC2 и Rackspace используют именно Xen. Обусловлено это тем, что Xen появился раньше всех и первый достиг достаточного уровня производительности. Но есть и хорошие новости: в ноябре 2017 AWS анонсировали новый основанный на KVM гипервизор, который постепенно заменит Xen для крупнейшего облачного провайдера.
Несмотря на то, что KVM использует аппаратную виртуализацию, для некоторых драйверов I/O устройств KVM может использовать паравиртуализацию, что обеспечивает прирост производительности для определённых сценариев использования.
Libvirt
Мы уже почти дошли до практической части статьи, осталось только рассмотреть ещё один open source инструмент: libvirt.
libvirt — это набор инструментов, предоставляющий единый API к множеству различных технологий виртуализации. Используя libvirt вам впринципе без разницы, что там за “бакенд”: Xen, KVM, VirtualBox или что-то ещё. Более того, можно использовать libvirt внутри Ruby (а ещё Python, C++ и много чего ещё) программ. Ещё можно удалённо по защищённым каналам подключаться к виртуальным машинам.
Разработкой libvirt, кстати, занимается Red Hat. Ты уже установил себе Fedora Workstation основной системой?
Создадим виртуалку
libvirt — это просто API, а вот как с ним взаимодействовать решать пользователю. Вариантов куча. Мы воспользуемся несколькими стандартными утилитами. Напоминаем: мы настаиваем на использовании Red Hat дистрибутивов (CentOS, Fedora, RHEL) и команды ниже были протестированы именно на одной из этих систем. Для других дистрибутивов Linux возможны небольшие отличия.
Сначала проверим, поддерживается ли аппаратная виртуализация. На самом деле, работать будет и без её поддержки, только гораздо медленнее.
egrep auto /proc/cpuinfo # если не выведется ничего, значит поддержки нет 🙁
Так как KVM то модуль ядра Linux, то нужно проверить, загружен ли он уже, и если нет, то загрузить.
Возможна ситуация, что аппаратная виртуализация выключена в BIOS. Поэтому если модули kvm_intel/kvm_amd не подгружаются, то проверь настройки BIOS.
Теперь установим необходимые пакеты. Проще всего сделать это, установив сразу группу пакетов:
yum group list
Список групп зависит от используемой ОС. У меня группа называлась Virtualization. Для управления виртуальными машинами из командой строки используется утилита virsh. Проверь, есть ли у тебя хотя бы одна виртуалка командой virsh list. Скорее всего нет.
Если не нравится командная строка, то ещё есть virt-manager — весьма удобный GUI для виртуалок.
virsh умеет создавать виртуалки только из XML файлов, формат которых можно изучить в документации libvirt. К счастью, ещё есть virt-manager и команда virt-install. С GUI ты и сам разберёшься, а вот пример использования virt-install:
virt-install mkdev-vm-0
~/Downloads/CentOS-7-x86_64-Minimal-1511.iso
1024 1
8
Вместо указания размера диска, можно создать его заранее через virt-manager, или через virsh и XML файл. Я использовал выше образ с Centos 7 minimal, который легко найти на сайте Centos.
Теперь остаётся один важный вопрос: как подсоединиться к созданной машине? Проще всего это сделать через virt-manager — достаточно дважды кликнуть по созданной машине и откроется окно с SPICE соединением. Там тебя ждёт экран установки ОС.
Кстати, KVM умеет nested virtualization: виртуалки внутри виртуалку. We need to go deeper!
После того, как ты установишь ОС вручную, ты сразу задашься вопросом, как этот процесс можно автоматизировать. Для этого нам понадобится утилита под названием Kickstart, предназначенная для автоматической первичной настройки ОС. Это простой текстовый файлик, в котором можно указать конфигурацию ОС, вплоть до различных скриптов, выполняемых уже после установки.
Но где взять такой файл? Не писать же его с нуля? Разумеется, нет: так как мы уже установили внутри нашей виртуалки Centos 7, то нам нужно просто подсоединиться к ней и найти файл /root/anaconda-ks.cfg — это Kickstart конфиг для того, чтобы создать копию уже созданной ОС. Нужно просто скопировать его и отредактировать содержимое.
Но просто скопировать файл скучно, поэтому мы добавим в него ещё кое-что. Дело в том, что по умолчанию у нас не получится подсоединиться к консоли созданной виртуалки из командой строки host-машины. Чтобы сделать это, нужно отредактировать конфиг загрузчика GRUB. Поэтому в самый конец Kickstart файла добавим следующую секцию:
%post /root/grubby.log
/sbin/grubby ALL
%end
%post, как не сложно догадаться, выполнится после установки ОС. Команда grubby обновит конфиг GRUB, добавив возможность подключаться к консоли.
Кстати, ещё можно указать возможность подключения через консоль прямо во время создания виртуалки. Для этого в команду virt-install нужно передать ещё один аргумент: —extra-args=»console=ttyS0″. После этого можно устанавливать саму ОС в интерактивном текстовом режиме из терминала твоей host машины, подключившись к виртуалке через virsh console сразу после её создания. Это особенно удобно, когда создаёшь виртуалки на железном удалённом сервере.
Теперь можно применить созданный конфиг! virt-install позволяет при создании виртуалки передавать дополнительные аргументы, в том числе путь к Kickstart файлу.
virt-install mkdev-vm-1
~/Downloads/CentOS-7-x86_64-Minimal-1511.iso
/path/to/ks.cfg
file:/ks.cfg
1024 1 8
После того, как вторая виртуалка будет создана (полностью автоматически), ты сможешь подключиться к ней из командой строки командой virsh console vm_id. vm_id можно узнать из списка всех виртуалок командой virsh list.
Одно из преимуществ использования KVM/libvirt — потрясающая документация, в том числе создаваемая компанией Red Hat. Дорогому читателю предлагается с должной любознательностью изучить её.
Конечно, создавать виртуальные машины вот так вот руками в консоли, а потом настраивать их только при помощи Kickstart — не самый удобный процесс. В будущих статьях мы ознакомимся с множеством классных инструментов, облегчающих и полностью автоматизирующих конфигурацию систем.
Что дальше?
Невозможно уместить в одну статью всё, что стоит знать о виртуализации. Мы рассмотрели несколько вариантов использования виртуализации и её преимущества, немного углубились в детали её работы и познакомились с лучшим, на наш взгляд, решением для этих задач (KVM), и даже создали и настроили виртуалку.
Важно понять, что виртуальные машины — кирпичи в огромных зданиях современных облачных архитектур. Именно они позволяют приложениям автоматически разрастаться до безграничных размеров, максимально быстрым способом и с максимальной утилизацией всех ресурсов.
Каким бы мощным и богатым на сервисы не был AWS, его основа — это виртуальные машины поверх Xen. Каждый раз, когда ты создаёшь новый дроплет на DigitalOcean, ты создаёшь виртуалку. Практически все сайты, которыми ты пользуешься, размещены на виртуальных машинах. Простота и гибкость виртуалок позволяет не только строить production-системы, но и в десятки раз облегчает локальную разработку и тестирование, особенно когда в системе задействовано множество компонентов.
Мы научились создавать одну единственную машинку — неплохо для тестирования одного приложения. Но что, если нам нужно сразу несколько виртуальных машин? Как они будут общаться друг с другом? Как они будут находить друг друга? Для этого нам нужно будет разобраться, как вообще работают сети, как они работают в контексте виртуализации, и какие компоненты задействованы в этой работе и нуждаются в настройке — в следующей статье серии.
Дополнительное чтение

KVM или полностью Kernel-based Virtual Machine (виртуальная машина на основе ядра) — это реализация платформы виртуализации на уровне ядра, которая предоставляет дополнительные возможности для Qemu и очень высокую скорость работы благодаря работе непосредственно в ядре.
Все это означает что KVM быстрее и стабильнее VirtualBox, но KVM намного сложнее в настройке и обслуживании. Технология KVM — это очень популярное решение для размещения виртуальных машин, в том числе на множестве серверов в интернете.
sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
После установки вы сможете получить доступ к виртуальным машинам KVM с помощью менеджера виртуальных машин, который появится в меню. С помощью этого менеджера управляются и другие системы виртуализации Linux, например, XEN.
VirtualBox

VirtualBox — это универсальное программное обеспечение для виртуализации в Linux, которое поддерживает и другие операционные системы, в том числе Windows и MacOS. Вы можете установить сюда практически любую систему, кроме, конечно, систем, предназначенных для устройств на чипе ARM. Все установленные виртуальные машины хранятся в файлах, которые содержат образы дисков. Это позволяет их очень просто выполнить их резервное копирование или перенос на другой компьютер просто скопировав файл машины.
VirtualBox поддерживает как 32, так и 64 битные системы и вы можете установить не только Linux дистрибутив, но и Windows или даже MacOS. Все системы будут отлично работать. Во время создания виртуальной машины вы можете выбрать профиль гостевой ОС, для которого автоматически выставятся правильные параметры памяти, процессора и видеокарты.
Кроме непосредственно виртуализации, VirtualBox поддерживает и дополнительные функции, например, запись видео с экрана виртуальной машины, и создание снимков системы для быстрого восстановления и создание виртуальной сети между несколькими машинами. Кроме того, если установить дополнения гостевой ОС, то можно настроить общий буфер обмена между хостовой и гостевой системой, передавать между ними файлы или даже интегрировать окна программ гостевой системы в основную.
Можно сказать, что это лучшая виртуальная машина для Linux, она предлагает все необходимые возможности, и в то же время достаточно проста в использовании.
XEN
Это еще одна платформа виртуализации для Linux, которая очень похожа на KVM. Но тут есть некоторые отличия. Как и KVM здесь поддерживается аппаратное ускорение, множество архитектур, в том числе и ARM, а также запуск различных гостевых систем, включая Windows. Но главное отличие заключается в том, что KVM по умолчанию встроен в ядро Linux, а для работы Xen вам понадобиться специально собранное ядро с его поддержкой.
Из других особенностей Xen можно отметить, что система будет работать достаточно быстро даже без аппаратного ускорения, если вы будете запускать Linux.
Qemu

Если вы хотите запустить не привычную операционную систему x86, а систему для устройств ARM, например, Android, Raspbian или RISC OS, то тут вам не помогут две предыдущие виртуальные машины Linux. С такой задачей может справиться только Qemu.
Qemu — это сокращение от Quick Emulator. Это очень простая в настройке консольная утилита, но позволяет делать многие интересные вещи на уровне VirtualBox, вы можете запускать любые операционные системы, в том числе и ARM, можете установить ОС на реальный жесткий диск или в файл, использовать аппаратное ускорение и даже автоматически скачивать некоторые дистрибутивы через интернет.
Несмотря на свое название, это очень мощный инструмент для работы с виртуализацией в Linux, для установки Qemu в Ubuntu выполните:
sudo apt install qemu qemu-kvm libvirt-bin
Подробнее про использование Qemu можно почитать в этой статье.
Установка KVM в Ubuntu 20
Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:

Если в результате будет возвращено 0 — значит ваш процессор не поддерживает аппаратной виртуализации, если 1 или больше — то вы можете использовать KVM на своей машине.
Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirt, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:
Затем убедитесь, что сервис libvirt запущен и работает:
sudo systemctl status libvirtd

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

Если все было сделано правильно, то вы увидите такое же сообщение.
Вы справились с задачей установить KVM в Ubuntu, но вы еще не можете использовать эту среду виртуализации но ее нужно еще настроить. Далее, мы рассмотрим как выполняется настройка KVM в Ubuntu. Что удобно, в новых версиях сеть уже настроена и вам не нужно создавать новый сетевой мост. Вы можете убедится в этом выполнив команду:

Интерфейсы virbr0 и virbr-nic созданы KVM по умолчанию и они полностью реализуют все необходимые возможности сети. Ещё вы можете посмотреть доступные мосты с помощью команды:
sudo brctl show

Создание виртуальных машин KVM
virsh -c qemu:///system list

Он пуст. Создать виртуальную машину можно через терминал или в графическом интерфейсе. Для создания через терминал используйте команду virt-install. Сначала перейдем в папку libvirt:
Для установки CentOS команда будет выглядеть вот так:
sudo virt-install
—virt-type=kvm
—name centos8
—ram 2048
—vcpus=2
—os-variant=rhl8.0
—hvm
—cdrom=/var/lib/libvirt/boot/CentOS-8.iso
—network=bridge:virbr0,model=virtio
—graphics vnc
—disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2
Разберем подробнее что означают параметры этой команды:
После завершения установки виртуальной машины вы можете узнать параметры подключения по VNC с помощью команды:
sudo virsh vncdisplay centos8
Теперь вы можете ввести полученные данные в вашем клиенте VNC и подключится к виртуальной машине даже удаленно. Для Debian команда будет немного отличаться, но все выглядит похожим образом:
Переходим в папку для образов:
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
Теперь снова посмотрим список доступных машин:
Для запуска виртуальной машины можно использовать команду:
sudo virsh start имя_машины
sudo virsh shutdown имя_машины
Для перевода в режим сна:
sudo virsh suspend имя_машины
sudo virsh reboot имя_машины
sudo virsh reset имя_машины
Для полного удаления виртуальной машины:
sudo virsh destroy имя_машины
Создание виртуальных машин в GUI
Если у вас есть доступ к графическому интерфейсу то нет никакой необходимости использовать терминал, вы можете применить полноценный графический интерфейс менеджера виртуальных машин Virtual Manager. Программу можно запустить из главного меню:

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

Если вы выбрали ISO образ, то надо его открыть из файловой системы:

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

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

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

Затем автоматически запустится установка:

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

Если вам не нравится управлять вашими виртуальными машинами с помощью командной строки, можно воспользоваться графическим интерфейсом для Qemu под названием Gnome Boxes. Эта утилита позволяет в несколько кликов создать новую виртуальную машину. При чём вам не нужно иметь установочный образ, программа может сама загрузить его из сети. Кроме создания виртуальных машин можно подключаться к удалённым виртуальным машинам по протоколу RDP или VNC. Для установки программы в Ubuntu используйте такую команду:
sudo apt install gnome-boxes
Графические утилиты управления
Kernel-based Virtual Machine и libvirt.
VMware

В отличие от VirtualBox, которая распространяется с открытым исходным кодом, это коммерческий продукт, полная версия которого стоит денег. Но для домашнего использования есть упрощенная версия, которую можно использовать полностью бесплатно.
VMWare имеет почти все те же возможности, что и VirtualBox, в некоторых тестах она показывает себя лучше чем первый вариант, но в целом их производительность одинакова. Тоже есть возможность организовывать сеть между виртуальными машинами, объединять буфер обмена и передавать файлы, но нет записи видео.
Примечательной особенностью VMWare есть то, что для некоторых систем разработаны и уже готовы сценарии автоматической установки, которые позволяют установить систему в автоматическом режиме и не указывать слишком много параметров. Это может быть очень удобным в некоторых ситуациях.
Выводы
В этой статье мы рассмотрели как выполняется установка KVM Ubuntu 20.04, разобрали как полностью подготовить эту среду к работе, а также как создать виртуальные машины и использовать их. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение лекция от яндекса о том что такое виртуализация в Linux:
https://youtube.com/watch?v=Y0YaA4BkLhQ%3Ffeature%3Doembed
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
В этой статье мы рассмотрели лучшие виртуальные машины для Linux. Как видите виртуализация на linux развивается очень быстро и есть достаточно много решений, которые вы могли бы использовать в своей системе. Какую виртуальную машину или систему виртуализации используете вы? Напишите в комментариях!

