Перестаємо боятися віртуалізації за допомогою kvm, записки програміста

Мені особисто найпростіше думати про KVM (Kernel-based Virtual Machine), як про такий рівень абстракції над технологіями хардверних віртуалізації Intel VT-x і AMD-V. Беремо машину з процесором, що підтримує одну з цих технологій, ставимо на цю машину Linux, в Linux'е встановлюємо KVM, в результаті отримуємо можливість створювати виртуалки. Так приблизно і працюють хмарні хостинги, наприклад, Amazon Web Services. Поряд з KVM іноді також використовується і Xen, але обговорення цієї технології вже виходить за рамки даного поста. На відміну від технологій контейнерної віртуалізації, наприклад, того ж Docker. KVM дозволяє запускати в якості гостьової системи будь-яку ОС, але при цьому має і бо льшие накладні витрати на віртуалізацію.

Примітка: Описані нижче дії були перевірені мною на Ubuntu Linux 14.04, але по ідеї будуть багато в чому справедливі як для інших версій Ubuntu, так і інших дистрибутивів Linux. Все повинно працювати як на робочому столі, так і на сервері, доступ до якого здійснюється по SSH.

установка KVM

Перевіряємо, чи підтримується Intel VT-x або AMD-V нашим процесором:

grep -E '(vmx | svm)' / proc / cpuinfo

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

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Що де прийнято зберігати:

  • / Var / lib / libvirt / boot / - ISO-образи для установки гостьових систем;
  • / Var / lib / libvirt / images / - образи жорстких дисків гостьових систем;
  • / Var / log / libvirt / - тут слід шукати все логи;
  • / Etc / libvirt / - каталог з файлами конфігурації;

Тепер, коли KVM встановлений, створимо нашу першу виртуалку.

Створення першої виртуалки

Як гостьовий системи я вибрав FreeBSD. Качаємо ISO-образ системи:

cd / var / lib / libvirt / boot /
sudo wget http: // ftp.freebsd.org / path / to / some-freebsd-disk.iso

Управління віртуальними машинами в більшості випадків проводиться за допомогою утиліти virsh:

sudo virsh --help

Перед запуском виртуалки нам знадобиться зібрати деякі додаткові відомості.

Дивимося список доступних мереж:

sudo virsh net-list

sudo virsh net-info default

Дивимося список доступних оптимізацій для гостьових ОС:

sudo virt-install --os-variant list

Отже, тепер створюємо віртуальну машину з 1 CPU, 1 Гб RAM і 32 Гб місця на диску, підключену до мережі default:

sudo virt-install \
--virt-type = kvm \
--name freebsd10 \
--ram 1024 \
--vcpus = 1 \
--os-variant = freebsd8 \
--hvm \
--cdrom = / var / lib / libvirt / boot / FreeBSD- 10.2 -RELEASE-amd64-disc1.iso \
--network network = default, model = virtio \
--graphics vnc \
--disk path = / var / lib / libvirt / images / freebsd10.img, size = 32. bus = virtio

Ви можете побачити:

WARNING Unable to connect to graphical console: virt-viewer not
installed. Please install the 'virt-viewer' package.

Domain installation still in progress. You can reconnect to the console
to complete the installation process.

Це нормально, так і має бути.

Потім дивимося властивості виртуалки в форматі XML:

sudo virsh dumpxml freebsd10

За допомогою улюбленого клієнта (я особисто користуюся Rammina) заходимо по VNC. при необхідності використовуючи SSH port forwarding. Потрапляємо прямо в інстялятор FreeBSD. Далі все як завжди - Next, Next, Next, отримуємо встановлену систему.

Основні команди

Давайте тепер розглянемо основні команди для роботи з KVM.

Отримання списку всіх віртуалок:

sudo virsh list --all

Отримання інформації про конкретну виртуалке: