Проверяем, что сервер поддерживает технологии виртуализации
Код: Выделить всё
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Также проверить совместимость можно командой:
Код: Выделить всё
kvm-okЕсли видим:
Код: Выделить всё
INFO: /dev/kvm exists
KVM acceleration can be usedПодготовка сервера
Для нашего удобства, создадим каталог, в котором будем хранить данные для KVM:
Код: Выделить всё
mkdir -p /kvm/{vhdd,iso}Настроим время:
Код: Выделить всё
timedatectl set-timezone Europe/MoscowКод: Выделить всё
apt-get install chronyКод: Выделить всё
systemctl enable chronyУстановка и запуск
Устанавливаем KVM и необходимые утилиты управления.
а) Ubuntu после версии 18.10
Код: Выделить всё
apt-get install qemu qemu-kvm libvirt-daemon-system virtinst libosinfo-binКод: Выделить всё
apt-get install qemu-kvm libvirt-bin virtinst libosinfo-binНастроим автоматический запуск сервиса:
Код: Выделить всё
systemctl enable libvirtdВиртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.
Устанавливаем bridge-utils:Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.
Код: Выделить всё
apt-get install 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Перезапускаем службу сети:
Код: Выделить всё
systemctl restart networkingКод: Выделить всё
vi /etc/netplan/01-netcfg.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.2
- 192.168.1.3
parameters:
stp: true
forward-delay: 4
dhcp4: false
dhcp6: falseПрименяем сетевые настройки:
Код: Выделить всё
netplan applyКод: Выделить всё
vi /etc/sysctl.d/99-sysctl.confКод: Выделить всё
net.ipv4.ip_forward=1Код: Выделить всё
sysctl -p /etc/sysctl.d/99-sysctl.confДля создания первой виртуальной машины вводим следующую команду:
Код: Выделить всё
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=onVM1 — имя создаваемой машины;
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).
Подключение к виртуальной машине
На компьютер, с которого планируем работать с виртуальными машинами, скачиваем VNC-клиент, например, TightVNC и устанавливаем его.
На сервере вводим:
Код: Выделить всё
virsh vncdisplay VM1Код: Выделить всё
:1