Virtualization introduction

From Nix-Pro
Jump to: navigation, search

Типы виртуализации

  • Эмуляция оборудования - одиночный компьютер может выглядеть как множественная архитектура (для одного пользователя он будет стандартной платформой x86, для другого – платформой IBM Power PC®). QEMU
  • полная виртуализация (full virtualization). При полной виртуализации существует прослойка между виртуализируемой операционной системой и аппаратурой как способ осуществления арбитража доступа. Эта прослойка называется гипервизор или монитор виртуальной машины (VMM).
  • пара-виртуализация (para-virtualization). Этот метод использует гипервизор для разделения доступа к основным аппаратным средствам, но объединяет код, касающийся виртуализации, в непосредственно операционную систему. Этот подход устраняет потребность в любой перекомпиляции или перехватывании, потому что сами операционные системы кооперируются в процессе виртуализации. Как уже замечалось, паравиртуализация требует, чтобы гостевая операционная система была изменена для гипервизора, и это является недостатком метода. Но зато паравиртуализация предлагает производительность почти как у реальной не виртуализированной системы. Как и при полной виртуализации, одновременно могут поддерживаться многочисленные различные операционные системы.
  • виртуализация операционной системы, в результате которой одиночный компьютер работает с несколькими операционными системами одного типа. Этот тип виртуализации просто изолирует некоторые приложения на отдельной операционной системе (что означает, что все должны использовать один и тот же тип и версию операционной системы). Виртуализация уровня операционной системы требует внесения изменений в ядро операционной системы, но при этом преимуществом является родная производительность. Пример OpenVZ

Примеры полной виртуализации – это коммерческая реализация виртуализации VMware, а также операционная система коммерческой IBM System z9 Virtual Machine (z/VM) для компьютеров IBM zSeriesВ®. Пара-виртуализация поддерживается Xen и User-Mode-Linux (UML). KVM также рассматривается как реализация полной виртуализации.

TODO

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


KVM в действительности сам по себе не является полной виртуализационной схемой, но представляет собой кусок более крупного технического решения.


KVM просто превращает ядро Linux в гипервизор (когда вы инсталлируете модуль ядра kvm). Так как гипервизор является стандартным ядром Linux, он получает преимущества от изменений в стандартном ядре (поддержка памяти, планировщик и т.д.). Оптимизация этих компонент Linux (таких как новый O(1) планировщик в ядре 2.6) дает преимущества как гипервизору (базовая операционная система), так и гостевой операционной системе Linux

Когда KVM инсталлирован, вы можете запустить операционную систему в пространстве пользователей. Каждая гостевая операционная система представляет собой отдельный процесс базовой операционной системы (или гипервизора).


В основе лежит аппаратная платформа, которая способна к виртуализации (в настоящее время это Intel VT или AMD-SVM процессор). На «голой» аппаратуре работает гипервизор (ядро Linux с модулем KVM). Этот гипервизор выглядит точно также как стандартное ядро Linux, на котором вы можете запускать другие приложения. Но это ядро может также поддерживать гостевые операционные системы, загруженные с помощью утилиты kvm.

Процессор поддерживает виртуализацию (способность виртуализировать процессор для множества операционных систем). Память виртуализируется с помощью kvm (который будет обсуждаться в следующем разделе). И наконец, система ввода/вывода виртуализируется с помощью слегка модифицированного процесса QEMU (копия которого выполняется с каждым процессом гостевой операционной системы).

QEMU – это виртуализационная платформа, которая позволяет виртуализировать все оборудование PC (включая диски, графические адаптеры, сетевые устройства). Любые запросы ввода/вывода, которые делает гостевая операционная система, перехватываются и направляются в пользовательский режим для эмулирования с помощью процесса QEMU.

KVM обеспечивает виртуализацию памяти с помощью /dev/kvm. Каждая гостевая операционная система имеет свое собственное адресное пространство, которое устанавливается, когда создается гостевая система. Физическая память, которая назначается для гостевой операционной системы, является в действительности виртуальной памятью процесса. Набор теневых таблиц поддерживается для преобразования с гостевых физических адресов в реальные физические адреса. Процессор также поддерживает процесс преобразования памяти, передавая управление гипервизору (базовому ядру), когда имеется обращение к не распределенному адресу памяти.

QEMU (эмуляция)

QEMU - другой эмулятор, он похож на Bochs, но имеются и некоторые отличия, которые стоит отметить. QEMU поддерживает два режима работы. Первый - режим Полной Эмуляции Системы. Этот режим похож на работу Bochs, где эмулируется персональный компьютер (PC) целиком, вместе с процессором и периферией. Этим способом имитируется множество различных архитектур процессоров, таких как x86, x86_64, ARM, SPARC, PowerPC и MIPS с разумной скоростью, используя динамический перевод. Этим способом вы можете эмулировать операционные системы Windows (включая XP) и Linux на Linux, Solaris и FreeBSD.

QEMU также поддерживает другой режим, именуемый "режим пользовательской эмуляции". При таком способе, который осуществим только на Linux, можно запускать бинарники для разных архитектур. Это позволяет, например, выполнить бинарник для архитектуры MIPS на Linux, запущенном на x86. Другие архитектуры, поддерживаемые при таком режиме, включают ARM, SPARC и PowerPC, хотя большинство еще только разрабатывается.

Xen (паравиртуализация)

Xen -- свободное решение с открытым исходным кодом для паравиртуализации на уровне операционной системы от XenSource. Вспомните, что при паравиртуализации гипервизор и операционная система объединяются при виртуализации, изменяя операционную систему, но зато приводя почти к родной производительности оборудования.

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

Windows можно запускать как гостевую систему на Xen, но только если он запущен на Intel Vanderpool или AMD Pacifica. Кроме того, Xen поддерживает другие операционные системы, включая Minix, Plan 9, NetBSD, FreeBSD и OpenSolaris.

OpenVZ (виртуализация уровня операционной системы)

OpenVZ - модифицированное ядро, которое поддерживает изолированные пространства пользователя, VPS, с рядом пользовательских инструментов для управления.

Для управления процессами OpenVZ включает двухуровневый планировщик центрального процессора. Сначала планировщик определяет, какой из VPS должен получить доступ к центральному процессору. После этого планировщик второго уровня выбирает процесс, следуя стандартным приоритетам Linux.

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

Уникальная особенность OpenVZ -- способность к введению контрольных точек (Checkpoint) и перемещению VPS с одного физического сервера на другой. Checkpointing означает, что состояние действующего VPS заморожено и сохранено в файле. Этот файл можно перенести на новый сервер и восстановить, чтобы вернуть VPS в рабочее состояние.

http://www.ibm.com/developerworks/ru/library/l-linuxvirt/index.html
http://www.ibm.com/developerworks/ru/library/l-linux-kvm/
http://jack.kiev.ua/docs/qemu-doc-ru.html
http://www.ibm.com/developerworks/ru/library/l-qemu/
http://www.hardwaresecrets.com/article/Everything-You-Need-to-Know-About-the-Intel-Virtualization-Technology/263/2 http://en.wikipedia.org/wiki/Extended_Page_Table