1.Понятие виртуализации. Для чего используется виртуализация.

Виртуализация - одно из наиболее значительных и быстро развивающихся направлений в корпоративных вычислениях. В Gartner ее определяют как создание пула ресурсов (серверов, систем хранения, сетевой инфраструктуры и ПО) для их автоматического распределения и совместного использования. Это новый виртуальный взгляд на ресурсы, не ограниченный реализацией, географическим положением или физической конфигурацией составных частей. Обычно виртуализированные ресурсы включают вычислительные мощности и хранилище данных.

Средства виртуализации включают множество методов для одновременного совместного использования разнообразных ресурсов на одной безопасной физической системе. Для обеспечения разных способов виртуализации компания Microsoft предоставляет решения, отображенные на следующей иллюстрации:

Рис. 1 Принципиальная схема решений виртуализации компании Microsoft.

Перед подробным описанием и практическим применением каждого из решений виртуализации компании Microsoft, хотелось бы сказать несколько слов о самой технологии виртуализации. Понятие виртуализация появилось еще до создания х86 операционных систем, а именно в середине 60-х годов компанией IBM путем создания двух операционных систем - Virtual Machine (VM) и Conversational Monitor System (CMS). В 90-х годах появились 32- и 64-разрядные операционные системы. В 2006 году компаниями Intel и AMD были разработаны новые инструкции для процессоров, позволяющие им поддерживать аппаратную виртуализацию. Не углубляясь в детали инструкций, технологии называются AMD Virtualization (AMD-V) и Intel Virtualization Technology (Intel-VT). С их помощью можно разворачивать аппаратную схему, обеспечивающую или позволяющую одновременное параллельное выполнение нескольких или даже многих операционных систем на одном и том же хост-компьютере, который называется гипервизором.

Начиная с 2007 года, компания Microsoft совместно с Citrix, создали свой гипервизор 1 типа, который называется Microsoft Hyper-V Server 2008. В понятии виртуализации огромную роль играет монитор виртуальных машин (VMM – Virtual Machine Monitor). Это программный уровень абстракции, разделяющий аппаратную платформу на несколько виртуальных машин. VMM отвечает за создание, изоляцию и сохранение виртуальных машин, а также за реализацию доступа к ресурсам хостовой системы. Данный механизм привязывается к архитектуре процессора, предназначенной для запуска виртуальных машин в системах, работающих непосредственно на аппаратном уровне. На следующей иллюстрации вы можете увидеть три основных типа архитектур, предназначенных для осуществления VMM:

Рис. 2 Основные типы виртуализации

Существует  три основных типа, используемых для создания интерфейсов между виртуальными машинами и системами виртуализации ресурсов: полная виртуализация (эмуляция), аппаратная (родная) виртуализация, а также паравиртуализация

Полная виртуализация. Это технология, используемая для предоставления определенной виртуальной среды, которая обеспечивает полное симулирование базового оборудования. Полная виртуализация была возможна не в полной мере до добавления технологий AMD-V и Intel-VT. Компания Microsoft использует эту технологию в программе Virtual Server 2005 R2 и Virtual PC. Для технологии полной виртуализации компания Microsoft не является монополистом. Также доступны решения при помощи следующих продуктов: ADEOS, Mac-на-Linux, Parallels Desktop для Mac, Parallels Workstation, VMware Workstation, VMware Server (бывший GSX Server), VirtualBox, Win4BSD и Win4Lin Pro;

Аппаратная виртуализация. Эта технология позволяет запускать на одном физическом компьютере (хосте) несколько экземпляров операционных систем (гостевых ОС) в целях обеспечения их независимости от аппаратной платформы и эмуляции нескольких (виртуальных) машин на одной физической. Аппаратная виртуализация получила свое признание с появлением инструкций Intel-VT и AMD-V. Решениями этой технологии являются Windows Hyper-V Server 2008/2008 R2 от компании Microsoft, а также VMware ESX и Xen от компании Citrix;

Паравиртуализация. Паравиртуализация – это техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для чего их ядро незначительно модифицируется. Операционная система взаимодействует с программой Гипервизора, который предоставляет ей гостевой API, вместо использования напрямую таких ресурсов, как таблица страниц памяти. Долгое время термин паравиртуализации ассоциировался с компанией Citrix, в частности с технологией XenSource. В июле 2006 года компания Microsoft заключила договор с Citrix для реализации внедрения API в инфраструктуру Hyper-V для возможности использования Linux-based операционных систем.

Для чего нужна виртуализация? Для обучения — например, вы только начали использовать компьютер и ваш знакомый, который разбирается в компьютерах гораздо сильнее вас, создал на вашем недавно приобретённом компьютере виртуальный компьютер. Вы сможете научиться

пользоваться программами и разобраться с настройками, используя виртуальный компьютер, таким образом если вы допустите ошибку, то это никак не повлияет на основной компьютер, а виртуальный компьютер (при использовании специальной функции программы виртуализации) можно вернуть в первоначальное состояние очень быстро. Таким образом вы обезопасите себя от ошибок, которые могут вызвать некорректную работу операционной системы.

Для тестирования — мне очень нравится скачивать из интернета программы, иногда я их устанавливаю по 5-10 штук в день. Естественно, не все они работают корректно и очень часто я их удаляю в тот же день. При таком режиме работы на обычном компьютере через некоторое время он начнёт работать гораздо медленнее, это связано с таем, что при удалении программ не всегда удаляются все файлы и записи реестра. Ещё каких-то 5 лет назад приходилось регулярно переустанавливать операционную систему на которой проводились такие опыты. Теперь, используя виртуальный компьютер, применяя функцию «снимок» (snapshot) всегда можно вернуть первоначальное состояние всего за несколько кликов мышкой. Это относится и к инфицированию виртуального компьютера вирусами, после заражения этот компьютер можно не лечить, а всё так же вернуться на более раннее состояние системы.

Для работы — в офисах и на предприятиях используются серверы — компьютеры, которые обладают повышенной надёжностью и производительностью (и как следствие ценой).

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

Раньше требовалось или покупать новый сервер (дополнительные затраты) или настраивать имеющийся для расширения сервисов, которые он предоставляет (что не всегда правильно с точки зрения безопасности) - это может затруднить восстановление работоспособности при сбое, а также увеличить вероятность отказа одной функции при нестабильной работе другой.

Альтернативное определенный ответ: Виртуализация. Выделилось и ещё одно направление применения бинарной трансляции — виртуализация (приложение), но виртуальные машины, как правило, эмулируют только привилегированные инструкции, создавая впечатление для нескольких гостевых ОС единовластного обладания микропроцессором.

Виртуализация

Набор средств и технологий, позволяющих распределять совокупность ресурсов вычислительной системы между несколькими средами выполнения приложений, например, в случае виртуализации серверов для «гостевой» ОС создаётся впечатление, что она непосредственно работает с аппаратным обеспечением, хотя на самом деле между аппаратным обеспечением и ОС существует прослойка программного обеспечения, которая занимается тем, чтобы предоставить ОС требуемые ресурсы.>

 

2. Классическая реализация виртуализации (IBM): trap-and-emulate.

У classical virtualization есть еще имя trap-and-emulate, которое означает что привелигированные инструкции перехватываются железом и эмулируются программно. Непривелигированные инструкции выполняются в естественно - процессором. Software virtualization с другой стороны имеет имя binary translation, что намекает на то что практически каждая инструкция эмулируется. Спрашивается, не правильнее ли было бы называть classical virtualization просто virtualization, в то время как software virtualization - emulation.

 

3.  Реализация для x86: binary translation и shadow page tables.

В компьютерной области под двоичной трансляцией (от англ. binary translation) понимают эмуляцию одного набора инструкций на другом за счет трансляции машинного кода. Последовательности инструкций переводятся из исходного набора (source) в целевой (target) набор инструкций. ДТ позволяет выполнять приложения одной архитектуры при работе на второй, причём для оптимизирующих двоичных компиляторов скорость выполнения кода зачастую выше оригинала.

Двоичная трансляция делится на статическую и динамическую. В случае динамики компиляция происходит незаметно для пользователя, при запуске приложения. Статический компилятор делает из двоичного кода исходной архитектуры готовое полноценное приложение для целевой архитектуры. При статической ДТ весь исходный исполняемый файл транслируется в исполнимый файл для целевой архитектуры. Это весьма непростая задача выполнить данную трансляцию абсолютно корректно, так как не весь код сразу считывается транслятором. Например, некоторые части исполнимого кода доступны лишь через косвенные переходы, чьи параметры становятся известны лишь во время исполнения.

С другой стороны, динамическая трансляция рассматривает короткие последовательности кода (как правило, это базовый блок: цикл или метод), транслирует его и кэширует результирующую последовательность. Код транслируется не весь, а по мере считывания и, соответственно, возможности его трансляции, и для инструкций ветвления создается контрольная точка в транслируемом коде.

Динамичаская двоичная трансляция отличается от простой эмуляции удалением основного цикла эмулятора «считывание-декодирование-исполнение» (что и является основным «бутылочным горлышком» производительности), расплачиваясь за это большими накладными нагрузками во время процесса трансляции. Эти накладные расходы (нагрузки) несколько нивелируются в дальнейшем благодаря тому, что оттранслированный код будет испольняться несколько раз (то есть без повторной трансляции).

Более совершенные динамические трансляторы применяют динамическую рекомпиляцию: транслируемый код инструментируется на предмет выяснения «температуры кода», то есть какие фрагменты выполняются довольно часто, и к ним применяется агрессивная оптимизация. Такой подход напоминает JIT-компилятор, и в сущности, такие компиляторы (как например, технология HotSpot от корпорации Sun) можно рассматривать как динамические трансляторы из виртуального набора инструкций (байт-код) в реальный.

Shadow Paging

Суть метода: подмена таблицы страниц. Создается вторая таблица страниц, невидимая "гостю" (active page table, shadow page table), которая де-факто им используется. При этом "гость" считает, что он использует свою "настоящую" таблицу страниц. Затем, попытка "гостя" обратиться к некоторому виртуальному адресу вызывает страничное исключение (page fault, #PF) и передачу управления гипервизору (VM exit). Гипервизор эмулирует доступ к памяти и обновляет active page table так, чтобы "гость" мог в дальнейшем обращаться по данному виртуальному адресу.

Также гипервизор перехватывает опкоды MOV to CR3 (для подмены таблицы страниц) и INVLPG (если "гость" хочет обновить свою таблицу страниц, обновляются и соответствующие записи в active page table).

Этот метод может быть применен на любом процессоре. Но, к сожалению, этот метод труден в реализации, потребляет много памяти и имеет невысокую производительность. К слову сказать, большинство синих экранов, которые выдают нестабильные ВМ, относятся именно к багам в реализации shadow paging.

Гипервизор (или Монитор виртуальных машин)  в 4м вопросе.

 

4.  Критерий виртуализации Попека-Гольдберга. Виды виртуализации: гипервизоры типов 1 и 2, паравиртуализация.

Попек и Гольдберг определили ограничительные условия, при которых компьютерная архитектура может быть виртуализирована, сформулировав их в виде трех критериев виртуализации:

- Эквивалентность. Монитор VMM должен следить за тем, чтобы программа выполнялась в среде, почти полностью соответствующей среде невиртуализированной машины, за несколькими исключениями. Исключения распространяются на доступность системных ресурсов, временную диаграмму процессов и подключенные периферийные устройства.

- Полнота управления. VMM должна быть способной управлять всеми системными ресурсами, но не выходя за отведенные для нее границы ресурсов.

-Эффективность. Значительная часть машинных команд должна выполняться без участия VMM, а те команды, которые не могут быть выполнены, должны интерпретироваться средствами VMM.

Большое внимание в работе Попека и Гольдберга уделено исследованию системы команд процессора на предмет возможности его виртуализации. За время, прошедшее с тех пор, когда Стречи сделал первые попытки виртуализации, системы команд существенно усложнились, в дополнение к классически арифметическим, логическим и командам управления типа условного или безусловного перехода появились специфические команды диспетчеризации. Эти команды усложняют состояние процессора и тем самым затрудняют виртуализацию. Попек и Гольдберг классифицировали все команды по трем группам:

А). Привилегированные — команды, осуществляющие программное прерывание (trap), если они выполняются в пользовательском режиме работы процессора, и не вызывают программное прерывание, если работают в системном режиме;

Б). Чувствительные к управлению — команды, которые пытаются изменить конфигурацию ресурсов системы;

В). Чувствительные к поведению — команды, чье поведение зависит от состояния ресурсов системы, например от содержимого системных регистров.

Гипервизор (или Монитор виртуальных машин) — в компьютерах программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких или даже многих операционных систем на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.

Гипервизор также может (но не обязан) предоставлять работающим под его управлением на одном хост-компьютере ОС средства связи и взаимодействия между собой (например, через

обмен файлами или сетевые соединения) так, как если бы эти ОС выполнялись на разных физических компьютерах.

Гипервизор сам по себе в некотором роде является минимальной операционной системой (микроядром или наноядром). Он предоставляет запущенным под его управлением операционным системам сервис виртуальной машины, виртуализируя или эмулируя реальное (физическое) аппаратное обеспечение конкретной машины, и управляет этими виртуальными машинами, выделением и освобождением ресурсов для них. Гипервизор позволяет независимое «включение», перезагрузку, «выключение» любой из виртуальных машин с той или иной ОС. При этом операционная система, работающая в виртуальной машине под управлением гипервизора, вовсе не обязана знать, что она выполняется в виртуальной машине, а не на реальном аппаратном обеспечении, хотя и может.

Типы гипервизора

Автономный гипервизор.

Имеет свои встроенные драйверы устройств, модели драйверов и планировщик и поэтому не зависит от базовой ОС.Так как автономный гипервизор работает непосредственно на оборудовании, то он более производителен. Примеры: VMware ESX, Microsoft Hyper-V.

На основе базовой ОС

Это компонент, работающий в одном кольце с ядром основной ОС (кольцо 0). Гостевой код может выполняться прямо на физическом процессоре, но доступ к устройствам ввода-вывода компьютера из гостевой ОС осуществляется через второй компонент, обычный процесс основной ОС — монитор уровня пользователя Примеры: Microsoft Virtual PC, VMware Workstation, Parallels, VirtualBox.

Гибридный

Гибридный гипервизор cостоит из двух частей: из тонкого гипервизора, контролирующего процессор и память, а также работающей под его управлением специальной сервисной ОС в кольце пониженного уровня. Через сервисную ОС гостевые ОС получают доступ к физическому оборудованию. Примеры: Microsoft Virtual Server, Sun Logical Domains, Xen.

Паравиртуализация (англ. Paravirtualization) техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для чего их ядро незначительно модифицируется. Операционная система взаимодействует с программой Гипервизора, который предоставляет ей гостевой API, вместо использования напрямую таких ресурсов, как таблица страниц памяти. Код, касающийся виртуализации, локализуется непосредственно в операционную систему. Паравиртуализация таким образом требует, чтобы гостевая операционная система была изменена для гипервизора, и это является недостатком метода, так как подобное изменение возможно лишь в случае, если гостевые ОС имеют открытые исходные коды, которые можно модифицировать согласно лицензии. Но зато паравиртуализация предлагает производительность почти как у реальной не виртуализированной системы. Как и при полной виртуализации, одновременно могут поддерживаться многочисленные различные операционные системы. Метод паравиртуализации позволяет добиться более высокой производительности, чем метод динамической трансляции.

Цель изменения интерфейса заключается в сокращении доли времени выполнения гостя, отведённого на выполнение операций, которые являются существенно более трудными для запуска в виртуальной среде по сравнению с не-виртуальной средой. Паравиртуализация предоставляет специально установленные обработчики прерываний, чтобы позволить гостю (гостям) и хосту принять и опознавать эти задачи, которые иначе были бы выполнены в виртуальном домене (где производительность меньше). Таким образом, успешная паравиртуализированная платформа может позволить монитору виртуальных машин (VMM), быть проще (путём перевода выполнения критически важных задач, с виртуального домена к хосту домена), и/или уменьшить общие потери производительности машинного выполнения внутри виртуального гостя.

Впервые термин возник в проекте Denali, а после того, как это слово применили исследователи из компьютерной лаборатории Кембриджского университета в проекте Xen, оно окончательно утвердилось в терминологии. Приставка «пара» в слове паравиртуализация ничего не обозначает, просто авторам данной идеи понадобился новый термин.

Hosted by uCoz