KVM виртуализация, установка на Ubuntu

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

 

 

KVM виртуализация и установка гипервизора на Ubuntu сервер

Прежде всего проверим поддерживается ли виртуализация на уровне аппаратной части. Необходимые данные возьмем из вывода /proc/cpuinfo

 

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

 

0 будет означать, что kvm виртуализацию использовать не получится.

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

 

Если проверка пройдена продолжаем

kvm-ok

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

 

В консоль не должно быть выведено ошибок вроде -bash: kvm-ok: command not found (при выполнении опять же на облачном сервере оболочка сообщит о том, что команда не найдена)

 

Архитектура мастер сервера.

Чтобы иметь возможность создавать виртуальные машины с 32-х и 64-х битной архитектурой хост машина должна быть 64-х битной. На 32-х битном мастере получится создавать только 32-х битные гостевые системы. Также только при 64 битах получится выделить для гостевой системы более 2 Гб оперативной памяти.

 

Выяснить битность системы можно так:

 

egrep -c ' lm ' /proc/cpuinfo

Единица или большее число в вывод будут означать, что на мастере 64 бита

 

 

Другой вариант

file /bin/ls

/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a0823e17cafbe5b2296346216445566840fdfd88, stripped

 

В случае с 32-х битной системой соответственно было бы

/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=07da0cea3ca1e33719560d9eba3bffe7e4c8b67f, stripped

 

Архитектуру также можно посмотреть используя uname

uname -m

 

 

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

apt-get update

apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder virtinst ubuntu-virt-server bridge-utils pm-utils

 

Они выполняются от имени root или из под sudo, после добавляем пользователя с реквизитами которого авторизованы в системе  в группы kvm и libvirtd

su admin

sudo adduser `id -un` kvm

sudo adduser `id -un` libvirtd

За счет 'id -un' выбирается тот пользователь который сейчас выполняет команды с правами суперпользователя

 

Далее меняем владельца и группу владельца устройства kvm

sudo chown root:libvirtd /dev/kvm

 

Теперь нужно выйти из системы и зайти вновь от имени того же пользователя — лучше перезагрузить сервер, затем отдать команду которая выведет список всех существующих виртуальных машин (пустой на данном этапе)

virsh -c qemu:///system list

Id Name State
—————————————————-

Отсутствие ошибок будет означать, что все получилось.

 

Управлять виртуальными машинами можно через virtual manager — веб-интерфейс, который в продакшн среде обычно не применяется. Он устанавливается при помощи apt-get и вызывается из консоли обращением по имени пакета.

Рассмотрим создание гостевых машин в kvm и основные операции с ними при помощи virsh

Установим дополнительные пакеты, которые будут полезны при работе с виртуальными машинами

apt-get install kvm libvirt-bin virt-manager virt-viewer virt-top virt-what

 

Вывести список всех существующих машин используя virsh можно так:

virsh list —all

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

 

KVM виртуализация предполагает создание машин на основе образов iso, которые нужно размещать в каталоге /var/lib/libvirt/images — изначально он пуст

 

Прежде всего меняем конфигурацию сети на сервере, сейчас он работает на белом IP адресе, который относится к интерфейсу eth0, смотрящему в интернет.

В /etc/network/interfaces меняем iface eth0 inet static на iface eth0 inet manual, после этого добавляем новый интрефейс br0, присваивая ему тот IP адрес и сетвую маску, что относились к eth0. Оставляем теми же broadcast, network и gateway дописывая в настройки интерфейса br0 несколько строк:

bridge_ports eth0

bridge_fd 9

bridge_hello 2

bridge_maxage 12

bridge_stp off

 

 

Теперь можно создавать первую виртуальную машину на KVM (поскольку машина тестовая выделяем для нее минимальное количество ресурсов)

 

virt-install \
-n VM1 \
—description «VM1» \
—os-type=Linux \
—ram=512 \
—vcpus=1 \
—disk path=/var/lib/libvirt/images/VM1.img,bus=virtio,size=5 \
—graphics none \
—location /home/admin/Downloads/ubuntu-14.04.5-server-i386.iso \
—network bridge:br0

 

 

В качестве опций задаются имя виртуальной машины, описание, тип операционной системы (Linux), название дистрибутива (может также быть — например, centos7), количество оперативной памяти и CPU выделяемых для системы, путь к файловой системе и размер диска, указание на необходимость использования на виртуальной машине только консольного режима.

Последними опциями задается путь к установочному .iso файлу и настройки сети. Если задан бридж машина будет доступна в сети как самостоятельный хост, все настройки хранятся в /etc/libvirt/qemu/networks/. также можно указать необходимость использования NAT.

 

 

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

virsh —connect qemu:///system start VM1

 

Того же результата можно добиться выполнив

virsh start VM1

 

Это и последующие команды нужно выполнять из под  sudo иди один раз перейдя в оболочку sudo 'sudo bash'

Выключить машину

virsh shutdown VM1

Принудительно выключить машину

virsh destroy VM1

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

virsh reboot VM1

Уничтожить

virsh undefine VM1

Команда для вывода списка всех созданных гостевых систем уже приводилась ранее

 

Можно подключиться к консоли VM1

virsh-viewer VM1

 

За счет save и restore можно создвать снапшоты и восстанавливаться из них, синтаксис следующий

virsh save VM1 VM1-10152017.stat

virsh restore VM1-10152017.stat

 

Подробную информацию о работе с KVM и QEMU и о том как работает  KVM виртуализация в целом можно найти на официальном сайте проекта.

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