***** 1 - MosSIGPLAN

реклама
Тeхнологии
виртуализации
Воронин Дмитрий
План
•
•
•
•
•
Что такое виртуализация
Модели виртуализации
Как это реализовать
Динамическая трансляция
Аппаратная поддержка виртуализации
2
Что такое виртуализация
• Сокрытие физических ресурсов от их потебителей. Обычно
потребителями являются операционные системы.
• Изоляция окружения одного потребителя от другого.
3
Модели виртуализации
• Полная виртуализация
• Пара-виртуализация
• Виртуализация на уровне операционной
системы
4
Полная виртуализация
• Использует подход разделения на guest/host ОС.
• Каждый гость исполняется на виртуальной имитации
физических ресурсов.
• Гостевая ОС иполняется без модификаций кода.
• Гипервизор исполняется на реальных физических ресурсах и
управляет запросами от гостевой ОС к физическим ресурсам
(Virtual Machine Monitor, VMM).
• Гипервизор специальным образом исполняет все инструкции
гостевой ОС, которые требуют системного уровня привелегий
(модифицируют состояние CPU).
• Либо использует поддержку виртуализации в архитектуре,
либо бинарную трансляцию.
• Примеры: VMWare, Virtual PC, Parallels, VirtualBox,
QEMU+KQEMU, KVM.
5
Паравиртуализация*
• Использует подход разделения на guest/host OC.
• VMM модифицирует код гостевой ОС.
• Примеры: Xen, UML (User Mode Linux), Sun Logical Domains
*Впервые термин возник в проекте Denali, а после того, как это слово применили исследователи
из компьютерной лаборатории Кембриджского университета в проекте Xen, оно окончательно
утвердилось в терминологии. Приставка «пара» в слове паравиртуализация ничего не
обозначает, просто авторам данной идеи понадобился новый термин.
6
Виртуализация на уровне ОС
• Не использует подход guest/host.
• Хост исполняет ядро ОС и передает функциональность ОС
гостям.
• Гости должны использовать одно и то же ядро, что и хост. Но
могут использовать различные дистрибутивы.
• Необходима изоляция окружения гостя.
• Одни и те же исполняемые файлы и библиотеки могут
существовать в одном экземпляре.
• Примеры: Virtuozzo/OpenVZ, Solaris Zones, FreeBSD jails.
7
Как это реализовать
Хочется запускать больше одной гостевой ОС на одном хосте
Guest OS 1
apps
Guest OS N
apps
Layer 3
Guest OS 1
Guest OS N
Layer 2
VMM 1
VMM N
Layer 1
Host OS + HyperVisor
Layer 0
Hardware
Для защиты нужно использовать аппаратные методы защиты памяти.
В идеале: Layer3 < Layer 2 < Layer 1 < Layer 0
8
Как это реализовать
Проблема
Гостевые ОС хотят:
- Распределять физическую оперативную память.
- Управлять системными ресурсами CPU.
- Взаимодействовать с периферийным оборудованием.
Как при этом не сломать контекст хостовой ОС?
Решение
Нужно виртуализовать все эти понятия для гостевых ОС.
9
Виртуализация оперативной памяти
• Пользовательскому процессу доступно только виртуальное
адресное пространство.
• Нужно создать 2 пространства. В первом будет VMM (Full) и
Host OS, а во втором VMM(Base) и Guest OS.
Virtual Address Space 1
Virtual Address Space 2
switch to Guest
VMM
Host OS
VMM
switch to Host
10
Guest OS
Виртуализация оперативной памяти
Для того, что эта модель работала, нужно:
• Исполнить специальным образом код гостевой системы,
который занимается управлением физической памятью (соотв.
сист. рег., обработка page fault).
• Обеспечить синхронизацию гостевой структуры страниц (Guest
Paging) и реальной структуры страниц (Shadow Paging), которое
используется при работе гостевой ОС.
• Защитить память VMM от памяти гостевой ОС (разграничить
доступ к различным страницам при помощи уровней защиты).
11
Виртуализация системного контекста CPU
Чтобы работала схема виртуализации контекста CPU, нужно:
• Специальным образом исполнять код гостевой системы,
который читает и изменяет состояние гостевого CPU.
• Читать состояние контекста можно без прерывания работы
гостевой ОС (для оптимизации).
• Записывать определенные значения можно без прерывания
работы гостевой ОС (для оптимизации).
12
Виртуализация периферии
• Периферийные ус-ва могут быть как реальными (сетевая карта,
видео память, звук. ус-во), так и виртуальными (виртуальный
hard drive/cd drive/com port в виде файла в хостовой состеме).
• Нужно специальным образом исполнять код гостевой системы,
который взаимодействует с периферией (реализация
устройства в виде отдельных процессов, которые
периодически опрашивают состояния вирт. физ. ресурсов вирт. физ.память, вирт. сист. регистры).
13
Динамическая трансляция
• Трансляция кода гостевой ОС в терминах блоков (линейных
участков).
• Связывание блоков (прямые условные/безусловные переходы,
переходы по косвенности). Удаление блоков при удалении
соотв. страницы кода из гостевой структуры страниц.
• Отслеживание самомодифицирующегося кода
(транслированный, который уже есть в кэше, нужно выкинуть
при записи в соотв. гостевой код).
• Специальное исполнение "запрещенного" кода. Подмена
инструкций при трансляции.
14
Аппаратная поддержка виртуализации
• Новый режим привелегий (virtual mode), спец. инструкции для
переключение в/из virt.mode.
• Аппаратное сохранение/восстановление состояния CPU при
переключении режимов. Недостаток в том, что этот процесс
очень ресурсоемок, и происходит при каждом переключении.
• Аппаратный выход из virt.mode при возникновении
прерываний (можно настраивать конкретные прерывания).
15
Скачать