Перестаємо боятися віртуалізації за допомогою 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
Отримання інформації про конкретну виртуалке: