Часть 7: QEMU KVM libvirt. Описание, установка. - github2wiki/SPBSUT_KURS GitHub Wiki

QEMU

QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ.

Помимо эмуляции, поддерживает технологии аппаратной виртуализации (Intel VT и AMD SVM) на x86-совместимых процессорах Intel и AMD. Первоначально разработка велась в рамках проекта Linux KVM (Kernel-based Virtual Machine), в котором, помимо собственно KVM (поддержки технологий аппаратной виртуализации x86-совместимых процессоров на уровне ядра Linux), разрабатывались патчи для QEMU, позволяющие QEMU использовать функциональность KVM. Впоследствии патчи были объединены с основной веткой программы.

То есть, QEMU - это гипервизор, использующий преимущественно KVM. (Про KVM уже говорили ранее)

libvirt

libvirt — свободная реализация API, демон и набор инструментов для управления виртуализацией. Позволяет управлять гипервизорами Xen, KVM, а также VirtualBox, OpenVZ, LXC, VMware ESX/GSX/Workstation/Player, QEMU и другими средствами виртуализации, предоставляет возможность контролировать виртуальные машины по сети, расположенные на других компьютерах. Эти API широко используются в слоях гипервизоров при разработке облачных решений.

libvirt — это библиотека, написанная на C, имеет множество биндингов для других языков программирования Python, Perl, OCaml, Ruby, Java, JavaScript (при помощи Node.js) и PHP. libvirt для этих языков программирования выглядит как обертка вокруг другого класса/пакета libvirtmod. Реализация libvirtmod тесно связана с частью этой библиотеки через C/C++ по синтаксису и функциональности.

Разработка libvirt спонсировалась Red Hat, со значительными взносами от других организаций и частных лиц. Libvirt доступна для большинства Linux дистрибутивов; управление удаленными серверами также доступно из Apple Mac OS X и Microsoft Windows.

Установка QEMU/KVM на CentOS 7

libvirt — это просто API, а вот как с ним взаимодействовать решать пользователю. Вариантов куча. Мы воспользуемся несколькими стандартными утилитами.

Сначала проверим, поддерживается ли аппаратная виртуализация. На самом деле, работать будет и без её поддержки, только гораздо медленнее.

egrep --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo

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

lsmod | grep kvm

Если модуль не загружается, значит, нужно включить в BIOS аппаратную виртуализацию.

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

sudo yum install -y qemu-kvm qemu-img libvirt libvirt-python libvirt-client virt-install

qemu-img - утилита для работы с дисками,
virt-install - используется для создания новых виртуальных машин под KVM.

Virsh

Для управления нашими виртуальными машинами будем использовать стандартную утилиту virsh. Её полные возможности вы можете узнать с помощью команды virsh --help

Например, для того чтобы просмотреть список доступных доменов (так в терминалогии virsh называется виртуальная машина), нужно использовать команду:

sudo virsh list

Для того, чтобы увидеть в этом списке неактивные домены, нужно просто добавить флаг --all. О полном функционале можно команды list можно узнать, выполнив:

virsh list --help

Эта команда справедлива и для остального, включая, например, виртуальные сетевые устройства (о них поговорим в следующей части). В любом непонятном случае добавляйте --help :)