Что такое виртуализация
В рассказах о том, как работают эмуляторы старых приставок, и об облачных игровых сервисах мы упоминали виртуализацию и виртуальные машины. Настало время рассказать об этом подробнее.
Представьте, что у вас есть компьютер на Windows, но вы хотите попробовать немного поработать в Linux — познакомиться с этой операционной системой и решить, стоит ли на неё переходить. Очевидный способ — скачать систему на флешку, загрузиться с неё и установить полноценный Linux на компьютер.
Но у такого подхода есть минус, покажем на примере:
- Вы установили Linux второй системой, чтобы, если что, — можно было перезагрузиться назад в Windows.
- Загрузились в Linux.
- Увидели, что всё остановилось на командной строке, а что вводить дальше — непонятно.
- Перезагрузились в Windows, нашли решение в интернете, записали команды на листочек.
- Перезагрузились обратно в Linux, ввели команды, появился рабочий стол и графический интерфейс, но интернета нет.
- Перезагрузились в Windows, и всё по новой.
Получается, что системы на компьютере две, но толком поработать не получается ни в одной — по крайней мере, первое время.
Есть другой способ — использовать виртуальную систему и поставить Linux туда. Работает это, например, так:
- Запускаете Windows.
- Устанавливаете специальную программу, которая создаст внутри вашей системы виртуальный компьютер.
- Устанавливаете туда Linux, и он там работает как будто на отдельном компьютере.
- А для Windows такая виртуальная система будет выглядеть как одна большая программа, которую в любой момент можно свернуть, закрыть или переключиться с неё на другую программу.
Это не единственный способ виртуализации, но он самый популярный среди обычных пользователей. Удобство в том, что таких виртуальных компьютеров можно создать много и запускать одновременно (если хватает ресурсов) или по очереди. Например, внутри Windows можно создать одну виртуальную машину для тестовой установки Ubuntu, а в другой поставить Debian и софт для тестирования серверных приложений.
Что такое виртуализация?
Виртуализация сегодня — понятие весьма обширное и разноплановое, однако мы не будем сегодня рассматривать все его аспекты, это выходит далеко за рамки данной статьи. Тем, кто только знакомится с данной технологией будет вполне достаточно упрощенной модели, поэтому мы постарались максимально упростить и обобщить данный материал, не вдаваясь в подробности реализации на той или иной платформе.
Так что-же такое виртуализация? Это возможность запустить на одном физическом компьютере несколько изолированных друг от друга виртуальных машин, каждая из которых будет «думать» что работает на отдельном физическом ПК. Рассмотрим следующую схему:
Поверх реального аппаратного обеспечения запущено специальное ПО — гипервизор (или монитор виртуальных машин), который обеспечивает эмуляцию виртуального железа и взаимодействие виртуальных машин с реальным железом. Он также отвечает за коммуникации виртуальных ПК с реальным окружением посредством сети, общих папок, общего буфера обмена и т.п.
Гипервизор может работать как непосредственно поверх железа, так и на уровне операционной системы, существуют также гибридные реализации, которые работают поверх специально сконфигурированной ОС в минимальной конфигурации.
С помощью гипервизора создаются виртуальные машины, для которых эмулируется минимально необходимый набор виртуального железа и предоставляется доступ к разделяемым ресурсам основного ПК, называемого «хостом«. Каждая виртуальная машина, как и обычный ПК, содержит свой экземпляр ОС и прикладного ПО и последующее взаимодействие с ними ничем не отличается от работы с обычным ПК или сервером.
Зачем нужна виртуальная машина и виртуализация
Для чего используют виртуализацию:
- Чтобы загружать программы и компьютерные игры, которые предназначены для определенной ОС. Например, программы для Windows можно устанавливать на macOS;
- Чтобы устанавливать две и более операционные системы на одном физическом устройстве. Например, на вашем компьютере установлена операционная система Windows 7, а на виртуальную машину вы установили Linux;
- Для тестирования. Иногда разработчикам нужно узнать, корректно и безопасно ли работает приложение в другой ОС, например в разных версиях Windows. Покупать или арендовать для этого несколько физических серверов и устанавливать на них разные ОС долго, дорого и сложно;
- Чтобы запускать программы, которые не совместимы с основной ОС. Например, применять Windows-программы на macOS или Linux;
- Для безопасного запуска приложения (программы), которое не вызывает доверия. Простыми словами, если файл заражен, то он не сможет атаковать основную ОС;
- Чтобы эмулировать компьютерные сети и сложные среды, не настраивая виртуальную машину каждый раз. Можно сохранить настройки и продолжить с того этапа, где остановились.
Как тип гипервизора влияет на работу ВМ
Как упоминалось выше, для развертывания виртуальной машины нужна соответствующая среда, которая обеспечивается гипервизором. Примечательно, что гипервизор может быть установлен как поверх ОС, так и поверх «чистого железа».
В первом случае гипервизор устанавливается поверх железа и относится к типу bare-metal. Такие гипервизоры используются гораздо чаще, поскольку прямой доступ к базовому оборудованию обеспечивает наилучшую производительность и позволяет разместить наибольшее количество виртуальных машин на физическом уровне.
Гипервизор второго типа устанавливается поверх существующей ОС хоста, где и запускаются гостевые виртуальные машины, а также собственные приложения. Поскольку такой гипервизор не может напрямую обращаться к оборудованию, здесь в качестве посредника выступает хост-ОС. Но это может увеличить ресурсные издержки и отразиться на производительности ВМ. Однако для клиента виртуальные машины, созданные и управляемые обоими типами гипервизоров, практически идентичны.
История
На заре развития компьютеры (или ЭВМ, электронно-вычислительные машины) были очень дорогим и штучным инструментом, позволить который могли себе только наиболее крупные институты и предприятия. Вычислительные ресурсы приходилось экономить всеми возможными способами. Первые разработчики писали код в режиме «офлайн» и передавали их оператору ЭВМ, который последовательно вводил программы в машину и производил расчеты. В начале 1960-х годов зародилась концепция разделения времени (time-sharing) – распределение вычислительных ресурсов между несколькими пользователями: пока один вводит данные, машина занимается расчетами других. Первые проекты с поддержкой данной концепции – Compatible Time-Sharing System (CTSS), Project MAC и предшественница ОС семейства Unix Multics – стали настоящим прорывом, однако они были небезопасными, сложными и, как следствие, не слишком стабильными.
В поисках путей решения проблемы оптимизации использования вычислительных ресурсов командой инженеров IBM был предложен новый подход – в рамках одной ЭВМ предоставить каждому пользователю виртуальную машину со своей ОС. Так в 1964 году появился проект CP-40, который позволил запускать несколько экземпляров клиентских ОС, например CMS. В 1967 году на основе проекта CP-40/CMS появилась CP-67/CMS – многопользовательская операционная система с разделением времени. CP-67/CMS работала на аппаратном мейнфрейме IBM System/360-67 и состояла из двух компонентов:
CP (Control Program)
Программа управления виртуализацией (прообраз современного гипервизора).
CMS (Cambridge Monitor System)
Одна из наиболее распространенных однопользовательских операционных систем для запуска в виртуальном окружении CP (клиентская, или гостевая, ОС).
Пользователи подключались к гостевым ОС с помощью специальных устройств ввода-вывода – терминалов.
Виртуализация обладала существенными преимуществами над концепцией разделения времени:
Увеличенные надежность и безопасность за счет изоляции пользователей.
Запуск любых приложений (не только приспособленных к концепции разделения времени) за счет симуляции отдельного компьютера для каждого пользователя.
Увеличенная производительность за счет использования легковесных гостевых ОС.
Шло время, компьютеры уменьшались в размерах и дешевели. В 1980-х годах x86 серверы и персональные компьютеры стали доступны для широкого спектра потребителей, вследствие чего мейнфреймы с виртуализацией и терминалами для многопользовательской работы ушли в прошлое. Однако технологии виртуализации продолжали развиваться и решать насущные проблемы. В 1988 году компания Insignia Solutions представила эмулятор программного обеспечения SoftPC, с помощью которого можно было запускать приложения MS DOS на рабочих станциях Unix, что стало своеобразным прорывом. В 1997 году компания Connectix создала программу Virtual PC для запуска под Mac ОС Windows. В 1999 году ныне всемирно известная компания VMware представила VMware Workstation, которая позволила запускать различные ОС в рамках виртуальных машин.
В начале 2000-х годов стали появляться продукты для серверной виртуализации. Эти решения дали возможность запускать несколько изолированных гостевых ОС в виртуальной среде на одном физическом сервере, что упрощало администрирование инфраструктуры, повышало ее отказоустойчивость и снижало простои серверного оборудования. Идея серверной виртуализации быстро набирала популярность. В 2001 году VMware представила ESX Server и GSX Server. В 2003 году Microsoft купила вышеупомянутую Connectix и перезапустила проект Virtual PC, ставший предшественником Microsoft Virtual Server и современного Microsoft Hyper-V). В 2007 году компанией Innotek был представлен VirtualBox. Также в 2007 году на рынок корпоративной виртуализации вышла компания Citrix, которая купила компанию XenSource и начала развивать проект с открытым исходным кодом Xen, предоставляя для клиентов коммерческую версию продукта Citrix XenServer (в настоящее время переименован в Citrix Hypervisor).
Напоследок стоит отметить, что помимо серверной виртуализации появлялись также продукты для виртуализации рабочих столов (новое воплощение той самой связки мейнфрейм-терминал из 1960-70 г.г.), приложений и др. Многие из этих решений активно развиваются и сегодня.
Зачем нужна виртуальная машина?
Виртуализацию компьютеров производят, как правило, для тестирования и разработки. Вы только представьте себя на месте разработчика программ, которому нужно протестировать свою программу в разных версиях ОС — Windows 7/8/10. Без виртуализации ему нужно было бы три разных компьютера или же установить несколько ОС на один компьютер и переключаться между ними путем перезагрузки.
Используя технологию виртуализации, разработчик может создать несколько ВМ и переключаться между ними, как между обычными окнами. Более того, есть возможность объединить все запущенные ВМ в сеть или же предоставить им доступ к локальной сети, что позволяет протестировать программу практически в реальных условиях.
Но разработка и тестирование — не единственные причины использовать ВМ. Приведем еще несколько причин:
- Проблемы с совместимостью — представьте, что купили новый компьютер, установили новейшую версию Windows, но потом обнаружили, что у вас на старом компьютере есть несколько программ, которые никак не хотят запускаться на новом. Причины две — или несовместимость с новой версией Windows, или же несовместимость с аппаратной частью нового компьютера. Если нет планов вернуть новый компьютер в магазин и еще несколько лет работать на старом в ожидании чуда, которое так может и не произойти (когда разработчики той программы выпустят новую версию), можно создать ВМ, установить в нее старую версию Windows и продолжать использовать и новую версию ОС, и старую версию программы.
- Соображения безопасности — если приходится устанавливать программы из непроверенных источников, можно сначала устанавливать их в ВМ и наблюдать, что будет дальше. Если программа содержит вирус или другой вредоносный код, то это никак не отразится на основной системе, а ВМ можно всегда удалить.
- Обход ограничений программы — некоторые программы не позволяют запускать несколько своих экземпляров на одном компьютере.
Покупать второй компьютер этого — роскошь. Как вариант, можно использовать ВМ для установки второго экземпляра программы.
Виртуализация и Oracle
Мы предлагаем интегрированные решения для виртуализации, которые можно использовать везде: в настольных системах, центрах обработки данных и общедоступных облаках. Выходя далеко за рамки простой консолидации, мы позволяем пользователям виртуализировать весь стек аппаратного и программного обеспечения и управлять им.
Узнайте больше о том, как управлять Oracle Linux KVM.
Oracle VM дает пользователям возможность развертывать операционные системы и прикладное программное обеспечение в поддерживаемой среде виртуализации. Oracle предлагает следующие решения.