Обзоры Обзоры 01.02.2007 в 15:49 comment

Ядро Linux как hypervisor

author avatar
https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://itc.ua/wp-content/themes/ITC_6.0/images/no-avatar.svg

ITC.UA

автор

В прошлом году вышло, ни много ни мало, пять версий ядра Linux (2.6.15-19). Нынешний сулит быть не менее насыщенным. Более того, ожидается, что следующие версии будут довольно интересными. Так, в скором времени появится ядро 2.6.20, в котором реализованы функции, улучшающие обслуживаемость (kdump и SystemTap), асинхронное сканирование SCSI-шин, а также многочисленные обновления и дополнения драйверов. Но, без сомнения, самое главное его новшество – встроенное средство виртуализации.

Ядро Linux как hypervisor
Получение работающей виртуальной системы Windows XP – несложная задача

Трудно сказать, назрела ли реальная необходимость во внутриядерном виртуализационном Linux-механизме. Скорее, конечно, да, чем нет. В пользу этого мнения говорят данные о ежегодном приросте рынка ПО виртуальных машин (ВМ), составляющем порядка 60%, и то обстоятельство, что ОС Linux в качестве ВМ-платформы пользуется заслуженной популярностью. И тем не менее долгое время разработчики ядра и лица, имеющие право голоса при обсуждении вопросов его развития, не могли остановиться на какой-либо технологии ВМ. При этом их выбор был невелик. Самым достойным претендентом на роль встраиваемого средства считалось функционально развитое и достаточно стабильное ПО Xen. Компания XenSource пыталась пробить ему дорогу, но безрезультатно. Та же участь постигла VMware со стандартом на паравиртуализацию и его реализацией. Cообщество ждало появления чего-то нового. И им стало ПО Kernel-based Virtual Machine (KVM), работы над которым в рамках соответствующего Open Source-проекта (kvm.sourceforge.net) начались несколько месяцев назад. Следует отметить, что создание KVM не является традиционно чисто энтузиастским (т. е. на добровольных началах), так как проводится под патронатом израильского стартапа Qumranet. Что интересно, один из основателей компании – Моше Бар (Moshe Bar), в свое время занимавший пост главного технического директора XenSource. А это немаловажно, ведь опыт в данной области, более того, в конкурирующей компании, позволит избежать ошибок, которые могут не только замедлить разработку и продвижение проекта, но и вообще погубить его.

Почему не Xen?

В отличие от Xen, обеспечивающего два вида виртуализации: посредством «чистого» гипервизора (hypervisor) и паравиртуализацию (тот же гипервизор, однако гостевые ОС сообщаются с ним не напрямую, а через специальный небольшой интерфейс; при этом ядра систем должны быть подвергнуты модификации), в KVM принят только первый. Это ПО поддерживает технологии аппаратной виртуализации – к ним относятся практически идентичные расширения наборов команд процессоров Intel VT и AMD SVM (или AMD-V). Корректнее даже будет сказать, что KVM предназначено для раскрытия их возможностей.

Второе и главное отличие KVM от Xen состоит в его легковесности – ее удалось добиться, переложив ряд функций на ядро Linux. И это более чем оправдано. Посудите сами. Основная задача программного слоя, который называется гипервизор, заключается в распределении ресурсов между гостевыми ОС. Однако современное оборудование с каждым днем становится сложнее. Соответственно, требуется все больше усилий, чтобы «отразить» его в гипервизоре. Но ведь все эти функции уже реализуются в ядре Linux. Поэтому разработчики KVM не стали дублировать функциональность (как в случае с Xen), а полагаются на готовые средства.

Механика

Архитектурно KVM составляют два компонента:

  • драйвер, отвечающий за поддержку аппаратных средств виртуализации (он в виде модуля подключается к ядру);
  • программа пользовательского режима для эмуляции устройств ввода/вывода и BIOS. Она представляет собой слегка модифицированную версию ПО QEMU.

Каждая виртуальная машина в системе – это планируемый диспетчером ядра процесс. Следовательно, для управления ими можно применять обычные Linux-команды. Так, программа kill позволяет выключать, приостанавливать и возобновлять работу ВМ. Информацию об использовании ресурсов ВМ можно получать с помощью top, а nice обеспечивает выполнение ВМ с пониженным приоритетом. Наконец, taskset предоставляет возможность запуска задачи на определенном CPU многопроцессорной системы (SMP). ВМ принадлежит запустившему ее пользователю, а контроль прав доступа осуществляется ядром.

Project Manager.
Онлайн-курс Project Manager. З нуля за 3,5 місяці до нової позиції Без знання коду, англійської та стресу.
Зарееструватися
Ядро Linux как hypervisor
Архитектура KVM

KVM пока поддерживает лишь запуск таких гостевых систем, как Linux и Windows (x86). Сейчас ведутся работы над реализацией функции «живого перемещения» гостевых систем (live migration, ее механизм заключается в перенесении экземпляров ОС с одних вычислительных узлов на другие без прерывания исполнения; она полезна для администраторов центров обработки данных и кластеров), а также над оптимизацией виртуализации MMU, поддержкой гостевых SMP-ВМ и исполнения гостевых систем в реальном времени.

Установка

Чтобы получить возможность работы с KVM, дожидаться выхода стабильной версии 2.6.20 вовсе не обязательно, так как данное ПО пригодно для работы и с несколькими предыдущими ядрами. Для его сборки необходимо наличие пакета kernel-devel, применяемого при компиляции и внедрении модулей в ядро. Кроме того, требуются компилятор GCC 3.x, библиотеки и заголовки SDL, zlib, alsa и libuuid.

Установка KVM ничего сложного из себя не представляет. Эта процедура включает привычные пользователям UNIX-подобных ОС команды извлечения из архива, конфигурирования, сборки и размещения в файловой системе. Чтобы загрузить модуль в ядро, используется команда /sbin/modprobe с аргументом kvm-intel в случае Intel VT и kvm-amd – для AMD-V.

Для инсталляции Windows в KVM следует выполнить следующие строки:

/usr/local/kvm/bin/qemu-img create -f qcow XPdisk.img 5G
/usr/local/kvm/bin/qemu -cdrom winxpsp2.iso -hda XPdisk.img 
-m 512 -boot d -no-acpi

C помощью первой создается файл виртуального диска XPdisk.img емкостью 5 GB. Для него выбран формат QEMU copy-on-write, предполагающий заполнение по мере надобности. Вторая команда, собственно, и запускает процедуру инсталляции с образа диска winxpsp2.iso. Программа получит в распоряжение 512 MB оперативной памяти. Параметр «-boot d» в виртуальной BIOS включает загрузку с компакт-диска. Опция «-no-acpi» используется, поскольку поддержка ACPI в QEMU все еще экспериментальна.

Project Manager.
Онлайн-курс Project Manager. З нуля за 3,5 місяці до нової позиції Без знання коду, англійської та стресу.
Зарееструватися

После этого загрузить систему можно так:

/usr/local/kvm/bin/qemu -hda XPdisk.img -boot c -m 512

В системах без Intel VT или AMD-V виртуализация осуществляется посредством «чистого» QEMU, имеющего весьма низкую скорость работы.

Впечатления

В большинстве случаев, фигурально выражаясь, изобретение велосипеда не приветствуется, и из этого редко что-либо выходит. Однако KVM – скорее исключение из правил. В данном случае выбранный подход кажется вполне оправданным, ведь затраты компенсируются благодаря его концептуальной простоте, компактной реализации и удобству использования. Впрочем, эта разработка еще несколько сыровата, что выражается в невозможности загрузки ОС, отличных от Windows и Linux. Пока рано что-либо говорить и о реальных показателях производительности. Можно лишь отметить, что у данного средства есть немалый потенциал и, будем надеяться, спустя какое-то время оно его продемонстрирует в полной мере.

Продолжается конкурс авторов ИТС. Напиши статью о развитии игр, гейминг и игровые девайсы и выигрывай профессиональный игровой руль Logitech G923 Racing Wheel, или одну из низкопрофильных игровых клавиатур Logitech G815 LIGHTSYNC RGB Mechanical Gaming Keyboard!


Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: