Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

Настройка KVM на Ubuntu Server 18.04

Установка Ubuntu Server
Ответить
Аватара пользователя
ALEXX
Администратор
Администратор
Сообщения: 1350
Зарегистрирован: 21 дек 2014, 14:59
Откуда: Королёв
Контактная информация:

Настройка KVM на Ubuntu Server 18.04

Сообщение ALEXX »

[center]Проверка поддержки гипервизора[/center]
Проверяем, что сервер поддерживает технологии виртуализации:

Код: Выделить всё

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-get install cpu-checker
Если видим:

Код: Выделить всё

INFO: /dev/kvm exists
KVM acceleration can be used
значит поддержка со стороны аппаратной части есть.

[center]Подготовка сервера[/center]

Для нашего удобства, создадим каталог, в котором будем хранить данные для KVM:

Код: Выделить всё

mkdir -p /kvm/{vhdd,iso}
* будет создано два каталога: /kvm/vhdd (для виртуальных жестких дисков) и /kvm/iso (для iso-образов).
Настроим время:

Код: Выделить всё

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* данная команда задает зону в соответствии с московским временем.

Код: Выделить всё

ntpdate ru.pool.ntp.org
* выполняем синхронизацию с сервером времени.
[center]Установка и запуск[/center]
Устанавливаем KVM и необходимые утилиты управления.
а) Ubuntu до версии 18.10

Код: Выделить всё

apt-get install qemu-kvm libvirt-bin virtinst libosinfo-bin
б) Ubuntu после 18.10:

Код: Выделить всё

apt-get install qemu-kvm libvirt-daemon-system libvirt-bin virtinst libosinfo-bin
* где qemu-kvm — гипервизор; libvirt-bin — библиотека управления гипервизором; virtinst — утилита управления виртуальными машинами; libosinfo-bin — утилита для просмотра списка вариантов операционных систем, которые могут быть в качестве гостевых.
Настроим автоматический запуск сервиса:

Код: Выделить всё

systemctl enable libvirtd
Запустим libvirtd:

Код: Выделить всё

systemctl start libvirtd
[center]Настройка сети[/center]
Виртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.
Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.
Устанавливаем bridge-utils:

Код: Выделить всё

apt-get install bridge-utils
а) настройка сети в старых версиях Ubuntu (/etc/network/interfaces).
Открываем конфигурационный файл для настройки сетевых интерфейсов:

Код: Выделить всё

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 (netplan).

Код: Выделить всё

vi /etc/netplan/01-netcfg.yaml
* в зависимости от версии системы, конфигурационной файл yaml может иметь другое название.
Приводим его к виду:

Код: Выделить всё

network:
  version: 2
  renderer: networkd
  ethernets:
   eth0:
      dhcp4: false
      dhcp6: false
      wakeonlan: true

  bridges:
    br0:
      macaddress: 2c:6d:45:c3:55:a7
      interfaces:
        - eth0
      addresses:
        - 192.168.1.24/24
      gateway4: 192.168.1.1
      mtu: 1500
      nameservers:
        addresses:
          - 192.168.1.1
          - 192.168.1.2
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: false
      dhcp6: false
* в данном примере мы создаем виртуальный бридж-интерфейс br0; в качестве физического интерфейса используем eth0.
Применяем сетевые настройки:

Код: Выделить всё

netplan apply
Настаиваем перенаправления сетевого трафика (чтобы виртуальные машины с сетевым интерфейсом NAT могли выходить в интернет):

Код: Выделить всё

vi /etc/sysctl.d/99-sysctl.conf
Добавляем строку:

Код: Выделить всё

net.ipv4.ip_forward=
1
Применяем настройки:

Код: Выделить всё

sysctl -p /etc/sysctl.d/99-sysctl.conf
[center]Создание виртуальной машины[/center]
Для создания первой виртуальной машины вводим следующую команду:

Код: Выделить всё

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-18.04.3-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,password=vnc_password \
--os-type linux --os-variant=ubuntu18.04 --boot cdrom,hd,menu=on
* где:
VM1 — имя создаваемой машины;
autostart — разрешить виртуальной машине автоматически запускаться вместе с сервером KVM;
noautoconsole — не подключается к консоли виртуальной машины;
network — тип сети. В данном примере мы создаем виртуальную машину с интерфейсом типа «сетевой мост». Для создания внутреннего интерфейса с типом NAT вводим --network=network:default,model=virtio;
ram — объем оперативной памяти;
vcpus — количество виртуальных процессоров;
disk — виртуальный диск: path — путь до диска; size — его объем;
cdrom — виртуальный привод с образом системы;
graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
os-variant — гостевая операционная система (весь список мы получали командой osinfo-query os, в данном примере устанавливаем Ubuntu 18.04).

[center]Подключение к виртуальной машине[/center]
На компьютер, с которого планируем работать с виртуальными машинами, скачиваем VNC-клиент, например, TightVNC и устанавливаем его.
На сервере вводим:

Код: Выделить всё

virsh vncdisplay VM1
команда покажет, на каком порту работает VNC для машины VM1. У меня было:
:1
* :1 значит, что нужно к 5900 прибавить 1 (5900 + 1 = 5901).
Запускаем TightVNC Viewer, который мы установили и вводим данные для подключения:
Пример подключения к виртуальной машине с помощью TightVNC
Кликаем по Connect. На запрос пароля вводим тот, что указали при создании ВМ, (vnc_password). Мы подключимся к виртуальной машине удаленной консолью.
Если мы не помним пароль, открываем настройку виртуальной машины командой:

Код: Выделить всё

virsh edit VM1
И находим строку:

Код: Выделить всё

<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='12345678'>
  <listen type='address' address='0.0.0.0'/>
</graphics>
* в данном примере для доступа к виртуальной машине используется пароль 12345678.
Управление виртуальной машиной из командной строки
[center]Примеры команд, которые могут пригодиться при работе с виртуальными машинами.[/center]
[desc]1. Получить список созданных машин:

Код: Выделить всё

virsh list --all
2. Включить виртуальную машину:

Код: Выделить всё

virsh start VMname
* где VMname — имя созданной машины.
3. Выключить виртуальную машину:

Код: Выделить всё

virsh shutdown VMname
4. Включить автозапуск виртуальной машины:

Код: Выделить всё

virsh autostart VMname
5. Редактирование конфигурации виртуальной машины:

Код: Выделить всё

virsh edit VMname
[/desc]
[center]Работа с сетевыми интерфейсами[/center].
Добавить обычный сетевой интерфейс (default или NAT) виртуальной машине:

Код: Выделить всё

virsh attach-interface --domain VMname --type network --source default --model virtio --config --live
Добавить интерфейс типа bridge:

Код: Выделить всё

virsh attach-interface --domain VMname --type bridge --source br0 --model rtl8139 --config --live
Удалить сетевой интерфейс:

Код: Выделить всё

virsh detach-interface VMname --type bridge --mac 52:54:00:2e:a9:4d
* где bridge — тип сетевого интерфейса (также может быть network); 52:54:00:2e:a9:4d — MAC-адрес сетевого адаптера (узнать данный адрес можно в конфигурации виртуальной машины или в самой гостевой операционной системы).
7. Посмотреть IP-адреса, выданные виртуальным машинам автоматически:

Код: Выделить всё

virsh net-dhcp-leases default
* где default — виртуальная сеть, создаваемая по умолчанию при установке KVM.
[center]Дополнительные средства управления[/center]
Virt-Manager
Virt-manager — графическая консоль для управления виртуальными машинами. С ее помощью можно создавать последние, модифицировать их, запускать, останавливать, подключаться консолью.
Установить на Linux Ubuntu:

Код: Выделить всё

apt-get install virt-manager

Код: Выделить всё

ubuntu-vm-builder
ubuntu-vm-builder — пакет, разработанный компанией Canonical для упрощения создания новых виртуальных машин.
Для его установки вводим:

Код: Выделить всё

apt-get install ubuntu-vm-builder
Источник
Ответить

Вернуться в «Ubuntu Server»