Ключевые слова:virtual, lguest, linux, limit, (найти похожие документы)
From: Андрей Синицын
Date: Mon, 3 Aug 2010 17:02:14 +0000 (UTC)
Subject: Lguest: Простая платформа виртуализации для Linux
Оригинал: http://boombick.org/blog/posts/57
В основной ветке ядра Linux использовались три системы виртуализации
(гипервизоры), начиная с KVM
в версии 2.6.20, и продолжая Xen-ом и
Lguest в версии 2.6.23. Гипервизоры позволяют пользователю запускать
несколько различных ОС на хост-системе. Lguest - простейшая из трех,
если рассматривать реализацию и удобство использования. И это делает ее
хорошим кандидатом на роль вашего помощника в создании системы
виртуализации.
Lguest достаточно новая система, поэтому она лишена некоторых
особенностей, присущих более "зрелым" системам вирутализации. Она
состоит из двух частей: модуля для ядра и клиентской части. Вы можете
виртуализировать лишь linux-систему на хосте и гостевая ОС должна иметь
ту же версию ядра. Lguest не поддерживает вывод X-сервера для гостевой
системы и миграцию объектов виртуальных машин. Соответственно, вы не
сможете осуществлять перенос гостевой системы в другие копии
гипервизора по сети. Но несмотря даже на такие существенные недостатки,
у lguest есть и несомненные преимущества, такие как возможность
проверки различных конфигураций ядра, фактически без перезагрузки
системы.
Несмотря на малый объем основного кода, около 6000 строк, этот
гипервизор открывает широкие возможности для начинающих
kernel-хакеров и разработчиков систем виртуализации для изучения
принципов работы гипервизора. Кроме того, поскольку в lguest
отсутствуют некоторые возможности, реализованные в других
гипервизорах, он предоставляет разработчикам возможность создания на
его основе собственных функций, которые войдут впоследствии в
основную ветку ядра linux.
Использование lguest
Lguest - это паравиртуализационный гипервизор. Это значит, что
ядро гостевой системы должно быть модифицировано для запуска
в виртуальном окружении, с тем, чтобы оно не пыталось
получить доступ к ресурсам системы несанкционированным способом.
Для использования lguest вы должны убедиться, что следующий набор опций
задействован в конфигурации как гостевого, так хост-ядра. Самый простой
путь
- это использовать одинаковое ядро.
* CONFIG_HIGHMEM64G=n -- у lguest могут возникнуть проблемы с
поддержкой больших объемов памяти, так что выключаем
* CONFIG_TUN=y/m -- Поддержка универсального TUN/TAP устройства. "y"
- встроено в ядро, "m" - собрано модулем
* CONFIG_EXPERIMENTAL=y -- Указание на экспериментальный и/или
незавершенный
код. Ответ Y обеспечивает то, что будут заданы вопросы относительно
нижеследующих опций.
* CONFIG_PARAVIRT=y -- Код поддержки паравиртуализации в ядре имеет
статус "Экспериментальный", но вам это необходимо для работы с
lguest.
* CONFIG_LGUEST=y/m -- встраивание поддержки lguest в ядро или сборка
модуля lg, который и является ядром lguest.
* CONFIG_LGUEST_GUEST=y -- Поддержка гостевых систем
Пересоберите ядро, загрузитесь с ним и, если вы выбирали сборку модулем
любой из необходимых опций, удостоверьтесь, что вы не забыли установить
модули командой make modules_install
Клиентская часть гипервизора называется launcher.c и расположена в
дереве исходных текстов ядра по пути Documentation/lguest/lguest.c
Она предназначена для для установки и конфигурации ядер гостевых
систем. Используйте команду make в директории с файлом для ее сборки
Lguest не может быть загружен с CD/DVD, но позволяет вам установить
полноценную linux-систему с окружением X-сервера. Вы должны установить
дистрибутив linux на другой раздел жесткого диска или использовать
QEMU. После этого вы сможете запускать любое число копий второй системы
в виртуализированном окружении.
Для запуска гостевой системы перейдите в дерево исзодных текстов ядра,
затем в директорию Documentation/lguest и наберите команду
./lguest 64m ../../vmlinux --block=rootfile root=/dev/lgba
Параметры означают следующее: 62m - количество выделяемой памяти для
виртуальной машины, ../../vmlinux - путь к файлу ядра, rootfile - это
файл или блочное устройство, которое должно отображаться как /dev/lgba
в гостевой системе. Это должен быть или образ QEMU, или первичный
раздел с установленной копией linux. И наконец, /dev/lgba будет указан
как корневой раздел для гостевой системы. Если все прошло удачно, то вы
увидите приглашение к логину в гостевую систему.
Документация
Вся документация - это файл README в директории drivers/lguest/. В
конце файла есть советы для kernel-хакеров, разрабатывающих расширения
для lguest. Если вы обратите внимание на последние две строчки в этом
файле, то вы увидите слова "Make preparation!", это значит, что есть
цель preparation для make. Запустив команду make Preparation вы
получите подробную документацию для lguest, начиная с самых первых
шагов и заканчивая самыми тонкими нюансами в работе системы.
Документация будет выведена на текущую консоль.
Lguest не является подходящей платформой для серьезных корпоративных
или научгых решений. Ей предстоит проделать еще долгий путь для
полноценной поддержки технологий виртуализации и работы гостевых
систем. Но она дает вам прекрасную возможность изучить принципы работы
гипервизоров, нюансы их реализации. Вы можете даже форкнуть этот проект
и реализовать свой, полнофункциональный гипервизор на базе lguest
Паравиртуализация
Паравиртуализация предлагает большее быстродействие по сравнению с
полной виртуализацией. Гостевая ОС запускается в своем окружении и
осуществляет системные вызовы к гипервизору и, таким образом, избавляет
от некоторых проблем, связанных с системными вызовами. Гипервизоры,
предоставляющие полную виртуализацию, должны следить за системными
вызовами, такими как, например, операции ввода/вывода, и эмулировать их
на гостевой системе
Отличия Lguest от KVM и Xen
Xen и KVM - это два других гипервизора, которые включены в ядро linux в
последних релизах. KVM - это патч к ядру linux, который позволяет
использовать аппаратных технологии виртуализации для ведущих
процессоров: Intel (VT -- Virtualization Technology) и AMD (AMD-V --
AMD Virtualization) Он позволяет делать полную виртуализацию и вам не
нужно модифицировать гостевую ОС для запуска под KVM. Также вы можете
запускать любые гостевые ОС на linux хост-системе. Но, в отличие от
lguest, вы должны иметь специальные VT- или AMD-V-совместимые
процессоры
Xen, как и lguest, позволяет использовать модель паравиртуализации, в
которой необходимо модифицировать гостевую ОС для запуска на
хост-системе. Xen располагается прямо "на железе" и запускает все копии
ОС на компьютере, включая и хост-систему, и это может снизить
производительность компьютера в целом. Последние релизы Xen могут
запускать и немодифицированные гостевые системы, но только при наличии
VT- или AMD-V-совместимых процессоров. Таким образом, Xen является
двойным гипервизором, позволяющим использовать как полную
виртуализацию, так и паравиртуализацию
Оригинал: http://www.linux.com/feature/126293