Віртуалізація в Linux

Віртуалізація в Linux

Що таке віртуалізація?

Повна віртуалізація

  • Апаратура віртуальної машини (HVM)
  • Гіпервізор створює емуляцію пристроїв, щоб перенаправляти запити до реального обладнання
  • Деякі процесори підтримують прямий доступ до апаратури для ВМ
  • Використовує QEMU (Quick Emulator) + Kernel-based Virtual Machine (KVM)

Паравіртуалізація

  • Гостьова ОС змінена, щоб бути свідомою віртуалізації
  • Гостьова система взаємодіє безпосередньо з обладнанням
  • Пам'ять та CPU потребують часткової емуляції
  • QEMU + KVM підтримують паравіртуалізовані пристрої
  • Xen гіпервізор підтримує повну паравіртуалізацію

Гіпервізори в Linux

  • Xen, Proxmox і ESX - працюють напряму з обладнанням
  • KVM - інтегрований у ядро Linux

Керування віртуальними машинами

  • Використання інструментів QEMU напряму
  • Використання libvirt та Virtual Machine Manager
  • Ручне масштабування та модифікація ВМ

Створення віртуальної машини за допомогою QEMU та KVM

Встановлення QEMU та KVM

sudo apt install qemu qemu-kvm

Формати образів дисків

  • Raw: Статичний файл, що представляє диск
  • QCOW2 (QEMU Copy on Write): Динамічно розширюється за потребою

Створення образу диска

qemu-img create -f qcow2 my-image.qcow2 60G
qemu-img create -f raw my-image.raw 60G

Запуск віртуальної машини

qemu-system-x86_64 -cdrom Downloads/ubuntu.iso -hda my-image.qcow2 -m 2G -enable-kvm

Налаштування параметрів ВМ

  • Пам'ять: -m 2G → -m 4G
  • Налаштування мережі: -net none → -net user
  • Додавання дисків: -cdrom image.iso -hdb disk.qcow2
  • Відео-драйвер: -vga qxl

Створення віртуальної машини за допомогою Libvirt

Встановлення Libvirt і Virtual Machine Manager

sudo apt install virt-manager

Створення ВМ через virt-install

virt-install \
 --name my-ubuntu \
 --memory 2048 \
 --disk size=20,format=qcow2,path=/var/lib/libvirt/images/my-ubuntu.qcow2 \
 --cdrom ~/Downloads/ubuntu.iso

Керування ВМ через virsh

virsh start my-ubuntu
virsh shutdown my-ubuntu
virsh suspend my-ubuntu
virsh resume my-ubuntu

Зміна параметрів пам'яті ВМ

virsh dominfo my-ubuntu
virsh setmem my-ubuntu 2048M --config
virsh setmaxmem my-ubuntu 4G

Міграція віртуальних машин між хостами

  • ВМ можуть переміщуватися між гіпервізорами
  • Диски ВМ мають бути на спільному сховищі
  • Жива міграція передає поточний стан та вміст RAM
  • Корисно для балансування навантаження та обслуговування

Використання контейнерів LXC

Що таке контейнери?

  • Віртуальні машини імітують повноцінні операційні системи
  • Контейнери ізолюють процеси та ресурси
  • Контейнери спільно використовують ядро хоста
  • Використовують простори імен Linux для ізоляції

Встановлення LXC

sudo apt install lxc1

Створення та керування контейнерами

sudo lxc-create -n container1 -t ubuntu
sudo lxc-start -n container1
sudo lxc-console -n container1
sudo lxc-attach -n container1

Перегляд інформації про контейнери

sudo lxc-info -n container1
sudo lxc-ls

Зупинка та видалення контейнерів

sudo lxc-stop -n container1
sudo lxc-destroy -n container1

Висновок

Цей посібник надає огляд віртуалізації в Linux, включаючи QEMU, KVM, libvirt, керування віртуальними машинами та контейнерами LXC. Розуміння цих концепцій забезпечує ефективну роботу з віртуалізацією в Linux.