Виртуализация и изоляция: что такое и зачем нужно?

(Еж-паук исчез. Вместо него на столе появился маленький Витька Корнеев, точная копия настоящего, но величиной с руку. Он щелкнул маленькими пальчиками и создал микродубля еще меньшего размера. Тот тоже щелкнул пальцами. Появился дубль величиной с авторучку. Потом величиной со спичечный коробок. Потом — с наперсток).

Синтетическое окружение

В каких случаях требуется моделировать окружение?

Общее свойство: пара hardwaresoftware превращается в тройку hardwareenvironmentsoftware.

Все эти задачи решались и до «эпохи виртуализации». Что изменилось? Одна из задач — унификация, распределение, учёт — должна решаться уровнем раньше, чтбы остальные решались независимо:

Новая слоистая архитектура ОС.

Изоляция и виртуализация

Изоляция — манипуляция доступом к действительным ресурсам. Многое есть в Linux: права доступа, ACL, chroot. Но не всё, например, гарантированная изоляция root-а.

Виртуализация — создание синтетических ресурсов, после чего достаточно средств ОС. Нопример, SNES — эмулятор игровой приставки, картридж=файл, процессор=программа.

Понятия взаимоперетекающие: чаще всего имеет место паравиртуализация — смешение того и другого. Будем говорить о виртуализованном окружении (ve).

Инструменты паравиртуализации

что могут

чего не могут

ОС Linux

виртуальная память и права доступа

Одноуровневое решение «трёх задач»; всё, что не запрещено, разрешено

POSIX chroot

изоляция на уровне ФС

отсутствие изоляции другими средствами (IPC, устройства)

Linux VServer / FreeBSD Jail

Изоляция на уровне любого взаимодествия (модификация ядра: процессы внутри одного коружения «не видят» процессов внутри других)

Общие ресурсы

OpenVZ

Изоляция ФС и процессов + учёт и распределение памяти и времени по принципу «bean cunter» (с возможностью динамического перераспределения ресурсов)

Общее ядро и аппаратная архитектура

User-mode Linux Kernel

Linux и его API как «архитектура», процесс — ядро виртуального Linux для этой архитектуры; вирутальные диски и сеть; фактически, гиперфизор, изготоленный из Linux

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

Микроядро [L4ka http://www.l4ka.org/]

Гипервизор

Ограничения при распределении и учёт должны бвть реализованы отдельно

XEN

Гипервизор + статическое распределение и учёт виртуальных ресурсов; миграция ve между аппаратными узлами «на лету»

Недостаточная поддержка динамического перераспределения ресурсов

QEmu, KVM, VMWare и т. п.

Виртуальная машина с прямым выполнением кода (с помощью поддержки в ядре)

Единая архитектура всех ve

«Чистый» эмулятор (QEmu, Skyeye, DOSBox, эмуляторы игровых компьютеров)

Полностью виртуализованное окружение

Сильное замедление работы

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

И XEN, и OVZ используют т. н. «аппаратную виртуализацию» новых процессоров.

Как использовать паравиртуализацию?

LecturesDistro2007/07_Virtual (last edited 2008-06-04 08:20:40 by localhost)