Статьи

Введення в основи віртуалізації з KVM

  1. Помилка бази даних: Table 'a111530_forumnew.rlf1_users' does not exist оригінал: Автор: Igor Ljubuncic...
  2. Переваги та недоліки KVM
  3. Тестова платформа
  4. Підготовка до встановлення
  5. Завантаження і установка KVM
  6. Конфлікт з VirtualBox
  7. Використання KVM
  8. Virtual Machine Manager (VMM)
  9. Kernel vs Usermode
  10. Продовжуємо вивчення VMM
  11. Зміна попередніх установок
  12. Створення віртуальної машини
  13. Налаштування віртуальної машини
  14. Запуск віртуальної машини
  15. Командний рядок
  16. Режим чистої емуляції
  17. Що ще почитати по темі
  18. Якщо вам сподобалася стаття, поділіться нею з друзями:
Помилка бази даних: Table 'a111530_forumnew.rlf1_users' does not exist

оригінал:
Автор: Igor Ljubuncic
Дата публікації: 4 травня 2011 року
Переклад: А. Кривошей
Дата перекладу: липень 2011 р

Якщо ви читали мої статті про віртуалізації, то знаєте, що раніше я користувався в основному VMware і VirtualBox, але тепер настав час спробувати що-небудь новеньке. Сьогодні я хотів би представити новий цикл заміток про KVM. Далі, можливо, я перемкнув на Xen або якусь іншу систему, але зараз герой нашого топіка -.
У цьому посібнику ми поговоримо про технології KVM (Kernel-based Virtual Machine), яку створила RedHat, і яка має відкритий вихідний код, є безкоштовною альтернативою своїх комерційних аналогів. Ми дізнаємося, як завантажити, встановити і налаштувати KVM, які інструменти вона має для управління віртуальними машинами, як працювати з KVM в командному рядку, писати скрипти та багато іншого. Крім того, ми торкнемося створення просунутих (в тому числі мережевих) конфігурацій, а також інших цікавих речей. Тепер почнемо.

Тепер почнемо

глосарій KVM

Спочатку трохи поговоримо про те, як працює KVM. Нічого незрозумілого, просто невелике введення, щоб ви знали базову термінологію.
KVM використовує технологію апаратної віртуалізації, підтримувану сучасними процесорами від Intel і AMD і відому під назвами Intel-VT і AMD-V. Використовуючи завантажений в пам'ять модуль ядра, KVM, за допомогою драйвера для користувача режиму (який являє собою модифікований драйвер від QEMU), емулює шар апаратного забезпечення, поверх якого можуть створюватися і запускатися віртуальні машини. KVM може функціонувати і без апаратної віртуалізації (якщо вона не підтримується процесором), але в цьому випадку вона працює в режимі чистої емуляції з використанням QUEMU і продуктивність віртуальних машин дуже сильно знижується.
Для управління KVM можна використовувати графічну утиліту, схожу на продукти від VMware і VirtualBox, а також командний рядок.
Найпопулярнішим графічним інтерфейсом є (VMM), створений в RedHat. Він також відомий під назвою свого пакета як virt-manager і містить кілька утиліт, включаючи virt-install, virt-clone, virt-image і virt-viewer, службовці для створення, клонування, установки і перегляду віртуалльних машин. VMM підтримує також віртуальні машини Xen.
Базовий інтерфейс командного рядка KVM забезпечується необхідні інструменти. У певних випадках ви можете використовувати утиліти підтримки, такі як virt-install, для створення своїх віртуальних машин. В Ubuntu є спеціальна утиліта ubuntu-vm-builder , Розроблена в Canonical, за допомогою якої можна створювати білди Ubuntu.
Якщо ви хочете дізнатися більше про KVM, додаткова інформацію можна знайти за наступними адресами:

The Kernel Virtual Machine - Community Ubuntu Documentation

KVM / Virsh - Community Ubuntu Documentation

Переваги та недоліки KVM

Чи потрібен вам KVM? Це залежить від того, для чого він вам потрібен.
Якщо ви ще не користувалися віртуальними машинами або запускали їх кілька разів просто для інтересу, то освоєння KVM може виявитися важким. Ця програма управляється переважно з командного рядка і не так дружелюбна до користувача, як VMware або VirtualBox. Можна сказати, що в плані графічного інтерфейсу KVM відстає від своїх конкурентів на кілька років, хоча насправді за своїми можливостями їм принаймні не поступається. Можливості KVM найбільш затребувані при її застосуванні в комерційних цілях в бізнес-оточенні.
Далі, якщо ваш процесор не підтримує апаратну віртуалізацію, то KVM буде працювати в дуже повільному і неефективному режимі програмної емуляції. Крім того, відомо, що KVM конфліктує з VirtualBox, однак цієї нагоди буде присвячена окрема замітка.
На підставі вищесказаного можна зробити висновок, що KVM більше підходить людям, які займаються виртуализацией в професійних цілях. Навряд чи вона стане вашою улюбленою домашньою іграшкою, однак якщо ви вирішите витратити певні зусилля для її вивчення, то отримані при цьому знання дозволять бути з технологіями віртуалізації на "ти". На відміну від VMware і VirtualBox, спочатку передбачають, що користувач буде працювати з програмою, використовуючи графічний інтерфейс, KVM орієнтована на використання командного рядка і написання скриптів.
Підбиваючи підсумки, можна сказати, що переваги KVM полягають у використанні новітніх технологій віртуалізації, відсутності будь-яких ліцерзіонних обмежень у використанні, потужний інтерфейсі командного рядка. Якщо ваш процесор не підтримує апаратної віртуалізації, ви не хочете писати скрипти і віддаєте перевагу більш прості в адмініструванні системи, такі як VMware Server, ESXi або VirtualBox, то KVM не для вас.

Тестова платформа

KVM можна використовувати на будь-якому дистрибутиві Linux. Однак основним розробником і спонсором KVM є RedHat. Наприклад, RHEL поставляється відразу з KVM, тому ви можете знайти її в будь-якому дистрибутиві на базі RedHat, наприклад CentOS, Scientific Linux, або Fedora.
Так як вдома я користуюся переважно Ubuntu, то і тестувати KVM буду на цій системі, встановлений на мій порівняно новий ноутбук HP, оснащений процесором i5 з підтримкою апаратної віртуалізації.
У даній статті я розповім, як встановити KVM на 64-бітну Ubuntu Lucid (LTS).

Підготовка до встановлення

Спочатку необхідно перевірити, чи підтримує ваш процесор апаратну віртуалізацію. Це робиться за допомогою наступної команди:

$ Egrep -c '(vmx | svm)' / proc / cpuinfo

$ Egrep -c '(vmx | svm)' / proc / cpuinfo

Якщо висновок являє собою нульове число, все в порядку. Крім того, необхідно перевірити, що технологія віртуалізації активована в BIOS.
Природно, після її активації необхідно перезавантажити машину, щоб зміни вступили в силу. Для перевірки виконайте команду kvm-ok:

Для перевірки виконайте команду kvm-ok:

Завантаження і установка KVM

Для роботи KVM необхідно встановити наступні пакети (для дистрибутивів з apt):

$ Apt-get install qemu-kvm libvirt-bin

Крім того, я настійно рекомендую встановити додатково наступні пакети:

$ Apt-get install bridge-utils virt-manager python-virtinst

PS У різних дистрибутивах пакети можуть називатися по різному. Наприклад, virt-install може називатися python-virt-install або python-virtinst. Залежності для virt-clone, virt-image і virt-viewer повинні встановитися автоматично. На відміну від того, що пишеться в більшості посібників, утиліти bridge встановлювати необов'язково. Вони потрібні тільки в тому випадку, якщо ви збираєтеся створювати мережевий міст між віртуальними і фізичними мережевими картами. У більшості посібників також вказується, що більшість бездротових мережевих інтерфейсів не працюють з мостами. Може бути це вірно для будь-якого окремого випадку, однак у мене міст прекрасно працює з бездротовими адаптерами, тому будемо сподіватися, що і вас все запрацює.
Я настійно рекомендую VMM (virt-manager). Більш того, краще встановити і все утиліти підтримки, включаючи virt-viewer, virt-install, virt-image і virt-clone.
І останнє. Ви можете віддати перевагу ubuntu-vm-builder:

$ Apt-get install ubuntu-vm-builder

Крім цього, швидше за все буде встановлено велику кількість залежностей, тому завантаження може зайняти значний час.
PS На RedHat використовуйте yum install, на SUSE - zypper install.

Конфлікт з VirtualBox

Я знову висловлю думку, відмінну від викладеного в більшості рукводств: KVM і VirtualBox можна встановлювати разом на одну систему. Але запустити їх одночасно не вийде. Іншими словами, модуль ядра однієї з віртуальних машин повинен бути вивантажений з оперативної пам'яті. Але це не причина відмовлятися від установки. Просто спробуйте, чи будуть вони працювати у вас. Якщо немає, цю неполадку можна буде виправити. Пізніше я викладу окреме керівництво, присвячене усунення цієї проблеми. У мене зараз встановлені і працюють обидві віртуальні машини.

Використання KVM

Ну а тепер найцікавіше. Ми почнемо знайомство з KVM з її графічного інтерфейсу, який мало відрізняється від аналогів. таких як консоль VMware і особливо VirtualBox.

Virtual Machine Manager (VMM)

При першому запуску програми ви побачите дві категорії, обидві не підключені. Це посилання на стандартні модулі KVM, поки не працюють. Для їх використання правою кнопкою миші і виберіть "connect".

Для їх використання правою кнопкою миші і виберіть "connect". Щоб додати нове з'єднання, виберіть у меню File> Add Connection. При цьому відкриється вікно, в якому можна буде задати тип гипервизора і тип з'єднання. VMM може використовувати як локальні, так і віддалені з'єднання, включаючи QUEMU / KVM і Xen. Крім того, підтримуються всі методи аутентифікації.

Можна також поставити галочку autoconnect. При наступному запуску програми ці сполуки будуть готові до використання. Це схоже на стартовий інтерфейс VMware Server. Просто для прикладу:

Просто для прикладу:

Kernel vs Usermode

Ви можете запитати, в чому відмінність між режимами normal / default і Usermode? При використанні Usermode віртуальну машину можна запускати без адміністративних привілеїв, але її мережева функціональність при цьому буде обмежена.

Продовжуємо вивчення VMM

Коротко розглянемо інші функції програми.
Мережеву функціональність можна переглянути або змінити, відкривши пункт Host Details. Детально це питання я планую розглянути в окремому керівництві. Там же ми встановимо утиліти для роботи мережевого моста.

Аналогічно можна змінити параметри дискової підсистеми:

Зміна попередніх установок

VMM має невеликий набір опцій, змінюючи які ви зможете краще налаштувати програму під свої потреби. Наприклад, можна активувати показ іконки VMM в системному треї, задати інтервал збору статистики, активувати збір даних по дисковим і мережевим метрик, налаштувати захоплення клавіатури, масштабування консолі, опції аудіосистеми і т.д.

Після цього ви зможете переглядати більш детальну інформацію про віртуальній машині. Наприклад, нижче показаний висновок інформації про використання процесора, дискової і мережевий підсистем для гостьової системи Ubuntu.

Наприклад, нижче показаний висновок інформації про використання процесора, дискової і мережевий підсистем для гостьової системи Ubuntu

Іконка в системному треї виглядає так:

Іконка в системному треї виглядає так:

Тепер ми готові створити нову віртуальну машину.

Створення віртуальної машини

Створити віртуальну машину можна і з командного рядка, але для початку скористаємося VMM. Перший крок повинен бути інтуїтивно зрозумілий. Введіть назву і задайте розташування інсталяційного диска. Це може бути як локальний пристрій у вигляді диска CD / DVD або образу ISO, так і HTTP або FTP сервер, NFS або PXE.

Ми використовуємо локальний носій. Тепер необхідно задати, чи буде це фізичний пристрій або образ. У нашому випадку використовується ISO. Далі потрібно вибрати тип і версію ISO. Тут не потрібно така вже висока точність, але правильний вибір дозволить підвищити продуктивність віртуальної машини.

Задаємо кількість процесорів і розмір оперативної пам'яті:

Задаємо кількість процесорів і розмір оперативної пам'яті:

Четвертий етап - віртуальний диск. Ви можете створити новий образ або використовувати існуючий. Необхідно вибрати розмір диска і поставити, чи буде створено образ диска відразу заданого розміру, або його розмір буде збільшуватися динамічно в міру необхідності. Необхідно відзначити, що виділення відразу всього простору під образ диска підвищує продуктивність і зменшує фрагментованість файлової системи.

Необхідно відзначити, що виділення відразу всього простору під образ диска підвищує продуктивність і зменшує фрагментованість файлової системи

Далі ми ще приділимо увагу дискової підсистеми. Однак зверніть увагу, що при роботі в режимі Usermode у вас не буде прав записи в / var, де за замовчуванням зберігаються образи віртуальних дисків. Тому необхідно буде задати інше розташування для образів. Більш детально це питання буде висвітлено в окремій статті.
Етап 5 - це висновок зведених даних з можливістю настройки деяких просунутих опцій. Тут ви можете змінити тип мережі, задати фіксовані MAC-адреси, вибрати тип віртуалізації і цільову архітектуру. Якщо ви працюєте в режимі Usermode, можливості налаштування мережі будуть обмежені, наприклад неможливо буде створити мости між мережевими інтерфейсами. І останнє: якщо ваш процесор не підтримує апаратної віртуалізації, поле Virt Type матиме значення QUEMU і змінити його на KVM буде неможливо. Нижче ми розглянемо недоліки роботи в режимі емуляції. А тепер можете подивитися, як виглядають типові настройки для віртуальної машини Ubuntu:

А тепер можете подивитися, як виглядають типові настройки для віртуальної машини Ubuntu:

Наша машина готова до використання.

Налаштування віртуальної машини

Консоль VM також має кілька цікавих опцій. Ви можете посилати сигнали гостьовий системі, перемикатися між віртуальними консолями, перезавантажувати або вимикати гостьову систему, клонувати, переміщати, зберігати стан віртуальної машини, робити скріншоти і так далі. Знову все, як у конкурентів.

Нижче представлена ​​пара скріншотів, що показує опції клонування і переміщення віртуальної машини. Надалі ми докладно розглянемо дане питання.

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

А тепер найцікавіше. Нижче кілька красивих скріншотів ...
Починаємо з завантажувального меню 32-бітової версії Ubuntu 10.10 Maverick:

Робочий стіл Puppy Linux як завжди чудовий:

Тепер Ubuntu, запущена під NAT. Зверніть увагу на низьке завантаження процесора. Пізніше ми поговоримо про це, коли будемо обговорювати режим емуляції.

Розмір вікна консолі можна підганяти під дозвіл робочого столу гостьової системи. На наступному скріншоті Puppy і Ubuntu пліч-о-пліч:

На наступному скріншоті Puppy і Ubuntu пліч-о-пліч:

Зверніть увагу на невелику завантаження системи. З цим режимом емуляції можна запускати одночасно кілька віртуальних машин.

З цим режимом емуляції можна запускати одночасно кілька віртуальних машин

При необхідності можна видалити віртуальну машину разом з усіма її файлами:

При необхідності можна видалити віртуальну машину разом з усіма її файлами:

Командний рядок

Ну а тепер познайомимося ближче з нелюбою командним рядком. Наприклад, виведемо список всіх доступних віртуальних машин за допомогою virsh.

Нижче наведена послідовність команд для створення і запуску віртуальної машини за допомогою virt-install.

Повністю команда виглядає так:

де:

--connect qemu: /// system задає тип гипервизора. Опція system використовується при запуску машини на голому ядрі від імені суперкористувача. При запуску від імені звичайного користувача використовується опція session.
-n puppy - це унікальне ім'я віртуальної машини. Його можна змінити за допомогою virsh.
-r 512 задає розмір RAM.
-f задає файл образу диска. У моєму випадку це puppy.img, який я створив за допомогою команди dd.
-c задає the CD-ROM, який може бути як фізичним пристроєм, так і ISO-образом.
--vnc створює гостьову консоль і експортує її як сервер VNC. Опція --noautoconnect забороняє автоматичне відкриття консолі при запуску віртуальної машини.
--os-type задає тип гостьової операційної системи.
--accelerate дозволяє KVM використовувати функції оптимізації, що підвищують продуктивність гостьової системи.
--network визначає тип мережі. У нашому випадку використовується з'єднання, задане за замовчуванням.

Є безліч інших функцій, які задають такі параметри, як кількість ядер процесора, фіксовані MAC-адреси і т.д. Всі вони докладно описані в man-сторінці. Незважаючи на гадану складність, управління за допомогою командного рядка освоюється досить швидко.

Режим чистої емуляції

Я вже говорив, що він жахливо неефективний. Тепер підтвердимо це на практиці. Наприклад, на представленому нижче скріншоті можна бачити, що система при роботі споживає всі доступні їй ресурси процесора, які в даному випадку при наявності одного ядра складають 25% ресурсів фізичного процесора. Це означає, що чотири віртуальні машини будуть повністю завантажувати чотирьохядерний хост.

Крім того, продуктивність гостьової системи не витримують жодної критики. Якщо при включеній апаратної віртуалізації завантаження гостьової Ubuntu займала у мене близько 1 хвилини, то після її відключення вона склала 20 хвилин. Необхідно відзначити, що без використання апаратної віртуалізації продуктивність QUEMU / KVM набагато нижче, ніж у конкурентів.

Що ще почитати по темі

висновок

Я щиро сподіваюся, що вам сподобалося це керівництво. Воно вийшло довгим і детальним, хоча описує тільки перші кроки у вивченні можливостей KVM. Далі я планую продовжити цю серію і висвітлити такі моменти, як настройка мережі, клонування і переміщення віртуальних машин і деякі інші.
Як ви могли бачити, KVM має великий потенціал, хоча може бути трохи складною для початківців, особливо в порівнянні з конкурентами, але після невеликої практики вона покаже всю свою міць.

Якщо вам сподобалася стаття, поділіться нею з друзями:

Середня оцінка 5 при 3 тих, хто голосував

Коментарі

Новости