- What is KVM virtualization in Linux?
- (KVM)Virtualization terminology
- Виртуальный Linux
- История виртуализации
- Виртуализация аппаратуры
- Виртуализация процессора
- Виртуализация набора команд
- Типы виртуализации
- Эмуляция аппаратуры
- Полная виртуализация
- Паравиртуализация
- Виртуализация уровня операционной системы
- Зачем нужна виртуализация?
- Проекты виртуализации для Linux
- Bochs (эмуляция)
- QEMU (эмуляция)
- VMware (полная виртуализация)
- z/VM (полная виртуализация)
- Xen (паравиртуализация)
- User-mode Linux (паравиртуализация)
- Linux-VServer (виртуализация уровня операционной системы)
- OpenVZ (виртуализация уровня операционной системы)
- Аппаратная поддержка полной виртуализации и паравиртуализации
- Виртуальная машина ядра Linux (Linux Kernel Virtual Machine — KVM)
- Выводы
- Ресурсы
- Об авторе
What is KVM virtualization in Linux?
Posted by Surendra Anne | Feb 1, 2013 | KVM | 8 |
In this post we will see what is KVM virtualization and it’s terminology. I included terminology as virtualization concept is still picking up by Linux users and new system administrators in this post. This will help in understanding different terms used. Below are some posts on the virtualization concepts and advantages we covered so far.
What is KVM virtualization?
KVM(Kernel Virtual machine) is an inbuilt virtualization software available in Linux(Have to select it when installing OS Or can be installed when ever it’s required). Up to recent years virtualization software are installed as stand alone software in Linux. But to make things more reliable, fast and virtualization is becoming a part of Kernel activities, this software is bundled along Linux OS which can be installed as a part of Kernel. There are many advantages of this KVM when compared to other virtualization software’s available in Linux.
- Can interact directly with the Kernel
- Default virtualization in leading Linux Distributions
- One of the Linux software developed aggressively.
- Almost becoming competitor to VMware by implementing technologies such as v2v, p2v, and many open source tools to manage VM’s
- Number of open source cloud automation software’s use KVM as default hyperviser.
How KVM virtualization works?
Once we install KVM on a Linux box a hardware file /dev/kvm is created which will act as interpreter between actual hardware and hypervisor manager(Virt-manager). When ever a request for hardware changes/additions comes from hypervisor manager, your KVM software starts allocating those resources virtually by interacting with real hardware. Suppose we want to change RAM on a virtual machine, this is communicated by your hypervisor manager to KVM for allocating the resource. Then KVM interacts with hardware and reserves that RAM from real RAM for that particular VM. This happens for the other resources as well. To make it simple I did not explain the concept of ballooning and another things.
Kvm virtualization architecture in Linux
(KVM)Virtualization terminology
VT(Virtualization Technology) enabled: If a hardware supports virtualization directly without any third-party software to simulate then that hardware is called as VT enabled processor. This is denoted by VTx in Intel processors and AMD-v For AMD processors. So if you want to install KVM on your machine your processor should support one of them.
Guest OS: Guest OS is the OS you are going to install on a Virtual machine which guest to the Host/base OS. You can install number of guest Operating systems on a host machine.
HOST OS: This is the OS where you are going to install your hypervisor software like KVM and virtual manager etc. This base OS so that you hypervisor start running as KVM is not an OS it should run on a OS to get things done.
Hyperviser: Hyperviser is a software which will help us in implementing virtualization. KVM, Vmware ESX and Xen are some examples of Hypervisors.
Virtual machine: Virtual machine is a virtual hardware allocated by Hypervisor for installing Guest OS on it so that it can run as separate machine.
libvirt: A toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). This is a building block to KVM.
virsh(Virtualization Shell): Virsh is a shell for managing hypervisors and VM’s directly from Host OS terminal. We cover this virsh extensively in our coming posts.
Cloning: Cloning is a concept to replicate a VM state/data etc so that we no need to install a new OS. After cloning we can use the cloned machine as we use normal VM.
p2v: This type of converting a machine from one state to other. In this we can convert a physical machine to virtual machine to consolidate a hardware machine.
v2v: This is the concept of migrating virtual machine to other virtual machine at the time of maintenance etc.
Hyper-threading(HT): This is Intel’s proprietary simultaneous multithreading (SMT) implementation used to improve parallelization of computations (doing multiple tasks at once) performed on PC microprocessors.
Overcommit: This is concept of committing resource more than available at HOST OS resources such as RAM, CPU and harddisk. We should be very much cautious when dealing with over commit.
Do you have other terminology which is not discussed here please do let us know by using comments section so that we will include them here.
Источник
Виртуальный Linux
Обзор методов виртуализации, архитектур и реализаций
M. Tim Jones (mtj@mtjones.com), Consultant Engineer, Emulex, 29 Dec.2006. ( Источник)
Перевод на русский язык В.А.Костромин (http://rus-linux.net), 17 января 2007 г.
Под «виртуализацией» разные люди понимают разные вещи. В настоящее время этим термином чаще всего обозначают виртуализацию серверов, то есть размещение (хостинг) нескольких независимых операционных систем на одном физическом компьютере (хосте). В настоящей статье рассматриваются основные идеи, скрывающиеся за термином «виртуализация», а затем обсуждаются некоторые из возможных путей или способов реализации этих идей. Мы здесь рассмотрим также и другие технологии виртуализации, такие как виртуализация операционной системы в Linux.
Оглавление | |
| История виртуализации |
Типы виртуализации | |
Зачем нужна виртуализация? | |
Проекты виртуализации для Linux | |
Аппартатная поддержка полной виртуализации и паравиртуализации | |
Виртуальная машина ядра Linux (KVM) | |
Выводы | |
Ресурсы | |
Об авторе |
Виртуализировать означает сделать так, чтобы одна вещь представлялась как другая (или казалась другой вещью). Виртуализация компьютера означает, что он представляется как много компьютеров или как совершенно другой компьютер.
Виртуализация также может означать, что некоторая совокупность компьютеров представляется как единый компьютер. Обычно это явление называют агрегацией серверов или распределенными вычислениями (grid computing).
Давайте начнем с возникновения виртуализации.
История виртуализации
Виртуализация — это далеко не новое явление: фактически ей уже более четырех десятков лет. Самые первые применения виртуализации имели место в компьютерах IBM® 7044, в системе разделения времени (the Compatible Time Sharing System — CTSS), разработанной в Массачусетском технологическом институте для IBM 704 и в проекте Atlas Манчестерского университете (один из первых в мире суперкомпьютеров), в котором впервые были применены выделение страниц по требованию и вызовы супервизора (which pioneered demand paging and supervisor calls).
Виртуализация аппаратуры
IBM осознала важность виртуализации в 1960-х годах во время разработки компьютера System/360( TM ) Model 67. Этот компьютер виртуализировал все аппаратные интерфейсы посредством монитора виртуальных машин VMM (the Virtual Machine Monitor). В начале компьютерной эры операционные системы называли супервизорами (supervisor). После реализации возможности запускать одну операционную систему в другой операционной системе появился (в 1970-х) термин «гипервизор» (hypervisor).
Монитор виртуальных машин VMM работал непосредственно с аппаратным обеспечением и позволял запускать множество виртуальных машин (VM). В каждой виртуальной машине могла быть запущена своя операционная система — в те дни это называлось CMS или Conversational Monitor System. Виртуальные машины совершенствовались и сегодня мы находим их работающими на мэйнфремах серии System z9( TM ). Они обеспечивают обратную совместимость, даже с линейкой System/360.
Виртуализация процессора
Еще одним из ранних вариантов виртуализации были P-коды (или псевдо-коды), в этом случае осуществлялась симуляция процессора. P-коды — это машинный язык, который исполнялся в виртуальной машине, а не на реальном процессоре. P-коды появились в начале 1970-х в разработанной в Калифорнийском университете Сан-Диего (UCSD) Pascal-системе, которая компилировала Pascal-программу в P-коды, а затем выполняла ее в виртуальной машине, реализующей P-коды. Это делало программы на P-кодах в высшей степени переносимыми и позволяло запускать их на любых компьютерах, для которых существовали виртуальные машины, реализующие P-коды.
|
Та же самая концепция была использована в 1960-х годах при создании языка Basic Combined Programming Language (BCPL), предшественника языка C. В нем компилятор преобразовывал BCPL-код в промежуточный код, который назывался O-код. На втором этапе O-код компилировался в машинные коды компьютера, на котором он должен был исполняться. Та же модель используется в современных компиляторах для языков программирования, что позволяет обеспечить возможность легкого портирования компилятора на новые аппаратные архитектуры (за счет разделения внешнего и внутреннего интерфейсов промежуточным языком).
Виртуализация набора команд
Более поздний вариант виртуализации — виртуализация набора команд (инструкций) или бинарная трансляция. В этой модели виртуальный набор команд транслируется в набор команд реального аппаратного обеспечения, причем в большинстве случаев это осуществляется динамически. Трансляция сегмента кода происходит тогда, когда код должен исполняться. Если происходит переход, извлекается из памяти нужный новый кусок кода и транслируется. Это сильно напоминает кэширование, при котором блок инструкций перед исполнением перемещается из памяти в быстрый кэш.
Недавний пример использования той же модели имел место в процессоре Crusoe, разработанном компанией Transmeta. В этой архитектуре применяется бинарная трансляция, зарегистрированная под торговой маркой Code Morphing. Еще одним примером может служить сканирование кодов во время исполнения (runtime code scanning), используемое при полной виртуализации для поиска и перенаправления привелигированных команд (для обработки результатов в некоторых наборах инструкций процессора).
|
Типы виртуализации
Когда заходит речь о виртуализации, необходимо сказать, что существует не единственный способ достичь нужного эффекта. Фактически имеется несколько вариантов достижения одного и того же результата путем использования разных уровней абстракции. В этом разделе мы рассмотрим три наиболее общих метода виртуализации в Linux и оценим их относительные преимущества и недостатки. Отметим, что иногда для обозначения одного и того же метода виртуализации используются различные термины. Мы будем использовать наиболее употребительные, указывая на возможность употребления других вариантов.
Эмуляция аппаратуры
Вероятно самым сложным способом виртуализации является эмуляция аппаратуры. В этом методе в хост-системе создается виртуальная машина, которая моделирует какую-то другую аппаратную архитектуру, как это показано на рисунке 1.
Рисунок 1. Эмуляция аппаратуры использует виртуальную машину для моделирования требуемого аппаратного обеспечения
|
Вы, вероятно, догадываетесь, что основная проблема при этом способе виртуализации состоит в том, что он мучительно медленный. Дело в том, что каждая команда должна быть смоделирована применительно к реальному аппаратному обеспечению, а при этом 100-кратное замедление не является чем-то необычным. При полном моделировании, которое подразумевает точное исполнение циклов, моделирование конвейеров ЦПУ и поведения кэша, реальная скорость выполнения быть и в 1000 раз меньше, чем на реальной моделируемой аппаратуре.
Но эмуляция аппаратуры имеет и свои преимущества. Например, в этом случае вы имеете возможность без внесения каких-либо изменений запустить операционную систему, разработанную для PowerPC® на хосте, работающем на процессоре ARM. Вы даже можете запустить несколько виртуальных машин, моделирующих различные процессоры.
Полная виртуализация
Полная виртуализация, которую также называют естественной (native virtualization), — это другой интересный метод виртуализации. Эта модель использует виртуальную машину, которая выступает как посредник между гостевой операционной системой и реальным оборудованием (см. Рисунок 2). Слово «посредник» в данном случае играет ключевую роль, поскольку VMM располагается между гостевой ОС и реальным оборудованием. Некоторые инструкции защищенного режима должны перехватываться и обрабатываться внутри гипервизора, поскольку аппаратура не доступна непосредственно из операционных систем, доступ к ней предоставляется через гипервизор.
Рисунок 2. Полная виртуализация использует программу-гипервизор для разделения доступа к нижележащему оборудованию
|
Полная виртуализация работает быстрее, чем эмуляция аппаратуры, но производительность все же ниже, чем на реальной аппаратуре, из-за посредничества гипервизора. Самое большое преимущество полной виртуализации состоит в том, что гостевая операционная система может быть запущена без какой-либо модификации. Единственное ограничение состоит в том, что она должна поддерживать реальное физическое оборудование (например, PowerPC).
Паравиртуализация
Паравиртуализация — это другой популярный метод, который имеет некоторое сходство с полной виртуализацией. Этот метод тоже использует гипервизор для разделяемого доступа к оборудованию, но интегрирует код виртуализации в саму операционную систему (см. Рисунок 3). Этот подход позволяет избежать любой перекомпиляции или перехвата команд, поскольку операционная система сама участвует в процессе виртуализации.
Рисунок 3. Паравиртуализация разделяет процесс с гостевой операционной системой
Как я уже упоминал, паравиртуализация требует модификации гостевой операционной системы, что является недостатком. Однако в этом случае обеспечивается производительность, близкая к производительности невиртуализированной системы. Подобно полной виртуализации множество различных операционных систем могут поддерживаться одновременно.
Виртуализация уровня операционной системы
Последний из рассматриваемых нами здесь вариантов, виртуализация уровня операционной системы, использует технику, отличающуюся тех способов, которые были рассмотрены ранее. В этом варианте виртуализируются серверы, запускаемые в операционной системе. В этом случае операционная система одна и просто изолируются один от другого сервера, работающие под ее управлением (см. Рисунок 4).
Рисунок 4. При виртуализации уровня операционной системы изолируются сервера
Виртуализация уровня операционной системы требует внесения изменений в ядро операционной системы, но зато позволяет достичь исходной ее производительности.
Вернуться к началу |
Зачем нужна виртуализация?
Перед тем, как рассмотреть некоторые из реализаций виртуализации, доступных в Linux-системах, давайте скажем несколько слов о преимуществах виртуализации.
С точки зрения бизнеса имеется множество причин для использования виртуализации. Большинство получаемых преимуществ вытекает из того, что принято называть консолидацией серверов. Проще говоря, если вы можете перевести несколько не полностью используемых систем на один сервер, вы получаете существенную экономию пространства, потребления энергии, охлаждения и упрощаете администрирование в силу того, что требуется поддерживать меньшее количество серверов. Поскольку трудно определить степень использования сервера, технология виртуализации поддерживает возможность так называемой «живой миграции» (live migration). Живая миграция позволяет операционной системе и ее приложениям быть перемещенными на новый сервер для балансировки нагрузки на имеющееся оборудование.
Виртуализация важна также для разработчиков. Ядро Linux работает в общем адресном пространстве, что означает, что сбой в работе ядра или любого драйвера приводит к краху всей операционной системы. Виртуализация означает, что вы запускаете множество операционных систем, и, если одна из них рушится из-за какой-то ошибки, гипервизор и другие операционные системы продолжают работать. Это может сделать отладку ядра подобной отладке пользовательских приложений.
|
Проекты виртуализации для Linux
В таблице 1 приведен список нескольких проектов виртуализации для Linux, причем в основном перечисляются проекты с открытым исходным кодом.
Таблица 1. Проекты виртуализации для Linux-систем
Проект | Тип | Лицензия |
---|---|---|
Bochs | Эмуляция | LGPL |
QEMU | Эмуляция | LGPL/GPL |
VMware | Полная виртуализация | Proprietary |
z/VM | Полная виртуализация | Proprietary |
Xen | Паравиртуализация | GPL |
UML | Паравиртуализация | GPL |
Linux-VServer | Виртуализация уровня ОС | GPL |
OpenVZ | Виртуализация уровня ОС | GPL |
Информацию о других решениях вы сможете найти по ссылкам в разделе Ресурсы.
Bochs (эмуляция)
|
Bochs — это программа-имитатор, моделирующая компьютер архитектуры x86, которая портируема и может запускаться на многих аппаратных платформах, включая x86, PowerPC, Alpha, SPARC и MIPS. Особенность, которая делает Bochs особо интересным проектом, заключается в том, что он(а) моделирует не только процессор, но и периферийное оборудование, такое как клавиатура, мышь, видео-оборудование, сетевые карты и так далее.
Bochs можно сконфигурировать для моделирования старого Intel® 386, или его последователей, таких как 486, Pentium, Pentium Pro или 64-битных вариантов. Он(а) может эмулировать даже необязательные наборы графических инструкций вроде MMX и 3DNow.
Используя Bochs, вы можете запустить под Linux любой из дистрибутивов Linux, Microsoft® Windows® 95/98/NT/2000 (и множество приложений), и даже операционные системы семейства Berkeley Software Distribution (BSD) — FreeBSD, OpenBSD и так далее.
QEMU (эмуляция)
QEMU — это другой эмулятор, подобный Bochs, но имеющий несколько малосущественных отличий. QEMU поддерживает два режима эмуляции. Первый — режим полной эмуляции системы (Full System Emulation). Этот режим подобен Bochs в том, что в этом случае моделируется весь персональный компьютер (PC) с процессором и периферией. Имеется возможность, используя динамическую трансляцию, смоделировать различные процессорные архитектуры, такие как x86, x86_64, ARM, SPARC, PowerPC и MIPS, причем с достаточно приемлемыми скоростями работы. В этом режиме, используя в качестве базовой ОС Linux, Solaris или FreeBSD, вы можете сэмулировать операционные системы семейства Windows (включая XP) и Linux. Поддерживается множество других комбинаций операционных систем (дополнительную информацию ищите в секции Ресурсы).
QEMU включает также другой режим, который называется пользовательским режимом эмуляции (User Mode Emulation). В этом режиме, который работает только в том случае, когда базовой ОС является Linux, могут быть запущены приложения (бинарные файлы), созданные для других архитектур. Например, можно запустить на исполнение в ОС Linux, работающей на x86, бинарный файл, скомпилированный для архитектуры MIPS. В настоящее время в этом режиме поддерживаются архитектуры ARM, SPARC и PowerPC, а поддержка еще нескольких находится в процессе разработки.
VMware (полная виртуализация)
VMware — это коммерческое решение по методу полной виртуализации. Гирервизор располагается между гостевой операционной системой и физическим оборудованием как дополнительный уровень абстракции. Этот уровень абстракции позволяет любой операционной системе работать с оборудованием, не обращая внимания на присутствие любой другой гостевой операционной системы.
VMware виртуализирует также имеющиеся устройства ввода-вывода и добавляет к гипервизору драйверы высоко-производительных устройств.
Вся виртуализируемая система (включая гостевую ОС, виртуальную машину и виртуальное оборудование) хранится в виде файла, в силу чего легко и быстро можно перенести ее на другой хост, например, для балансировки нагрузки.
z/VM (полная виртуализация)
Хотя система z от IBM (IBM System z TM ) появилась относительно недавно, фактически она является наследницей предыдущих разработок, история которых восходит к 1960-м годам. Компьютеры линейки System/360 поддерживали виртуализацию на основе виртуальных машин уже в 1965. Интересно, что System z сохраняет обратную совместимость с линейкой System/360.
z/VM ® — это гипервизор операционной системы для System z. Его ядром является программа управления (Control Program — CP), которая обеспечивает виртуализацию физических ресурсов для гостевых операционных систем, в качестве которой может выступать, например, Linux (смотри Рисунок 5). При этом имеется возможность виртуализировать многопроцессорные системы и другие виды ресурсов для различных гостевых операционных систем.
Рисунок 5. Виртуализация уровня ОС с использованием z/VM
Система z/VM может также виртуально моделировать работу гостевой локальной вычислительной сети (ЛВС) для тех гостевых операционных систем, которые хотят взаимодействовать друг с другом. ЛВС моделируется полностью в гипервизоре, что обеспечивает высокий уровень безопасности.
Xen (паравиртуализация)
Xen — это свободное решение с открытыми кодами от компании XenSource, реализующее паравиртуализацию уровня операционной системы. Вспомним, что в случае паравиртуализации и гипервизор, и операционная система участвуют в процессе виртуализации, что требует внесения изменений в ОС, но зато обеспечивает почти естественную производительность.
Поскольку Xen требует внесения изменений в гостевую операционную систему, виртуализированы в Xen могут быть только ОС, соответствующим образом доработанные. С точки зрения Linux, которая придерживается принципа открытых кодов, это вполне приемлемый компромисс, поскольку результатом буде более высокое быстродействие, чем в случае полной виртуализации. Но с точки зрения обеспечения широты поддержки (имеется в виду поддержка операционных систем, не придерживающихся принципа открытых кодов), это очевидный недостаток.
Windows может быть запущена в Xen, но только на системах, в которых запущена Intel Vanderpool или AMD Pacifica. Другие операционные системы, поддерживающие Xen — это Minix, Plan 9, NetBSD, FreeBSD и OpenSolaris.
User-mode Linux (паравиртуализация)
User-mode Linux (UML) позволяет запускать в пользовательском пространстве одной операционной системы Linux другой экземпляр ОС Linux. Каждая гостевая Linux-система существует внутри процесса, запущенного на базовой операционной системе Linux (смотри Рисунок 6). Это обеспечивает возможность одновременного исполнения нескольких ядер Linux (с их собственными пользовательскими пространствами) в контексте одного (базового) ядра Linux.
Рисунок 6. Linux, запущенный в User-mode Linux
Для ядер Linux версии 2.6 UML включено в основную ветку ядра, но для того, им воспользоваться, необходимо задействовать его и перекомпилировать ядро. При этом, кроме всего прочего, обеспечивается виртуализация устройств. Это позволяет гостевой операционной системе получать доступ к имеющимся физическим устройствам, таким как блочные устройства (флоппи, CD-ROM и файловые системы, например), к консоли, сетевым устройствам, звуковому оборудованию и так далее.
Отметим, что поскольку ядра гостевых ОС запускаются в пользовательском пространстве, они тоже должны быть скомпилированы специальным образом (хотя они могут относиться к другой версии ядра). Получаем две разных версии ядра — базовое ядро (которое работает непосредственно с физическим оборудованием) и гостевое ядро (которое запущено в пользовательском пространстве базового ядра). Можно даже получить многоуровневое вложение, когда в гостевом ядре запускается другое гостевое ядро.
Linux-VServer (виртуализация уровня операционной системы)
Linux-VServer — это решение, обеспечивающее виртуализацию уровня операционной системы. Linux-VServer изменяет ядро Linux таким образом, что образуется множество пользовательских пространств, называемых виртуальными частными серверами (Virtual Private Servers — VPS), исполняющимися независимо один от другого. Linux-VServer обеспечивает изоляцию этих пользовательских пространств за счет модификации ядра Linux.
Для того, чтобы изолировать индивидуальные пользовательские пространства одно от другого, вводится понятие контекста. Контекст — это контейнер для процессов заданной VPS, так что утилиты типа ps позволяют получать данные только о процессах данной VPS. При начальной загрузке ядро создает контекст по умолчанию. Существует также отдельный контекст для административных задач (чтобы видеть все исполняющиеся процессы). Как вы можете догадаться, ядро и внутренние структуры данных модифицируются для поддержки этого способа виртуализации.
В Linux-VServer используется также особая форма утилиты chroot , обеспечивающая изоляцию корневой директории для каждого VPS. Вспомним, что chroot позволяет определить новый корневой каталог, но в данном случае необходим дополнительный функционал (его называют Chroot-Barrier), чтобы VPS не мог выйти за пределы назначенного ему корневого каталога (в родительский каталог этого корневого). Кроме изолированного корневого каталога каждый VPS имеет собственный список пользователей и отдельный пароль суперпользователя root.
Linux-VServer поддерживается для ядер Linux версий 2.4 и 2.6 и может работать на платформах x86, x86-64, SPARC, MIPS, ARM и PowerPC.
OpenVZ (виртуализация уровня операционной системы)
OpenVZ — это другой вариант виртуализации уровня операционной системы, похожий на Linux-VServer, но имеющий несколько интересных отличий. OpenVZ — это приспособленное для виртуализации (модифицированное) ядро, которое поддерживает изолированные пользовательские пространства, VPS, а также имеет набор пользовательских утилит для управления. Например, вы можете легко создавать новые VPS прямо из командной строки:
Вы можете также получить список всех существующих в данный момент 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.
|
Аппаратная поддержка полной виртуализации и паравиртуализации
Напомню, что с точки зрения виртуализации архитектура IA-32 (x86) создает несколько проблем. Некоторые инструкции привелигированного режима не могут быть перехвачены. Другие возвращают различные результаты в зависимости от того, в каком режиме они выполняются. Например, команда STR в x86 показывает состояние безопасности, но возвращаемое значение зависит от того, каков уровень привилегий у запустившего ее процесса. Архитектура x86 поддерживает 4 кольца безопасности, причем на уровне 0 (наивысшие привилегии) обычно запускается сама операционная система, на уровнях 1 и 2 запускаются сервисы операционной системы, а уровень 3 (наименьшие привилегии) выделен для приложений. Очевидно, что это вызывает проблемы, когда запуск виртуальных операционных систем производится на разных уровнях. Производители оборудования уже осознали, что это является является недостатком (и не единственным) и разработали несколько новых проектов, которые поддерживают и ускоряют виртуализацию.
Фирма Intel разработала новую технологию виртуализации, которая будет поддерживать гипервизоры как для архитектуры x86 (VT-x), так и для Itanium® (VT-i). VT-x поддерживает две новых формы операций, одна — для VMM (root), а вторая — для гостевых операционных систем (non-root). Первая форма (root form) выполняется с полными привилегиями, а вторая лишена части привилегий (даже в кольце 0). Эта архитектура, кроме того, позволяет гибко определять инструкции, которые приводят к выходу VM (гостевой ОС) в VMM и сохранению состояния процессора. Добавлены и еще некоторые возможности; прочитать об этом вы можете в источниках, приведенных в разделе Ресурсы.
Фирма AMD тоже разработала аппаратно-поддерживаемую технологию виртуализации под названием Pacifica. Среди других особенностей Pacifica поддерживает блок управления для гостевой операционной системы, который сохраняется при выполнении специальных команд (maintains a control block for guest operating systems that are saved on execution of special instructions). По команде VMRUN виртуальная машина (и запущенная в ней операционная система) запускается и работает до тех пор, пока VMM снова не перехватит управление (что тоже настраивается). Возможность конфигурирования позволяет VMM определять уровень привилегий для каждой из гостевых систем. Кроме того, Pacifica контролирует преобразование адресов в таблицах блоков управления памятью (memory management unit — MMU) базовой и гостевой систем.
Эти новые технологии могут быть использованы в различных реализациях виртуализации, обсуждавшихся выше, включая Xen, VMware, User-mode Linux и других.
|
Виртуальная машина ядра Linux (Linux Kernel Virtual Machine — KVM)
Одним из недавних новшеств в Linux является включение KVM в ядро Linux (версии 2.6.20). KVM — это реализация варианта полной виртуализации, превращающая ядро Linux в гипервизор за счет подключения соответствующего модуля ядра. Этот модуль позволяет запускать другие гостевые операционные системы в пользовательском пространстве базового ядра Linux (смотри Рисунок 7). Модуль KVM в ядре экспортирует (предоставляет) виртуализированное оборудование посредством символьного устройства /dev/kvm . Гостевая операционная система взаимодействует с модулем KVM через модифицированный процесс QEMU для эмуляции аппаратного обеспечения.
Рисунок 7. Виртуализация посредством Kernel Virtual Machine (KVM)
Модуль KVM добавляет к ядру новый режим исполнения. Если раньше ядра поддерживали режим ядра и режим пользователя, KVM вводит режим гостя. Гостевой режим используется для выполнения всех инструкций, не связанных с вводом-выводом, а операции ввода-вывода для гостевых систем исполняются в обычном пользовательском режиме.
Включение KVM в ядро является очень интересным явлением в эволюции Linux, поскольку является первой технологией виртуализации, включенной в основную ветку ядра. Оно появилось в версии 2.6.20, но может быть в виде модуля включено и в ядрах версии 2.6.19. Его использование на аппаратном обеспечении, поддерживающем виртуализацию, позволяет запускать гостевые операционные системы Linux (в 32-х и 64-х битовом вариантах) и Windows (32-битовую). Если хотите больше узнать о KVM, смотрите раздел Ресурсы.
|
Выводы
Виртуализация — это великолепное новшество, если термин «новшество» вообще можно применять к явлению, история которого насчитывает более четырех десятилетий. В исторической перспективе она встречается в разных контекстах, но в настоящее время в основном используется для виртуализации серверов и операционных систем. Подобно Linux, виртуализация предоставляет множество возможностей для повышения производительности, переносимости и приспособляемости компьютерных систем. Это означает, что вы можете выбрать подход, который наиболее соответствует вашим потребностям и используемому вами набору приложений.
Ресурсы
Обучение
- Страничка New to IBM Systems будет вам полезна, если вы еще не знакомы с системами от IBM. На этой страничке вы найдете описания систем i, p, x, z и других.
Grid computing от IBM базируется на наборе открытых стандартов и протоколов для виртуализации распределенных компьютерных компьютерных сетей с целью создания единой мощной вычислительной системы.
Страница developerWorks Linux zone содержит различные ресурсы для разработчиков Linux.
Где найти продукты и технологии
- Bochs и QEMU — эмуляторы ПК, которые позволяют запускать такие операционные системы как Windows или Linux в пользовательском пространстве базовой Linux-системы.
VMware — популярное коммерческое решение методом полной виртуализации, которое позволяет запускать в виртуальном компьютере немодифицированные операционные системы.
z/VM — новая операционная система виртуальных машин для 64-битовой z/архитектуры. z/VM обеспечивает полную виртуализацию оборудования и поддержку широкого спектра операционных систем, включая Linux.
Xen — это решение на основе открытых кодов по методу паравиртуализации, которое требует внесения изменений в гостевую операционную систему, но позволяет достичь производительности, близкой к естественной за счет взаимодействия с гипервизором.
User-mode Linux — другое решение с открытыми исходными кодами на основе метода паравиртуализации. Каждая гостевая ОС исполняется как процесс в базовой операционной системе.
coLinux или Cooperative Linux — реализация виртуализации, которая позволяет двум операционным системам совместно использовать аппаратное обеспечение.
Linux-Vserver виртуализация уровня ОС для GNU/Linux-систем, обеспечивающая надежную изоляцию независимых гостевых серверов.
OpenVZ — виртуализация уровня ОС, поддерживающая «замораживание состояния» и перенос системы с одного сервера на другой.
Linux KVM — первая технология виртуализации, которая интегрирована в основную ветку ядра Linux. На оборудовании, поддерживающем виртуализацию, путем подключения загружаемого модуля ядро Linux превращается в гипервизор, способный осуществлять запуск немодифицированных гостевых ОС Linux и Windows.
Order the SEK for Linux — комплект из двух DVD, содержащий пробные версии последних разработок ПО для Linux от IBM: DB2®, Lotus®, Rational®, Tivoli® и WebSphere®.
- С сайта IBM trial software вы можете непосредственно скачать пробные версии ПО, чтобы проводить собственные разработки ПО для Linux.
Об авторе
|