Проверка поддержки гипервизора
Проверяем, что сервер поддерживает технологии виртуализации:
cat /proc/cpuinfo | egrep "(vmx|svm)"
В ответ должны получить что-то наподобие:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm epb tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
В противном случае, заходим в БИОС, находим опцию для включения технологии виртуализации (имеет разные названия, например, Intel Virtualization Technology или Virtualization) и включаем ее — задаем значение Enable.
Также проверить совместимость можно командой:
* если команда вернет ошибку kvm-ok command not found установите соответствующий пакет: apt install cpu-checker.
Если видим:
INFO: /dev/kvm exists
KVM acceleration can be used
значит поддержка со стороны аппаратной части есть.
Подготовка сервера
Для нашего удобства, создадим каталог, в котором будем хранить данные для KVM:
* будет создано два каталога: /kvm/vhdd (для виртуальных жестких дисков) и /kvm/iso (для iso-образов).
Настроим время:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* данная команда задает зону в соответствии с московским временем.
* выполняем синхронизацию с сервером времени.
Установка и запуск
Устанавливаем KVM и необходимые утилиты управления:
apt install qemu-kvm libvirt-bin virtinst
* где qemu-kvm — гипервизор; libvirt-bin — библиотека управления гипервизором; virtinst — утилита управления виртуальными машинами.
Настроим автоматический запуск сервиса:
systemctl enable libvirt-bin
Запустим libvirtd:
systemctl start libvirt-bin
Настройка сети в режиме моста (bridge)
Виртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.
Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.
Устанавливаем bridge-utils:
Открываем конфигурационный файл для настройки сетевых интерфейсов:
vi /etc/network/interfaces
И приведем его к виду:
#iface eth0 inet static
# address 192.168.1.24
# netmask 255.255.255.0
# gateway 192.168.1.1
# dns-nameservers 192.168.1.1 192.168.1.2
auto br0
iface br0 inet static
address 192.168.1.24
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1 192.168.1.2
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
* где все, что закомментировано — старые настройки моей сети; br0 — название интерфейса создаваемого моста; eth0 — существующий сетевой интерфейс, через который будет работать мост.
Перезагружаем сервер:
* существует соблазн применить настройки без перезагрузки сервера, например, выполнив команду systemctl restart networking, однако, в ubuntu это может привести к ошибки и потери удаленного доступа.
Создание виртуальной машины
Для создания первой виртуальной машины вводим следующую команду:
virt-install -n VM1 \
--autostart \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=2 --cpu host --check-cpu \
--disk path=/kvm/vhdd/VM1-disk1.img,size=16 \
--cdrom /kvm/iso/ubuntu-16.04.3-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,password=vnc_password \
--os-type linux --os-variant=ubuntu16.04 --boot cdrom,hd,menu=on
* где:
- VM1 — имя создаваемой машины;
- autostart — разрешить виртуальной машине автоматически запускаться вместе с сервером KVM;
- noautoconsole — не подключается к консоли виртуальной машины;
- network — тип сети;
- ram — объем оперативной памяти;
- vcpus — количество виртуальных процессоров;
- disk — виртуальный диск: path — путь до диска; size — его объем;
- cdrom — виртуальный привод с образом системы;
- graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
- os-variant — гостевая операционная система (весь список мы получали командой virt-install --os-variant list, в данном примере устанавливаем Ubuntu 16.04).
Подключение к виртуальной машине
На компьютер, с которого планируем работать с виртуальными машинами скачиваем VNC-клиент, например, TightVNC и устанавливаем его.
На сервере вводим:
команда покажет, на каком порту работает VNC для машины VM1. У меня было:
* :1 значит, что нужно к 5900 прибавить 1 — 5900 + 1 = 5901.
Запускаем TightVNC Viewer, который мы установили и вводим данные для подключения:
Кликаем по Connect. На запрос пароля вводим тот, что указали при создании ВМ, (vnc_password). Мы подключимся к виртуальной машине удаленной консолью.
Управление виртуальной машиной из командной строки
Получить список созданных машин:
Включить виртуальную машину:
* где VMname — имя созданной машины.
Выключить:
Включить автозапуск виртуальной машины:
Дополнительные средства управления
Virt-Manager
Virt-manager — графическая консоль для управления виртуальными машинами. С ее помощью можно создавать последние, модифицировать их, запускать, останавливать, подключаться консолью.
Установить на Linux Ubuntu:
ubuntu-vm-builder
ubuntu-vm-builder — пакет, разработанный компанией Canonical для упрощения создания новых виртуальных машин.
Для его установки вводим:
apt install ubuntu-vm-builder
virsh list --all
virsh edit VM1
VM1- name of virtual machine
virsh destroy VM1 -stop virtual machine
virsh start VM1
Add size to disk of virtual machine
qemu-img resize -q VM1-disk1.img +10G
Install VNC Server for Virtual Machine Manager
https://www.stoutpanda.com/2016/10/20/tigervnc-ubuntu-1604-xenial-xerus/
Config
$home/.vnc/config
vncserver
virt-manager- вызов виртуального менеджера
vncserver -list
vncserver -kill :1 -убить процесс vncserver на порту 5901
/etc/init.d/vncserver restart
https://www.dmosk.ru/miniinstruktions.php?mini=kvm-ubuntu
|