Віртуалізація в 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.