Лекция 18 Виртуализация Three Rings for the Elven-kings under the sky, Seven for the Dwarf-lords in their halls of stone, Nine for Mortal Men doomed to die, One for the Dark Lord on his dark throne In the Land of Mordor where the Shadows lie. One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them In the Land of Mordor where the Shadows lie.
Кольца защиты Кольца защиты архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, т.н. "кольцо 0"), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом внешним. Традиционно семейство микропроцессоров x86 обеспечивает четыре кольца защиты. Режим супервизора Некоторые фирмы-разработчики и производители процессоров, например, ARM не используют классификацию режимов работы процессора в виде колец защиты. Тем не менее, у большинства современных процессоров (кроме простейших) как правило присутствует несколько режимов работы отличающихся друг от друга доступными в данном режиме привилегиями. Термином режим супервизора разработчики и производители процессоров как правило называют наиболее привилегированный режим работы процессора. Чаще всего этот режим используется для выполнения ядра операционной системы. Обычно этот режим по функциональности соответствует 0-му кольцу защиты (Ring 0) в x86 процессорах, т.е. предоставляет неограниченный доступ ко всем возможностям процессора, работе с периферией и так далее. Код, работающий в данном режиме, как правило, занимается управлением доступными аппаратными ресурсами, разделением их использования между отдельными задачами (процессами) и так далее, что и привело к такому названию режима. Режим гипервизора Некоторые современные процессоры могут предоставлять дополнительный режим работы, известный как режим гипервизора. Как правило данный режим реализуется с целью поддержки технологий виртуализации на уровне аппаратного обеспечения. Это позволяет достигнуть не только одновременного выполнения нескольких задач, но и одновременного выполнения нескольких операционных систем на одном процессоре без существенных потерь производительности и без изменения самих операционных систем. Как правило при использовании данного режима полный доступ ко всем ресурсам возможен именно из режима гипервизора. В таком случае режим супервизора уже не является максимально привилегированным и ограничивает многие привилегированные операции. При выполнении привилегированных операций операционными системами в режиме супервизора управление передается специальной программе - гипервизору. Гипервизор осуществляет арбитраж использования имеющихся аппаратных ресурсов несколькими операционными системами аналогично тому как сами операционные системы осуществляют распределение ресурсов между несколькими задачами. По сути, гипервизор обычно является небольшим ядром, которое управляет распределением ресурсов между несколькими операционными системами и работает уровнем ниже, чем сами операционные системы. В силу этого в терминологии x86 данный режим как правило называют кольцом -1 (Ring -1).
Гипервизор Гипервизор в компьютерах программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких или даже многихоперационных систем на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами. Гипервизор также может (но не обязан) предоставлять работающим под его управлением на одном хост-компьютере ОС средства связи и взаимодействия между собой (например, через обмен файлами или сетевые соединения) так, как если бы эти ОС выполнялись на разных физических компьютерах. Гипервизор сам по себе в некотором роде является минимальной операционной системой (микроядром или наноядром). Он предоставляет запущенным под его управлением операционным системам сервис виртуальной машины, виртуализируя или эмулируя реальное (физическое) аппаратное обеспечение конкретной машины, и управляет этими виртуальными машинами, выделением и освобождением ресурсов для них. Гипервизор позволяет независимое «включение», перезагрузку, «выключение» любой из виртуальных машин с той или иной ОС. При этом операционная система, работающая в виртуальной машине под управлением гипервизора, вовсе не обязана знать, что она выполняется в виртуальной машине, а не на реальном аппаратном обеспечении, хотя и может.
Определение Виртуализация в вычислениях процесс представления набора вычислительных ресурсов, или их логического объединения, который даёт какие-либо преимущества перед оригинальной конфигурацией. Виртуализация - технология создания множества мелких отдельных и независимых серверов на одном физическом. Виртуализация это общий термин, охватывающий абстракцию ресурсов для многих аспектов вычислений. Виртуализация это метод сокрытия физических характеристик компьютерных ресурсов от тех приемов, которыми другие системы, приложения или пользователи используют эти ресурсы. Существуют основные две версии этого метода, одна предполагает разделение какого-то единого физического ресурса (сервер, операционная система, приложение или система хранения данных) на множество логических, вторая обратная множество физических ресурсов интегрируется в один логический
Развитие проект Multiple Access Computer, над которым в 50–60-е годы работали в Кембриджском центре корпорации IBM. Для развития этого проекта была написана управляющая программа CP-67 для операционной системы CP/CMS, она работала на мэйнфрейме IBM System/ When the S/ was announced in August 1965, IBM also announced TSS/360, an ill-fated time-sharing operating system project that was canceled in 1971 (having also being canceled in 1969, but reprieved). Far more successful on the S/ was CP/CMS. This was the first fully-virtualized virtual machine operating system, and evolved from the ground-breaking research system CP-40. CP/CMS proved quite important: It delivered high-performance time-sharing. It validated the S/ architecture. It introduced and employed many virtual machine and virtual memory concepts, still evolving in contemporary research systems such as the IBM M44/44X, Manchester/Ferranti Atlas, and the emerging GE 645 (which was being built for the Multics project) It ultimately spawned both a time-sharing service industry and IBM's VM/CMS operating system.
Типы виртуализации Программная виртуализация Динамическая трансляция При динамической трансляции (бинарной трансляции) проблемные команды гостевой OC перехватываются гипервизором. После того как эти команды заменяются на безопасные, происходит возврат управления гостевой ОС. Паравиртуализация Паравиртуализация техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для чего их ядро незначительно модифицируется. Операционная система взаимодействует с программой Гипервизора, который предоставляет ей гостевой API, вместо использования напрямую таких ресурсов, как таблица страниц памяти. Метод паравиртуализации позволяет добиться более высокой производительности, чем метод динамической трансляции. ПрименимостьМетод паравиртуализации применим лишь в том случае, если гостевые ОС имеют открытые исходные коды, которые можно модифицировать согласно лицензии.
Типы виртуализации Аппаратная виртуализация Упрощение разработки программных платформ виртуализации за счет предоставления аппаратных интерфейсов управления и поддержки виртуальных гостевых систем. Это уменьшает трудоемкость и время на разработку систем виртуализации. Возможность увеличения быстродействия платформ виртуализации. Управление виртуальными гостевыми системами осуществляет напрямую небольшой промежуточный слой программного обеспечения, гипервизор, что дает увеличение быстродействия. Улучшается защищённость, появляется возможность переключения между несколькими запущенными незвисимыми платформами виртуализации на аппаратном уровне. Каждая из виртуальных машин может работать независимо, в своем пространстве аппаратных ресурсов, полностью изолированно друг от друга. Это позволяет устранить потери быстродействия на поддержание хостовой платформы и увеличить защищенность. Гостевая система становится не привязана к архитектуре хостовой платформы и к реализации платформы виртуализации. Технология аппаратной виртуализации делает возможным запуск 64-битных гостевых систем на 32-битных хостовых системах (с 32-битными средами виртуализации на хостах). Реализации: IBM System 370, VM/ е года. На виртуальных системах IBM VM были отработаны идеи и технологии, во многом определившие архитектуры современных решений по виртуализации. VMware Xen KVM Технологии: V86 mode - старая Intel VT (VT-x) Intel Virtualization Technology for x86 AMD Pacific
Области применения виртуализации Виртуализация на уровне операционной системы виртуализирует физический сервер на уровне ОС, позволяя запускать изолированные и безопасные виртуальные серверы на одном физическом сервере. Эта технология не позволяет запускать ОС с ядрами, отличными от типа ядра базовой ОС. При виртуализации на уровне операционной системы не существует отдельного слоя гипервизора. Вместо этого сама хостовая операционная система отвечает за разделение аппаратных ресурсов между несколькими виртуальными серверами и поддержку их независимости друг от друга. Примеры: Solaris Containers/Zones FreeBSD Jail Linux-VServer FreeVPS OpenVZ Virtuozzo VDSmanager iCore Virtual Accounts
Области применения виртуализации Виртуальная машина это окружение, которое представляется для «гостевой» операционной системы, как аппаратное. Однако на самом деле это программное окружение, которое эмулируется программным обеспечением хостовой системы. Эта эмуляция должна быть достаточно надёжной, чтобы драйверы гостевой системы могли стабильно работать. При использовании паравиртуализации, виртуальная машина не эмулирует аппаратное обеспечение, а, вместо этого, предлагает использовать специальное API. Использование: Для защиты информации и ограничения возможностей процессов (песочница). Для исследования производительности ПО или новой компьютерной архитектуры. Для эмуляции различных архитектур (например, эмулятор игровой приставки). С целью оптимизации использования ресурсов мейнфреймов и прочих мощных компьютеров (например: IBM eServer). Вредоносным кодом для управления инфицированной системой: вирус PMBS, обнаруженный в 1993 году, а также руткит SubVirt, созданный в 2006 году в Microsoft Research, создавали виртуальную систему, которой ограничивался пользователь и все защитные программы (антивирусы и прочие). Для моделирования информационных систем с клиент-серверной архитектурой на одной ЭВМ (эмуляция компьютерной сети с помощью нескольких виртуальных машин). Для упрощения управления кластерами виртуальные машины могут просто мигрировать с одной физической машины на другую во время работы.
Области применения виртуализации Виртуализация серверов -размещение нескольких логических серверов в рамках одного физического (консолидация), объединение нескольких физических серверов в один логический для решения определенной задачи. Примеры: Bochs FAUmachine KVM Parallels Qemu SVISTA twoOStwo VirtualBox Virtual Iron Microsoft (Hyper-V) VMware (ESX Server) Xen Виртуализация сервера упрощает восстановление вышедших из строя систем на любом доступном компьютере, вне зависимоси от его конкретной конфигурации.
Проблемы виртуализации архитектур x86 Виртуализация может избавить стандартные серверы от их основного недостатка низкой эффективности, его преодоление осложняется тем, что архитектура процессоров х86 малопригодна для виртуализации по двум причинам. Во- первых виртуализации мешают имеющиеся в x86 «иерархически защищенные домены» (hierarchical protection domain), которые еще называют «защитными кольцами» (Ring 0, Ring 1, Ring 2, Ring 3), обеспечивающие безопасность данных и функционирования в случае сбоев и ошибочного поведения. Эти кольца образуют иерархию, от наиболее привилегированного Ring 0, имеющего непосредственный доступ в память и ко всем ресурсам процессора, до наименее привилегированного Ring 3, на котором работают приложения. Наличие специальных шлюзов между кольцами ограничивает доступ с внешнего уровня на внутренний уровень. С точки зрения обеспечения безопасности эта архитектурная особенность полезна, но она создает барьер на пути к виртуализации. Вторая сложность несоответствие архитектуры x86 критерию достаточности виртуализации Попека-Гольдберга Еще в 70-е годы Попек и Гольдберг показали, что монитор виртуальных машин может быть создан для любого компьютера, если его команды, изменяющие состояние компьютера, входят в число привилегированных. Если условие удовлетворяется, то тогда команда, выполненная гостевой операционной системой, может быть перехвачена и перенаправлена в VMM. Но в системе команд IA-32 насчитывается 17 проблемных команд, которые подобным образом перехватить нельзя. При выполнении на разных уровнях такие команды имеют разную семантику.
Три подхода к виртуализации серверов стандартной архитектуры Полная виртуализация с использованием бинарной трансляции. Авторство на полную виртуализацию принадлежит VMware. Суть технологии, предложенной этой компанией, заключается в использовании бинарной трансляции, а именно в перемещении гостевых операционных систем на уровень Ring 1 и в переводе кодов исходящих из ядра этих систем с заменой тех самых инструкций, которые не удовлетворяют критерию Попека-Гольдберга. Команды гостевых ОС проходят через VMM, а пользовательские коды свободны от этой проблемы, поэтому они могут быть направлены в физический процессор без перевода, что ускоряет процесс выполнения. Монитор виртуальных машин обеспечивает каждую виртуальную машину сервисами от физической системы, в том числе он предоставляет BIOS, виртуальные устройства, виртуализированое управление памятью. Сочетание бинарной трансляции команд ОС с прямым выполнением команд приложений обеспечивает «полную виртуализацию» гостевых ОС.
Три подхода к виртуализации серверов стандартной архитектуры Паравиртуализация. Суть паравиртуализации состоит в замене невиртуализуемых команд гостевых ОС их аналогами-гипервызовами, адресованными монитору виртуальных машин. С точки зрения VMM это не сложно, нужны всего лишь специальные интерфейсы. С точки зрения гостевой ОС дело обстоит сложнее: для того, чтобы сформировать гипервызовы, требуется модификация ОС, то есть необходимо адаптировать гостевую ОС под паравиртуализацю. Этим паравиртуализация отличается от полной виртуализации, где используется немодифицированная ОС. В то же время паравиртуализационные решения проще и соответственно дешевле. Очевидно, что если не нужно переводить вызовы в динамике (то есть эмулировать), то производительность может быть выше, хотя расплатой служит необходимость специальным образом настраивать гостевые ОС.
Три подхода к виртуализации серверов стандартной архитектуры Аппаратно поддерживаемая виртуализация. В 2006 году Intel и AMD предложили собственные аппаратные решения, упрощающие виртуализацию. Обе компании поступили одинаково, они ввели еще один уровень защиты, располагающийся между железом и Ring 0, теперь монитор виртуальных машин может работать на этом уровне. Дополнительный уровень еще называют Ring-1, а работу на этом уровне «корневым режимом» (Root Mode). По совокупности эти усовершенствования исключают необходимость в обоих искусственных приемах, и в прямой трансляции, и в паравиртуализации. Такая схема виртуализации чрезвычайно привлекательна, но пока она делает шаги, а мониторы виртуальных машин находятся в стадии адаптации к ней. Нередко при представлении виртуализации, поддерживаемой аппаратными средствами, упускается из внимания тот факт, что она упрощает VMM, но не исключает их необходимость. Каждый из производителей процессоров предлагает свою версию аппаратной виртуализации, AMD производит технологию AMD Virtualization (AMD-V), которую иногда по-прежнему по имени проекта называют Pacifica. Она реализована в процессорах Athlon 64 (F и G), Athlon 64 X2 (F и G), Turion 64 X2 и во всех более новых процессорах. AMD опубликовала спецификацию IO Memory Management Unit (IOMMU) для AMD-V, определяющую процедуру обработки прерываний и трансляцию обращений в память, позволяющие не использовать в виртуальных машинах прямые обращения в память (Direct Memory Access, DMA). Технология виртуализации компании Intel для 32 и 64 разрядных архитектур х86 сейчас известна как Intel Virtualization Technology (IVT), на уровне проектирования ее называли Vanderpool. Существует спецификация IVT для процессоров IA-64 (Itanium) под названием VT-I (проект Silvervale). Технология IVT была анонсирована в 2005 году, она реализована в выборочно в некоторых версиях Pentium 4, Pentium D, Xeon, Core Duo и Core 2 Duo. Подобно AMD в Intel существует спецификация Virtualization for Directed I/O (VT-d) для обработки прерываний виртуальных машин и изоляции DMA. В современных условиях деление на эти перечисленные три категории достаточно условно, в процессе эволюции, особенно в связи с развитием технологий аппаратной виртуализации, границы между методами виртуализации постепенно размываются. Сейчас важнее становится не столько то, как именно построен гипервизор, сколько то, насколько мощна инфраструктура, выстроенная над ним. По этому показателю VMware не имеет конкурентов.