Віртуалізація за допомогою Xen в Linux, Система, ядро, утиліти, Статті, Бібліотека Лінуксцентру
[Кріс Buytaert. Переклад: Сгібнєв Михайло (www.dreamcatcher.ru)]
Віртуалізація за допомогою Xen у Linux
by Kris Buytaert 01/26/2006
Переклад: Михайло Михайлович
Xen - досить новий продукт на ринку засобів віртуалізації, але приріст продуктивності Linux та Apache значно перевершує все бачене раніше. Спочатку Xen розроблявся як складова частина платформи Xenoserver, призначеної для організації розподілених обчислень. Іан Пратт, основний дослідник проекту Xenoserver у комп'ютерній лабораторії Кембриджського Університету, очолює команду розробників.
В даний час Xen вже є чимось більшим, ніж частина цього проекту. Тепер багато дистрибутивів Linux та виробники обладнання включають підтримку Xen у свої вироби. Як і багато проектів з відкритим вихідним кодом, у Xen є своя компанія Xensource, яка займається підтримкою комерційних версій та обслуговуванням корпоративних клієнтів. На сьогоднішній день Xen має всі шанси стати великим гравцем у промисловості.
У компанії X-Tend основною проблемою був брак машин для перевірки нових дистрибутивів та додатків. Через фінансові труднощі не було можливості забезпечити клієнтів достатньою кількістю випробувальних стендів. Я схиляюся до думки, що половина людства має такі проблеми.
Давним-давно ми використовували UserModeLinux, але сучасні користувачі знаходять цей механізм занадто складним. Потім ми завантажували образи Qemu із центрального сервера. Це працювало. Єдиною складністю було те, що у разі відключення харчування губилися налаштування і все доводилося розпочинати з початку. Потрібно було щось до краю автоматизоване, скриптоване і без X.
Зараз ми розповімо про те, як Xen змінив нашужиття.
Що таке Xen?
Xen є монітором віртуальних машин для платформи x86 та підтримує одночасне виконання кількох гостьових операційних систем з високою продуктивністю та ізоляцією ресурсів. Xen є продуктом з відкритим вихідним кодом і поширюється GNU General Public License.
Xen став однією із найпопулярніших платформ віртуалізації за останні шість місяців. Хоча це досить невеликий термін, у корпоративному середовищі Xen цілком може скласти конкуренцію VMWare.
Встановивши Xen ви зі звичайної x86 отримаєте зовсім іншу платформу. Це більше не x86. Це машина Xen. Наявна різноманітність операційних систем не буде працювати з вашою x86, вони повинні працювати саме з Xen, хоча для кінцевого користувача та додатків, які працюють на платформі, портованої на Xen, немає майже ніякої різниці.
Після активізації Xen необхідно завантажити його першу віртуальну машину – Domain0. Domain0 має більше привілеїв, ніж інші віртуальні машини і зазвичай використовується тільки для того, щоб керувати іншими (менш привілейованими) віртуальними машинами. Domain0 також керує апаратним забезпеченням. Портування платформи на Xen практично не змінює драйвери пристроїв, що означає, що більшість драйверів, що підтримуються в традиційних ядрах Linux, також будуть працювати в Xen.
У межах Domain0 керуванням віртуальних машин займається демон xend. У свою чергу, він управляється утилітою командного рядка xm.
За допомогою неї ви можете керувати віртуальними доменами та створювати нові.
Xen та різні дистрибутиви
Ми запускали Xen на різних дистрибутивах, починаючи від антикварної Suse 8.2 з ядром 2.4, до Debian і Fedora Core 4 зі свіжим ядром 2.6. На відміну віддеяких інших проектів, Xen в даний час дозволяє працювати з ядрами 2.4 і ядрами версії 2.6. У майбутньому, очевидно, підтримку ядер 2.4 буде виключено. Хоча люди стверджують, що встановлення Xen складна, це все відносно. Почати найкраще з GetXen.org, там можна взяти tarball з необхідними бінарними файлами та інструментарієм, демонстраційний CD та посилання на вихідний код. На момент написання статті стабільною версією Xen була 2.0.7, але більшість використовує бета-версії 3.0.
Якщо xend стартував під час початкового завантаження, ви можете скористатися командоюxm list :
Створення віртуальних доменів
Наш наступний крок полягає у створенні віртуальної машини. Найпростіший спосіб зробити це полягає в тому, щоб або завантажити в chroot образ існуючого дистрибутива або зібрати його самостійно. Xen підтримує віртуальні блокові пристрої (file-backed virtual block devices), фізичні пристрої (такі як /dev/hda9), LVM томи (phy: VolumeGroup/root_volume) або NFS root для ваших віртуальних машин. Я віддаю перевагу використанню логічних томів, оскільки вони надають більшу гнучкість. На диску/dev/sda5, що існує у мене, я створив логічні томи для подальшого їх використання під розділи віртуальних машин: Зазвичай, я в своєму dom0 створюю каталог/vhosts, де я монтую мої розділи . З там, я встановлюю перші пакети ядра FC4 у chroot на фактичному майбутньому root пристрої. Зробимо кілька невеликих виправлень: Майже все готово. Тепер потрібно створити файл конфігурації віртуальної машини. Більшість конфігураційних файлів Xen знаходиться в каталозі/etc/xen, причому кожен віртуальний домен потребує власного файлуконфігурації. Виглядають вони приблизно так: дистрибутив Xen містить файли прикладів, тому вам не повинно скласти великої праці змінити конфігурацію "під себе". Тепер запустіть віртуальну машину командоюxm create config_file_name. Якщо є бажання, додайте-c, щоб підключитися до консолі цього гостьового домену. Через кілька секунд ви повинні отримати запрошення системи на вхід.
Якщо ви зробите символічне посилання/etc/xen/auto, то віртуальна машина стартуватиме під час початкового завантаження (за умови, що виконується скрипт xendomains)
Самостійне складання віртуального домену
Раніше ми зробили гостьовий домен Fedora на кореневому домені Fedora, а зараз займемося поставою Debian на Fedora. Для цього нам знадобитьсяdebootstrap, який можна знайти в RPM, але якщо ви хочете зробити установку коректно, то вам знадобиться оновлений сценарій конфігурації для Sarge. Тепер виконаємо налаштування тома LVM, монтування та використанняdebootstrap для встановлення Debian: Файл конфігурації для Debian виглядає так:
Робота з мережею у віртуальному домені
Цілком ймовірно, що у вас виникне бажання підключити віртуальні машини до мережі. Спочатку розберемося з утилітою brctl, яка дозволяє організувати мережевий міст між кореневим і гостьовим доменами. Xen надає один або більше віртуальних мережевих інтерфейсів для гостьових доменів, але для цього необхідно зробити кілька змін конфігурації мережі Domain0.
Для кожного інтерфейсу, який визначається у віртуальній машині, Xen створить інтерфейс vifx.y, де x - ідентифікатор домену, а y - номер інтерфейсу у вашій віртуальній машині. Наприклад, vif1.1 звертається до eth1домені з ідентифікатором 1.