Search
Write a publication
Pull to refresh

Нужен ли еще один гипервизор?

Вступление



В настоящее время только глухой и слепой IT-шник спустившийся с гор может не знать про виртуализацию, ну а рядовые юзеры могут пользоваться ей даже сами об этом не ведая. Сейчас в этом секторе рынка предлагается множество решений на любой вкус и цвет и под разные задачи — свободные и проприетарные, с разными технологическими подходами (эмуляция, паравиртуализация, полная виртуализациия), ориентированные на серверы или десктопы и работающие под разным окружением (OS-hosted и bare-metal).
Вот о последнем различии я и хотел поговорить. Насколько я понимаю, оно заключается в использовании на хосте ОС общего назначения либо специализированной системы, заточенной под работу именно в качестве ОС для гипервизора. Самый типичный пример такого продукта — VMware ESX(i), который использует переработанный RHEL. С точки зрения производительности и удобства управления это лидирующий продукт (адепты Xen's CLI, без флейма!), вот только использовать его на десктопе не получится вследствие его привязанности к серверным платформам (поддерживает в основном серверное железо, работать с гостевыми ОС можно только удаленно).

А вот если бы...


Я посмотрел презентацию Splashtop (см. также Phoenix HyperSpace) и обратил внимание на одну деталь — эта встроенная ОС поддерживает запуск и одновременную работу с несколькими гостевыми ОС «из коробки». Если все эти медиаплейеры, скайпы и прочие огнелисы из нее выбросить, то в остатке получается desktop-oriented bare-metal hypervisor!
Такая концепция «супер-BIOS'а» с необходимым минимумом софта + что-то похожее на VirtualBox мне кажется весьма привлекательной, будь она реализована в виде оптимизированного под это дело GNU/Linux-дистрибутива с полной поддержкой современного железа и некоторым количеством базовых virtual appliances (даже не знаю как адекватно перевести этот термин). К большому сожалению Splashtop — продукт закрытый и переделать его нет никакой возможности :(

Кому и зачем это надо?


Мне, для интереса. :)) Если серьезно, то я могу предположить востребованность такого продукта следующими группами пользователей:
  • Админами, в гетерогенных Linux/BSD/Windows сетях;
  • Разработчиками, что пишут кросс-платформенное ПО;
  • Игрунами, для которых белый свет не мил без HoMM, Fallout и прочих сталкеров;
  • Линуксоидами, взалкавшими насущного (Adobe CS, AutoCAD, FineReader etc...);
  • Виндузятниками, желающими странного (OSS).


Идея


Состоит в создании десктоп-ориентированного юзер-френдли гипервизора со следующими параметрами:

  1. Использование в качестве хостовой ОС модифицированного Archlinux или LFS и свободной системы виртуализации
  2. Поддержка обычного десктопного железа
  3. Минимальное количество необходимых компонентов хостовой ОС
  4. Минимизация использования ресурсов хостовой ОС
  5. Использование быстрого и максимально облегченного WM
  6. Настройка и упрвление гипервизором и гостями через GUI
  7. Экспорт/импорт гостевых ОС по сети или на внешние носители
  8. Динамическое распределение и расшаривание дискового пространства между гостевыми ОС
  9. Включение в дистрибутив преднастроенных гостевых ОС (a.k.a. virtual appliances)
  10. Возможность использования ОС семейства Windows в качестве гостевой системы (с поддержкой аппаратного ускорения Direct3D/OpenGL)*


Подробнее


Рассмотрим эти пункты более детально.

  • Использование в качестве хостовой ОС модифицированного Archlinux или LFS и свободной системы виртуализации
Причина выбора в качестве хостовой ОС именно Арча состоит исключительно в моем субъективном ощущении простоты и «легковесности» этого дистрибутива, но может оказаться что LFS для этого подойдет лучше. Если мне кто-нибудь аргументированно докажет что для этих целей лучше заточить Debian или Gentoo — тоже будет хорошо. Далее, что касается модификации — что именно придется пилить и переделывать я пока даже не имею представления, но без этого, естественно, не обойтись. Не холивара ради, а только для пользы проекта — что использовать в качестве ядра гипервизора — Xen или VirtualBox OSE? А может взять VMware Server?..
  • Поддержка обычного десктопного железа
На сегодняшний день в ядре присутствуют драйверы почти что для всего современного железа, но сложность состоит в прокидывании нестандартных PCI-устройств в гостевые системы. Что делать с веб-камерами, TV-тюнерами, WiFi/WiMAX/блютус-адаптерами, карт-ридерами, FireWire и т.п. устройствами — непонятно.
  • Минимальное количество необходимых компонентов хостовой ОС
Этот пункт тесно связан с предыдущим. Если какую-либо железку не удасться виртуализовать или передать гостям то, видимо, придется добавлять в хост прикладной софт для работы с ней и это не есть гут. Идеальный вариант к которому надо стремиться — это драйверы, гипервизор, X-Server (эх, где же ты, Wayland?) + WM и GUI-утилита для настройки и управления хостом и гостями.
  • Минимизация использования ресурсов хостовой ОС
Ну тут все очевидно — чем меньше лишнего будет крутиться на хосте тем привольнее будет гостям. Разумеется, тюнинг ядра и необходимых служб приветствуется.
  • Использование быстрого и максимально облегченного WM
В выборе оптимального оконного менеджера я принципиальных сложностей не вижу — можно взять, к примеру, AfterStep.
  • Настройка и управление гипервизором и гостями через GUI
Только пересборкой дистрибутива обойтись не удастся, очевидно что какой-то GUI front-end для управления всем хозяйством придется писать. Гуй для гипервизора — это вообще отдельная песня, надо сначала определиться с первым пунктом.
  • Экспорт/импорт гостевых ОС по сети или на внешние носители
Сам по-себе экспорт/импорт виртуальных хостов представляет собой тривиальное копирование образа виртуальной машины (возможно, в сжатом виде), если бы ещё при этом был какой-то унифицированный формат образа…
  • Динамическое распределение и расшаривание дискового пространства между гостевыми ОС
Эту возможность можно попробовать реализовать с помощью LVM (некоторые гипервизоры позволяют использовать динамически расширяющиеся образы дисков). Так же необходима возможность использования общих для нескольких гостей виртуальных дисков (эмулировать сетевые диски/тома с помощью хоста?).
  • Включение в дистрибутив преднастроенных гостевых ОС (a.k.a. virtual appliances)
Сам по-себе «голый» гипервизор мало кому нужен, а включение в дистрибутив того же, скажем, PuppyLinux даст возможность сразу приступить к использованию системы (как минимум, скачать нужный установочный образ или virtual appliance)
  • Возможность использования ОС семейства Windows в качестве гостевой системы (с поддержкой аппаратного ускорения Direct3D/OpenGL)*
На любителя. Или для игр под Windows. *Поддержка аппаратного ускорения Direct3D/OpenGL остается за разработчиком системы виртуализации (и вендоров железа).

Итак


По поводу написанного хотелось бы получить следующие комментарии:
  1. "Баян" — если я изобретаю очередной «велосипед» — пожалуйста, укажите на похожий открытый проект (похожий — это такой, который ставит перед собой те же или почти те же самые цели).
  2. Поправки и исправления — вполне допускаю, что в моих знаниях по этому материалу есть существенные пробелы, поэтому если Вы считаете что я где-то ошибся или использовал неправильный термин буду только рад исправить статью с Вашей помощью.
  3. Концептуальные замечания — если можете, предложите более стройную или гибкую модель проекта, или помогите откалибровать акценты на задачи — как известно, самые грубые ошибки допускаются на этапе проектирования.
  4. Детализация — если Вам интересен этот проект, Вы можете помочь мне сделать следующий шаг — дробление задач на простые подзадачи и составление плана разработки.
  5. Технические Howto — в сообществе активных пользователей Linux каждый человек начинает с азов и постепенно но неудержимо прогрессирует в направлении эксперта/гуру/бога, так что я буду очень признателен каждому просветленному за любую техническую информацию, касающуюся способа реализации той или иной фичи этого проекта.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.