Цю замітку я пишу для того, щоб продемонструвати покрокову установку і настройку віртуальної машини в Linux на базі KVM. Раніше я вже писав про віртуалізацію, де використав чудовий інструмент Vagrant.
Зараз переді мною постало питання оренди хорошого сервера з великим об'ємом оперативної пам'яті і об'ємним жорстким диском. Але запускати проекти прямо на хост-машині не хочеться, тому буду розмежовувати їх за окремим невеликим віртуальним серверам з ОС Linux або docker-контейнерів (про них розповім в іншій статті).
Всі сучасні хмарні хостинги працюють за таким же принципом, тобто хостер на хорошому залозі піднімає купу віртуальних серверів, які ми звикли називати VPS / VDS, і роздає їх користувачам, або автоматизує цей процес (привіт, DigitalOcean).
KVM (kernel-based virtual machine) це програмне забезпечення для Linux, що використовує апаратні засоби x86-сумісних процесорів для роботи з технологією віртуалізації Intel VT / AMD SVM.
установка KVM
Всі махінації зі створення віртуальної машини я буду проводити на ОС Ubuntu 16.04.1 LTS. Щоб перевірити чи підтримує ваш процесів апаратну віртуалізацію на базі Intel VT / AMD SVM, виконуємо:
Якщо термінал непорожній, то значить все в порядку і KVM можна встановлювати. Ubuntu офіційно підтримує тільки гипервизор KVM (входить до складу ядра Linux) і радить використовувати бібліотеку libvirt як інструмент для керування ним, що ми і будемо робити далі.
Перевірити підтримку апаратної віртуалізації в Ubuntu також можна через команду:
У разі успіху, ви побачите щось на зразок цього:
Встановлюємо пакети для роботи з KVM:
Якщо у вас є доступ до графічної оболонці системи, то можна встановити GUI менеджер libvirt:
Користуватися virt-manager досить просто (не складніше VirtualBox), тому в цій замітці мова піде про консольний варіант установки і настройки віртуального сервера.
Установка і настройка віртуального сервера
У командному варіанті установки, настройки і управлінням системою, незамінним інструментом є утиліта virsh (надбудова над бібліотекою libvirt). У неї велика кількість опцій і параметрів, докладний опис можна отримати так:
або викликати стандартний "help":
Я завжди дотримуюся таких правил при роботі з віртуальними серверами:
Приступимо до встановлення першої виртуалки (64-бітної серверної Убунту 16.04 LTS):
Завантаживши образ запускаємо установку:
Перекладаючи всі ці параметри на "людську мову", то виходить, що ми створюємо віртуальну машину з ОС Ubuntu 16.04, 1024 МБ ОЗУ, 1 процесором, стандартної мережевої картою (віртуальна машина буде ходити в інтернет как-будто через NAT), 20 ГБ HDD.
Варто звернути увагу на параметр --os-variant. він вказує Гіпервізор під яку саме ОС слід адаптувати настройки.
Список доступних варіантів ОС можна отримати, виконавши команду:
Якщо такої утиліти немає у вашій системі, то встановлюємо:
Після запуску установки, в консолі з'явиться ось такий напис:
Це нормальна ситуація, продовжувати установку ми будемо через VNC.
Дивимося на якому порту він був піднятий у нашій виртуалки (в сусідньому терміналі, наприклад):
Якщо нічого не знайшлося або ви бачите:
Те правимо конфиг на
і перезавантажуємо sshd.
Налаштування Port forwarding
Виконуємо команду на локальній машині:
Тут ми налаштували ssh port forwarding з локального порту 5900 на серверний порт 5900. Тепер уже можна підключитися до VNC, використовуючи будь-який VNC-клієнт. Я віддаю перевагу UltraVNC через простоти і зручності.
Після успішного підключення, на екрані відобразиться стандартне вікно привітання початку установки Ubuntu:
Редагуємо мережеві настройки гипервизора:
Шукаємо DHCP, і додаємо ось це:
Має вийти щось на зразок цього:
Для того, щоб настройки вступили в силу, необхідно перезавантажити DHCP сервер гипервизора:
Є й інші способи задати виртуалке статичний IP, наприклад, безпосередньо редагуючи мережеві настройки всередині гостьової системи, але тут вже як душі вашої буде завгодно. Я лише показав варіант, який сам вважаю за краще використовувати.
Щоб підключитися до терміналу віртуальної машини, виконуємо:
Машина готова до бою.
Virsh: список команд
Щоб подивитися запущені віртуальні хости (всі доступні можна отримати додавши --all):
Перезавантажити хост можна:
Зупинити віртуальну машину:
Додати в автозапуск:
Дуже часто потрібно склоніровать систему, щоб в майбутньому використовувати її як каркас для інших віртуальних ОС, для цього використовують утиліту virt-clone.
Крім установки виртуалки через VNC, також можливий варіант з X11Forwarding через утиліту virt-manager. У Windows, наприклад, для цього можна використовувати Xming і PuTTY.
На каналі вже понад 1000 учасників, тому приєднуйтесь і Ви - DevBrain