Установка і настройка гипервизора KVM на CentOS

У даній статті ми розглянемо установку і базове налаштування гипервизора KVM на сервері під керуванням Linux CentOS. Покажемо, як створити віртуальну машину в KVM, змінити її налаштування, встановити гостьову операційну систему і основні команди управління ВМ.

KVM (Kernel-based Virtual Machine) засіб віртуалізації в середовищі Linux, яке використовує апаратну віртуалізацію на базі Intel VT або AMD SVM. За допомогою KVM ви можете створювати ізольовані віртуальні машини з власним віртуальним апаратним забезпеченням: мережевими картами, дисками, відеокартами і іншими пристроями. На віртуальні машини можна уставити будь-яку ОС (не тільки Linux).

зміст:

  • Установка KVM в CentOS
  • Налаштування мережі в KVM
  • KVM: створення віртуальної машини
  • Підключення до ВМ на KVM через VNC, установка ОС

Установка KVM в CentOS

під час налаштування KVM на сервері, потрібно почати з перевірки вашого процесора. Потрібно дізнатися, чи підтримує апаратну віртуалізацію CPU, встановлений на вашому сервері. З консолі сервера, виконайте команду:

# Cat / proc / cpuinfo | egrep "(vmx | svm)"

Якщо ваш процесор підтримує технологію VT-x, у вас повинен бути приблизно такий висновок:

Якщо ж команда нічого не видала, але ваш процесор точно підтримує віртуалізацію, перевірте, вохможно дана опція відключена в BIOS сервера. шукайте параметри "Intel Virtualization Technology" або "SVM MODE".

Детальніше про отримання інформації про апаратне забезпечення в Linux.

На моєму сервері підтримка даної технології включена, тому можна приступати до установки необхідних компонентів в CentOS через пакетний менеджер yum / dnf:

# Yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install -y

  • qemu-kvm - сам гипервизор KVM;
  • libvirt - бібліотеки управління вірилізацією;
  • virt-install - команди для управління віртуальними машинами KVM.

На сервер буде встановлено велику кількість пакетів, стежте, щоб у вас не виникло помилок в процесі установки.

Тепер потрібно додати сервіс libvirtd в автозавантаження і запустити його:

# Systemctl enable libvirtd
# Systemctl start libvirtd

Перевірте, завантажилися чи модулі ядра kvm_intel і kvm:

[Root @ localhost /] # lsmod | grep kvm

kvm_intel 188688 0 kvm 636931 1 kvm_intel irqbypass 13503 1 kvm

Якщо у вас нічого не виводиться, перезавантажте сервер і перевірте повторно.

Налаштування мережі в KVM

Тепер створимо каталоги, в яких будуть зберігатися диски віртуальних машин і iso образи:

# Mkdir -p / vz / disk, iso

Щоб створені віртуальні машини мали доступ в інтернет, нам потрібно налаштувати мережу через bridge. Для цього буде потрібно пакет bridge-utils, перевірте чи встановлений він в Linux командою:

# Rpm -qa | grep bridge-utils

Якщо потрібно, встановіть його:

# Yum install bridge-utils -y

Після установки пакетів для KVM, в системі з'явився мережевий інтерфейс virbr0:

# Ip a

Щоб створити мережевий міст (bridge), Потрібно налаштувати файл конфігурації для мережевого інтерфейсу сервера:

# Cp / etc / sysconfig / network-scripts / ifcfg-enp1s0f0 / etc / sysconfig / network-scripts / ifcfg-enp1s0f0_bak - робимо бекап файлу

# Nano / etc / sysconfig / network-scripts / ifcfg-enp1s0f0 - відкриваємо для редагування

Видаліть всі вміст і замініть на наступне:

DEVICE = "enp1s0f0" ONBOOT = "yes" BRIDGE = br0

У вашому випадку, ім'я інтерфейсу може відрізнятися (дивіться через команду ip a).

Після чого створіть файл:

# Nano / etc / sysconfig / network-scripts / ifcfg-br0

з вмістом:

DEVICE = "br0" TYPE = BRIDGE ONBOOT = yes BOOTPROTO = static IPADDR = "IP_адрес_сервера" NETMASK = "255.255.255.0" GATEWAY = "Основной_шлюз" DNS1 = "77.88.8.8" DNS2 = "8.8.4.4"

Де вкажіть свої дані: IP-адреса сервера і основний шлюз. Після редагування конфігураційних файлів мережевих інтерфейсів потрібно перезапустити есервіс:

# Service network restart

Якщо у вас після рестарту network пропав доступ до сервера, спробуйте перезавантажити його. Іноді це потрібно для коректного налаштування bridge.

Щоб перевірити стан bridge, використовуйте команду:

# Brctl show

bridge name bridge id STP enabled interfaces br0 8000.ac1f6b945206 no enp1s0f0 virbr0 8000.5254003f23cf yes virbr0-nic

Останнім кроком потрібно налаштувати перенаправлення мережевого трафіку:

# Echo -e "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p

Тепер запустіть сервіс libvirtd:

# Service libvirtd restart

На цьому базова настройка KVM закінчена, можна створити віртуальну машину.

KVM: створення віртуальної машини

Перед створенням віртуальної машини, я скачав образ CentOS 8 з офіційного дзеркала в директорію / Vz / iso:

# Cd / vz / iso && wget https://mirror.yandex.ru/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

Щоб створити нову віртуалную машину KVM, виконайте:

virt-install -n test-centos \
--noautoconsole \
--network = bridge: br0 \
--ram 2048 --arch = x86_64 \
--vcpus = 4 --cpu host --check-cpu \
--disk path = / vz / disk / test-centos.img, size = 32 \
--cdrom /vz/iso/CentOS-8.1.1911-x86_64-dvd1.iso \
--graphics vnc, listen = IP, password = 123456789 \
--os-type linux --os-variant = rhel7 --boot cdrom, hd, menu = on

  • test-centos - ім'я ВМ;
  • noautoconsole - після створення не потрібно підключатися до консолі віртуальної машини автоматично;
  • network - тип мережі (в нашому випадку bridge);
  • ram - кількість оперативної пам'яті в ВМ;
  • vcpus - кількість ядер процесора (настройка vCPU в KVM);
  • disk - віртуальний диск, path - шлях до диска. size - обсяг (у подальшому його можна розширити / зменшити);
  • сdrom - віртуальний cdrom, в який монтується iso образ для установки гостьовий ОС;
  • graphics - параметри підключення до машини за допомогою графічної консолі. Ми підключаємося через VNC, тому в listen вказує IP сервера, де створили ВМ і пароль для підключення в консолі віртуальної машини (password).

Щоб ВМ завантажувалася автоматично, виконайте:

# Virsh autostart test-centos

Підключення до ВМ на KVM через VNC, установка ОС

Щоб підключитися до віртуальної машини через VNC, нам потрібно дізнатися порт, на якому вона працює:

[Root @ local vz] # virsh vncdisplay test-centos

IP: 0

0 означає, що порт для підключення по VNC 5900, якщо у вас буде інший результат, просто додавайте до 5900 цифру, яку видасть вам команда.

Для підключення по VNC до серверів, я використовую утиліту TightVNC. Запустіть її і вкажіть IP-адреса сервера і VNC порт, який ми дізналися раніше (через подвійне двокрапка).

натисніть "Connect", У вікні, вкажіть пароль, який задали при створенні ВМ. Якщо все зробили правильно, у вас відкриється консоль сервера, на якій запущена установка CentOS (або інший ОС, образ якої ви змонтували).

Якщо у вас на сервері встановлено фаєрвол, відкрийте мережеві порти для VNC 5900-5910 в firewalld / iptables, цієї кількості повинно вистачити. Після установки гостьовий ОС на віртуальну машину, запустіть ВМ з консолі сервера:

Щоб вимкнути віртуальну машину KVM, використовуйте команду:

# Virsh shutdown test-centos

Щоб вивести список всіх зареєстрованих віртуальних машин KVM:

# Virsh list --all

Детальніше про управління віртуальними машинами KVM з консолі сервера за допомогою virsh, додавання пам'яті, CPU, дисків та мережевих інтерфейсів.

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