18 Виртуализация в OC Linux.
Виртуализация - это далеко не новое явление: фактически ей уже более четырех десятков лет. Самые первые применения виртуализации имели место в компьютерах IBM
Виртуализация в операционных системах
· Виртуальное окружение — работает с оборудованием (хост-система)
o программная виртуальная машина, работающая в обычной ОС
o специализированная ОС для виртуализации (гипервизор)
· Пользователь — совокупность процессов (гостевая ОС)
Вероятно самым сложным способом виртуализации является эмуляция аппаратуры. В этом методе в хост-системе создается виртуальная машина, которая моделирует какую-то другую аппаратную архитектуру основная проблема при этом способе виртуализации состоит в том, что он мучительно медленный. При полном моделировании, которое подразумевает точное исполнение циклов, моделирование конвейеров ЦПУ и поведения кэша, реальная скорость выполнения быть и в 1000 раз меньше, чем на реальной моделируемой аппаратуре.
Полная виртуализация, которую также называют естественной (native virtualization), - это другой интересный метод виртуализации. Эта модель использует виртуальную машину, которая выступает как посредник между гостевой операционной системой и реальным оборудованием. Слово "посредник" в данном случае играет ключевую роль, поскольку VMM располагается между гостевой ОС и реальным оборудованием. Некоторые инструкции защищенного режима должны перехватываться и обрабатываться внутри гипервизора, поскольку аппаратура не доступна непосредственно из операционных систем, доступ к ней предоставляется через гипервизор Полная виртуализация работает быстрее, чем эмуляция аппаратуры, но производительность все же ниже, чем на реальной аппаратуре, из-за посредничества гипервизора
3. Паравиртуализация.
Паравиртуализация - это другой популярный метод, который имеет некоторое сходство с полной виртуализацией. Этот метод тоже использует гипервизор для разделяемого доступа к оборудованию, но интегрирует код виртуализации в саму операционную систему. Этот подход позволяет избежать любой перекомпиляции или перехвата команд, поскольку операционная система сама участвует в процессе виртуализации
4. Виртуализация уровня операционной системы.
Последний из рассматриваемых нами здесь вариантов, виртуализация уровня операционной системы, использует технику, отличающуюся тех способов, которые были рассмотрены ранее. В этом варианте виртуализируются серверы, запускаемые в операционной системе. В этом случае операционная система одна и просто изолируются один от другого сервера, работающие под ее управлением Виртуализация уровня операционной системы требует внесения изменений в ядро операционной системы, но зато позволяет достичь исходной ее производительности.
Проекты виртуализации для Linux-систем
Проект |
Тип |
Лицензия |
Bochs |
Эмуляция |
LGPL |
QEMU |
Эмуляция |
LGPL/GPL |
VMware |
Полная виртуализация |
Proprietary |
z/VM |
Полная виртуализация |
Proprietary |
Xen |
Паравиртуализация |
GPL |
UML |
Паравиртуализация |
GPL |
Linux-VServer |
Виртуализация уровня ОС |
GPL |
OpenVZ |
Виртуализация уровня ОС |
GPL |
Xen - это свободное решение с открытыми кодами от компании XenSource, реализующее паравиртуализацию уровня операционной системы. Вспомним, что в случае паравиртуализации и гипервизор, и операционная система участвуют в процессе виртуализации, что требует внесения изменений в ОС, но зато обеспечивает почти естественную производительность.
Поскольку Xen требует внесения изменений в гостевую операционную систему, виртуализированы в Xen могут быть только ОС, соответствующим образом доработанные. С точки зрения Linux, которая придерживается принципа открытых кодов, это вполне приемлемый компромисс, поскольку результатом буде более высокое быстродействие, чем в случае полной виртуализации. Но с точки зрения обеспечения широты поддержки (имеется в виду поддержка операционных систем, не придерживающихся принципа открытых кодов), это очевидный недостаток.
Windows может быть запущена в Xen, но только на системах, в которых запущена Intel Vanderpool или AMD Pacifica. Другие операционные системы, поддерживающие Xen - это Minix, Plan 9, NetBSD, FreeBSD и OpenSolaris.
OpenVZ (виртуализация уровня операционной системы)
OpenVZ - это другой вариант виртуализации уровня операционной системы, похожий на Linux-VServer, но имеющий несколько интересных отличий. OpenVZ - это приспособленное для виртуализации (модифицированное) ядро, которое поддерживает изолированные пользовательские пространства, VPS, а также имеет набор пользовательских утилит для управления. Например, вы можете легко создавать новые VPS прямо из командной строки:
Листинг 1. Создание VPS из командной строки
$ vzctl create 42 --ostemplate fedora-core-4 Creating VPS private area VPS private area was created $ vzctl start 42 Starting VPS ... VPS is mounted |
Вы можете также получить список всех существующих в данный момент VPS, используя команду vzlist, которая работает примерно таким же образом, как стандартная Linux-команда ps.
Для управления процессами в OpenVZ включен двухуровневый планировщик задач (диспетчер) ЦПУ. Этот диспетчер, во-первых, определяет, какой VPS должен получить доступ к ЦПУ. Когда это сделано, планировщик второго уровня запускает процесс на выполнение, устанавливая для него стандартные для Linux приоритеты.
OpenVZ содержит также компонент, который называется beancounters . Beancounter представляет собой набор параметров, определяющих выделение ресурсов для заданного VPS. Этот набор определяет, сколько памяти предоставляется VPS, какие средства межпроцессорного взаимодействия (IPC) доступны объектам, и так далее, задавая тем самым определенный уровень контроля над VPS.
Уникальной особенностью OpenVZ является возможность задавать контрольные точки (to checkpoint) и переносить VPS с одного физического сервера на другой. Задание контрольной точки (Checkpointing) означает что состояние выполняющегося VPS "замораживается" и сохраняется в файле. Этот файл может быть перемещен на новый сервер, где этот VPS может быть восстановлен и запущен в работу с той же точки.
OpenVZ поддерживает различные типы аппаратных архитектур, включая x86, x86-64 и PowerPC.