Чем отличается системная виртуальная машина от процессорной
Цель работы: Изучение основных понятий о виртуальных машинах для их практического применения.
Теоретические сведения:
1. Виртуальные машины в целом
1.1. Определение и понятие
Чтобы построить полный взгляд на виртуальные машины, разберем для начала, а что такое виртуальная машина?
Виртуальная машина — программная или аппаратная среда, исполняющая некоторый код (например, байт-код, шитый код, p-код или машинный код реального процессора), или спецификация такой системы (например: «виртуальная машина языка программирования Си»). [Википедия]
Для сравнения приведем несколько других определенней, а именно: Виртуальная машина — это полностью изолированный программный контейнер, способный выполнять собственную операционную систему и приложения, как физический компьютер. Виртуальная машина работает абсолютно так же, как физический компьютер, и содержит собственные виртуальные (т.е. программные) ЦП, ОЗУ, жесткий диск и сетевую интерфейсную карту (NIC).
Проще говоря, виртуальная машина – это программа, которую вы запускаете из своей операционной системы. Программа эмулирует реальную машину. На виртуальные машины, как и на реальные, можно ставить операционные системы. У неё есть BIOS, отведенное место на вашем жестком диске, сетевые адаптеры для соединения с реальной машиной, сетевыми ресурсами или другими виртуальными машинами.
1.2. Преимущества и недостатки виртуальных машин
Резервное копирование
Виртуальная машина по сути представляет из себя набор файлов конфигурации и жесткого диска, а оперативную память тоже можно сохранить в виде файла. Учитывая эти особенности и возможность «заморозить» работу виртуальной машины, стало возможным делать бэкапы виртуальных серверов целиком. Потом, в случае поломки сервера, можно восстановить его из резервной копии. При этом не важно, будет он работать физически на этом же железе или новом, главное, чтобы был установлен нужный гипервизор. Помните, что аппаратная виртуализация даёт независимость от хост-платформы?
Возможность «заморозить» (поставить на паузу) работу виртуальной машины можно использовать для быстрого переключения между окружениями. Допустим, вы разрабатываете приложение для Windows. У вас открыто окно соответствующего редактора, запущены вспомогательные процессы и так далее. Но в тоже время вам нужно работать над другим проектом с совершенно другим окружением и в другой операционной системе.
Работая в виртуальной среде, можно поставить виртуальную машину на паузу и поработать над другим проектом. А когда нужно будет вернуться к первому, достаточно просто оживить виртуальную машину и продолжить работу с того места, на котором вы остановились. Так сохраняется контекст и экономится время, так как всё нужное, вплоть до интерфейса окон, уже настроено и правильно расположено на экране.
Виртуализация серверов
Так как на одном физическом сервере может располагаться множество виртуальных машин, на которых запущены другие серверы, расходы на их содержание значительно упали. В данный момент можно очень дешево арендовать ресурсы такого виртуального сервера VPS. На таких серверах, например, часто хостятся сайты.
2. Различные виртуальные машины
Все отличия существующих виртуальных машин, по сути, сводятся лишь к перечню поддерживаемых ими операционных систем, а так же стоимости. Наиболее распространены сегодня системы VirtualBox, Windows Virtual PC и VMWare. Чем же они отличаются?
2.1. ORACLE VirtualBox — универсальная бесплатная виртуальная машина
VirtualBox — очень простой, мощный и бесплатный инструмент для виртуализации, развивающийся благодаря поддержжке знаменитой корпорации ORACLE. Он распространяется бесплатно, с открытым исходным кодом. VirtualBox
позволяет устанавливать в качестве «гостевой» практически любую современную операционную систему, будь то Windows, MacOS или любой из многочисленных представителей семейства Linux.
Преимуществом VirtualBox является простой и понятный пользовательский интерфейс. Хорошо сделан перевод на русский язык. Все основные функции вынесены в виде кнопок под меню. Создание виртуальных машин выполняется с помощью пошагового мастера.
VirtualBox поддерживает работу с сетями, поэтому ваша виртуальная ОС сможет легко выйти в Интернет. Очень полезной является функция «снимков» операционной системы. Виртуальная машина записывает на винчестер «точки восстановления», к которым вы в любой момент можете откатить гостевую систему в случае возникновения ошибок или сбоев.
2.2 Windows Visual PC — виртуальная машина от Microsoft
Windows Virtual PC — виртуальная машина для работы только и исключительно с Windows. Установить на Visual PC операционную систему Linux или MacOS просто невозможно.
Visual PC позволяет запускать несколько разных копий Windows на одном компьютере. Поддерживается работа с операционными системами Microsoft разных поколений, в том числе с 64-битными.
Плюсом Visual PC является возможность задать, какая из запущенных виртуальных машин будет более приоритетной по сравнению с другими. При этом «хостовый» компьютер сможет в автоматическом режиме выделять под ее нужды большее количество ресурсов за счёт других виртуальных систем, если «гостевой» системе это необходимо.
Моноплатформенность виртуальной машины Visual PC является её главным недостатком, впрочем, если требуется тестировать только разные версии Windows, это не актуально. Некоторым недостатком можно считать менее функциональный и менее удобный чем в VirtualBox интерфейс. В остальном Visual PC вполне надёжный инструмент, позволяющий тестировать операцонные системы Microsoft.
2.3 VMware Workstation — для серьёзных задач
VMware Workstation – мощная, платная, максимально-надёжная программа для виртуализации, которая поддерживает работу с Windows и Linux. Для виртуализации MacOS, данная машина не предназначена.
Благодаря высокой надёжности и широчайшей функциональности VMware Workstation часто используется не просто для тестирования, а даже для постоянной работы виртуальных машин в качестве серверов даже для бизнес-приложений, будь то фаервол, отеляющий сеть организации от Интернет или даже сервер какой-либо базы данных.
VMware Workstation можно очень гибко настраивать, включая множество параметров сетевых подключений для работы с интернетом. Система имеет собственный виртуальный 3D-ускоритель, который позволяет получить высокое качество графики.
Интерфейс VMware Workstation достаточно грамотно организован, поэтому освоиться со всем её богатым функционалом довольно легко. В программе полностью поддерживается русский язык.
Необходимо отметить, что у VMware Workstation есть бесплатный «младший брат» — VMWare Player. В отличие от версии Workstation, плеер не умеет создавать виртуальные машины, но позволяет запускать ранее созданные. Эта программа будет полезна в случаях тестирования, когда, к примеру, разработчик какой-либо автоматизированной системы передат её на ознакомление именно в виде образа виртуальной машины. Эта практика получает всё большее распространение, поскольку избавляет пользователя от необходимости разворачивать незнакомую программу самостоятельно.
Разделение пошло от того, что система и процесс видят машину по-разному, поэтому и виртуальные машины бывают процессные и системные.
Процессная виртуальная машина - это виртуальная платформа для выполнения отдельного процесса. Она предназначена для поддержки процесса, создаётся при его активации и «умирает» после его окончания.
Системная виртуальная машина – полнофункциональная, постоянно действующая системная среда, служащая для поддержки операционной системы вместе с большим количеством её пользовательских процессов; она обеспечивает «гостевой» операционной системе доступ к виртуальным аппаратным средствам, в том числе к процессору и памяти, устройствам ввода/вывода, а иногда - и к графическому интерфейсу.
Определение 3: Гость - процесс или система, которые выполняются на виртуальной машине.
Определение 4: Хост - платформа, поддерживающая виртуальную машину.
Определение 5: Рабочая среда - программное обеспечение, реализующее процессную виртуальную машину.
Определение 6: Монитор виртуальной машины - программное обеспечение виртуализации системной виртуальной машины.
Процессные виртуальные машины создают среды ABI и API для пользовательских приложений, что позволяет в многозадачном режиме осуществлять репликацию операционной среды, эмулировать систему команд, оптимизировать код или выполнять программы на языках высокого уровня.
Системная виртуальная машина обеспечивает полнофункциональную среду, в которой могут сосуществовать операционная система и несколько процессов, относящихся к разным пользователям. С помощью них одна аппаратная платформа может поддерживать несколько гостевых операционных систем одновременно.
Примечание.Архитектура системы команд (ISA) - определяет границу между оборудованием и программным обеспечением и состоит из двух интерфейсов:
· пользовательская часть ISA содержит функции, доступные прикладной программе;
· системная часть ISA кроме пользовательских команд содержит функции, доступные только компонентам операционной системы, которые отвечают за управление оборудованием.
Двоичный интерфейс приложений (ABI) - предоставляет программе аппаратные ресурсы и услуги через пользовательскую часть ISA и интерфейс вызова системных процедур. Привилегированные машинные команды в ABI не входят. Все прикладные программы взаимодействуют с оборудованием опосредованно, обращаясь к услугам операционной системы через интерфейс вызова системных процедур. Посредством таких процедур ОС выполняет действия от имени пользовательской программы после подтверждения их аутентичности и безопасности.
Интерфейс прикладного программирования (API) - предоставляет программе аппаратные ресурсы и услуги через пользовательскую часть ISA, дополненную обращениями к библиотекам на языке высокого уровня. Все вызовы системных процедур обычно выполняются через библиотеки. Использование API позволяет путем перекомпиляции легко переносить прикладные программы на другие системы, поддерживающие тот же интерфейс прикладного программирования.
Репликация - механизм синхронизации содержимого нескольких копий объекта (например, содержимого базы данных). Это процесс, под которым понимается копирование данных из одного источника на другой (или на множество других) и наоборот. При репликации изменения, сделанные в одной копии объекта, могут быть распространены в другие копии.
При создании виртуального сервера в InfoboxCloud пользователь может установить флаг «Я буду управлять ядром ОС». Если флаг не установлен — используется виртуализация на уровне ОС (по-умолчанию). Если флаг установлен — используется аппаратная виртуализация.
В этой статье мы ответим на часто задаваемый вопрос: в чем разница в типах виртуализации InfoboxCloud и какую виртуализацию выбрать.
Виртуализация на уровне ОС
Виртуализация на уровне ОС позволяет виртуализовывать физические серверы на уровне ядра операционной системы.
Слой виртуализации ОС обеспечивает изоляцию и безопасность ресурсов между различными контейнерами. Слой виртуализации делает каждый контейнер похожим на физический сервер. Каждый контейнер обслуживает приложения в нем и рабочую нагрузку.
Основные преимущества контейнерной виртуализации
- Контейнеры выполняются на одном уровне с физическими серверами. Отсутствие виртуализованного оборудования и использование реального оборудования и драйверов позволяют получить непревзойденную производительность.
- Каждый контейнер может масштабироваться до ресурсов целого физического сервера.
- Технология виртуализации на уровне ОС позволяет добиться высочайшей плотности, среди доступных среди решений виртуализации. Возможно создание и запуск сотен контейнеров на одном обычном физическом сервере.
- Контейнеры используют единую ОС, что делает их поддержку и обновление очень простым. Приложения могут быть также развернуты в отдельном окружении.
Особенности контейнеров в InfoboxCloud
С точки зрения приложения каждый контейнер — независимая система. Независимость предоставляется уровнем виртуализации операционной системы Parallels Cloud Server. На виртуализацию тратится минимальное количество ресурсов CPU: 1–2%.
- Контейнеры выглядят как обычная Linux–система. Они включают в себя обычные стартап-скрипты. Сторонние приложения могут запускаться в контейнерах без необходимости модификации.
- Пользователь может изменять любые конфигурационные файлы и устанавливать любое дополнительное программное обеспечение в контейнеры.
- Контейнеры полностью изолированы друг от друга (файловая система, процессы, переменные sysctl) и виртуальных машин Parallels.
- Контейнеры разделяют динамические библиотеки, что значительно экономит память.
- Процессы в контейнерах планируются для исполнения на всех доступных CPU. Контейнеры не ограничены одним CPU и могут использовать всю мощь CPU хоста.
После создания контейнера шаблон операционной системы, из которого происходило создание, больше не нужен. Это значит, что даже если мы обьявим какую-то ОС устаревшей и удалим ее из облака — ваши созданные серверы продолжат работать.
Контейнеры используют нативные журналируемые квоты диска и в случае краха физического сервера не требуется пересчет квот.
Аппаратная виртуализация
В аппаратной виртуализации базовый слой — гипервизор. Этот слой загружается на сервере и обеспечивает взаимодействие между аппаратным обеспечением сервера и виртуальными машинами. Чтобы предоставить ресурсы виртуальным машинам, обеспечивается их виртуализация на сервере. Виртуальные машины запускают свою собственную копию операционной системы и приложений на виртуализированном оборудовании.
Основные преимущества аппаратной виртуализации
- Возможность создания множества виртуальных машин с различными операционными системами (включая Windows). Нет зависимости от единого ядра ОС. Пользователь может устанавливать собственные патчи на ядро при необходимости получения расширенной функциональности виртуального сервера.
- Виртуальные машины выглядят как обычный компьютер. Они содержат собственное виртуальное оборудование и программное обеспечение, которое может запускаться в виртуальных машинах без необходимости модификации.
- Виртуальные машины полностью изолированы друг от друга и от ОС сервера, где происходит запуск виртуальных машин (изоляция на уровне файловой системы, процессов, переменных sysctl).
- Благодаря использованию технологий виртуализации Intel и AMD производительность виртуальных серверов очень высока и приближена к производительности реального оборудования.
Созданный виртуальный сервер, как и в случае с виртуализацией на уровне ОС, не зависит от наличия шаблона ОС в облаке. В случае обновления или удаления шаблона изменений на виртуальном сервере не произойдет.
Какую виртуализацию выбрать?
Если вы никогда не думали над этим — используйте контейнерную виртуализацию. Она отлично подходит для большинства задач на виртуальном Linux–сервере. Вы получите максимально быстрое время создания сервера и перезагрузки (что очень важно при миграции сервера). Также при использовании виртуализации на уровне ОС доступно автомасштабирование оперативной памяти.
Если вам необходима Windows, установка расширений ядра ОС (например для VPN), полный контроль над ядром ОС, возможность использования Docker, ручной апгрейд самой ОС — используйте аппаратную виртуализацию.
Преимущества виртуальных машин перед реальным компьютером, очень просты. Мы привели несколько простейших аргументов:
- Возможность создания «контрольной точки» с созданием текущего состояния системы одним нажатием мыши. В случае необходимости, вы можете вернуть исходное состояние гостевой операционной системы.
- Нет необходимости перезагружать компьютер каждый раз, когда вы захотите использовать другую операционную систему. Что, безусловно, очень удобно и позволяет значительно экономить время.
- Возможность установки неограниченного количества виртуальных машин на одном компьютере.
Наряду со всеми описанными преимуществами, любая виртуальная машина имеет и ряд недостатков. Рассмотрим наиболее значимые из них:
- Для плодотворной работы нескольких операционных систем одновременно необходимы достаточные аппаратные ресурсы.
- Медленная графика. Виртуальная машина не имеет возможности использования функций трехмерной графики с процессора, поэтому программе приходится симулировать работу обычного видеоадаптера. А вследствие этого большинство современных игр придется устанавливать на реальном компьютере.
- Скорость работы. Виртуальная операционная система работает несколько медленнее, чем хостовая. Но техника не стоит на месте, и в настоящее время скорость работы гостевой операционной системы незначительно отличается от скорости работы хостовой системы. Вскоре эти показатели и вовсе станут равны.
Как вы видите, преимуществ у виртуальной машины значительно больше, чем недостатков. Да и существующие недостатки разрешимы при определенных условиях. Именно поэтому виртуальные машины с каждым годом получают все большее распространение среди пользователей ПК.
Далее мы проведем обзор виртуальных машин: Virtual PC, VirtualBox, VM-Ware, Parallels. Рассмотрим особенности установки и настройки каждой из них.
Человек, работая за компьютером, постоянно запускает разные программы. У программистов количество приложений, необходимых для работы, может исчисляться десятками. Более того, иногда приходится запускать программы, которые работают только в другой операционной системе, отличной от той, в которой работает программист.
В качестве примера можно привести проекты на Хекслете, где в рамках задания студенту нужно записать, что происходит в терминале. Эта задача становится трудновыполнимой, если ваша основная система — Windows. Программа, которая записывает терминал — asciinema, работает только в Linux. Как можно решить эту проблему? И почему нельзя просто взять и запустить программу из одной ОС в другой операционной системе?
Начнём с того, что программы, которые мы пишем, не взаимодействуют напрямую с железом. Например, когда мы вводим символы на клавиатуре, их сначала обрабатывает специальный драйвер, встроенный в операционную систему, и только потом они попадают в поле ввода и отображаются. В данном случае обработка настолько быстрая, что мы даже не задумываемся о ней. То же самое в отображении: мы запускаем множество разных процессов, просто двигая курсор мыши. Одна из главных задач операционных систем — предоставить возможность программам взаимодействовать с железом компьютера, и в разных операционных системах для этого используются разные функции.
Операционные системы — одни из самых сложных программ, если не самые сложные. Они разрабатывались разными людьми и в разное время. Логично, что подходы к работе с устройствами в них кардинально отличаются. Это одна из основных причин, почему нельзя просто скопировать программу в другую операционную систему и запустить её там. В качестве примера, не связанного с железом, можно сказать, что графические оболочки разных ОС тоже полностью отличаются. Например, в Linux нет понятий «Кнопка пуск» или «трей». В некоторых реализациях отсутствуют даже привычные нам всем окна.
Но всё же у разработчиков часто возникает потребность запуска программ, работающих только в одной ОС, и эта проблема имеет решение.
Самый очевидный способ — купить второй компьютер, но это дорогое удовольствие. Второй вариант — поставить Linux рядом со своей основной операционной системой. Такая установка может завершиться неудачей, так как операционные системы, как правило, не ожидают, что рядом с ними будет работать другая похожая программа. Но если всё получилось, во время старта компьютера вы сможете выбрать ОС для загрузки. Существует также и третий путь — виртуализация, о ней и поговорим.
Виртуализация позволяет запускать в текущей операционной системе программы, созданные для другой операционной системы. Это возможно благодаря виртуальной машине, которая работает внутри текущей операционной системы. На виртуальную машину устанавливается любая нужная в данный момент ОС. Стоит сказать, что виртуальных машин может быть много, каждая из них при этом выглядит как отдельный компьютер со своими характеристиками.
Виртуализация имеет очень богатую историю, а первая операционная система с её поддержкой появилась еще в 1968 году. Тогда же программисты поняли, что если можно запустить одну виртуальную машину, значит можно запустить и вторую, и третью. Возникла потребность управлять множеством таких машин, и появился первый гипервизор. По сути, это операционная система для управления виртуальными машинами.
Например, у нас есть две виртуальные машины, которые мы хотим использовать одновременно. Каждая из них должна иметь свой виртуальный жесткий диск и оперативную память. Логично, что кто-то должен следить за тем, чтобы одна из операционных систем случайно не начала записывать данные в области памяти, которые использует другая виртуальная машина. Этим как раз и занимается гипервизор: он изолирует и разделяет ресурсы виртуальных машин.
Операционная система (или компьютер), внутри которой запускается виртуальная машина, называется хост-системой (host), а ОС, работающую в виртуальном окружении, называют гостевой (guest).
Гипервизоры, по большому счёту, делятся на два типа: которые работают внутри операционной системы хоста, и для запуска которых хостовая ОС не нужна. Последние умеют работать прямо на голом железе. На настольных компьютерах наибольшее распространение получил первый тип.
В качестве примеров гипервизоров первого типа можно привести: VMware Workstation, QEMU и VirtualBox. А ко второму типу относится, например, автономный гипервизор VMware ESX.
1.3.3. Типы виртуализаций
1.3.2. Процессные и системные виртуальные машины
Понятия пошли от того, что система и процесс видят машину по-разному, поэтому и виртуальные машины бывают процессные и системные.
Процессная виртуальная машина — это виртуальная платформа для выполнения отдельного процесса. Она предназначена для поддержки процесса, создаётся при его активации и «умирает» после его окончания. Системная виртуальная машина – полнофункциональная, постоянно действующая системная среда, служащая для поддержки операционной системы вместе с большим количеством её пользовательских процессов; она обеспечивает «гостевой» операционной системе доступ к виртуальным аппаратным средствам, в том числе к процессору и памяти, устройствам ввода/вывода, а иногда — и к графическому интерфейсу.
Процесс или система, которые выполняются на виртуальной машине, называются гостем, платформа, поддерживающая виртуальную машину, — хостом. Программное обеспечение, реализующее процессную виртуальную машину, называют рабочей средой, а программное обеспечение виртуализации системной виртуальной машины – монитором виртуальной машины.
Процессные виртуальные машины создают среды ABI и API для пользовательских приложений, что позволяет в многозадачном режиме осуществлять репликацию операционной среды, эмулировать систему команд, оптимизировать код или выполнять программы на языках высокого уровня.
Системная виртуальная машина обеспечивает полнофункциональную среду, в которой могут сосуществовать операционная система и несколько процессов, относящихся к разным пользователям. С помощью них одна аппаратная платформа может поддерживать несколько гостевых операционных систем одновременно.
Контейнеризация или контейнерная виртуализация
Это виртуализация на уровне операционной системы. Если аппаратная виртуализация полностью эмулирует оборудование и позволяет запускать любые ОС, внутри контейнера можно запустить только аналогичную хосту операционную систему. Преимуществом этого подхода является скорость, с которой создаётся контейнер — секунды, тогда как для запуска виртуальной машины счёт времени идёт на минуты. Так происходит потому, что полноценной виртуальной машине нужно сначала инициализировать всё оборудование, запустить эмуляцию и только после этого начать загружать операционную систему. При контейнеризации ОС по факту уже работает. Остаётся только создать замкнутую среду — тот самый контейнер, в котором будет запущен ещё один экземпляр операционной системы.
Контейнер представляет собой всего лишь один процесс, внутри которого выполняется операционная система. Она существует в своём собственном мире, со своей сетью, своим диском, своей файловой системой и так далее. Эту виртуализацию применяют на уровне сервисов, составляющих части программного продукта. Наиболее известные проекты: OpenVZ, Docker, LXC.Так как Docker очень широко применятся в разработке, у нас есть подробный гайд о том, что это такое, как с ним работать и какие он даёт преимущества — Как и для чего использовать Docker.
В начале 2000-x компания VMWare быстро захватила корпоративный рынок, выпустив гипервизор ESX Server и создав тем самым конкурентную среду. Начиная с этого момента технологии виртуализации стали стремительно развиваться. Огромное количество предприятий начали использовать виртуализацию для решения разных задач.
1.3. Архитектура виртуальных машин
Виртуализация один из важных инструментов разработки компьютерных систем, а сами виртуальные машины используются в самых разных областях.
Виртуальные машины разрабатываются большим количеством специалистов, преследующих самые разные цели, и в этой области существует не так уж много общепринятых концепций. Поэтому лучше всего будет рассмотреть понятие виртуализации и всё разнообразие архитектур виртуальных машин в единой перспективе.
Быстрое создание среды для разработки
Современные веб-проекты требуют установки и настройки большого количества инструментария, библиотек и их зависимостей, серверов баз данных и так далее. Контейнеризация позволяет свести множество действий к запуску пары команд в терминале.
1.2.2. Недостатки виртуальных машин
- Потребность в наличии достаточных аппаратных ресурсов для функционирования нескольких операционных систем одновременно.
- Операционная система работает несколько медленнее в виртуальной машине, нежели на «голом железе». Однако, в последнее время показатели производительности гостевых систем значительно приблизились к показателям физических ОС (в пределах одних и тех же ресурсов), и вскоре, за счет улучшения технологий реализации виртуальных машин, производительность гостевых систем практически будет равна реальным.
- Существуют методы определения того, что программа запущена в виртуальной машине (в большинстве случаев, производители систем виртуализации сами предоставляют такую возможность). Вирусописатели и распространители вредоносного программного обеспечения, конечно же, в курсе этих методов и в последнее время включают в свои программы функции обнаружения факта запуска в виртуальной машине, при этом никакого ущерба вредоносное ПО гостевой системе не причиняет.
- Различные платформы виртуализации пока не поддерживают полную виртуализацию всего аппаратного обеспечения и интерфейсов. В последнее время количество поддерживаемого аппаратного обеспечения стремительно растет у всех производителей платформ виртуализации. Помимо основных устройств компьютера, уже поддерживаются сетевые адаптеры, аудиоконтроллеры, интерфейс USB 2.0, котроллеры портов COM и LPT и приводы CD-ROM. Но хуже всего обстоят дела с виртуализацией видеоадаптеров и поддержкой функций аппаратного ускорения трехмерной графики.
Все недостатки в принципе можно решить, да и преимущества виртуальных машин перевешивают их недостатки. Именно поэтому виртуализация сейчас продвигается семимильными шагами вперёд. А пользователи находят всё больше и больше причин их использовать.
Аппаратная виртуализация
Для её работы требуется поддержка со стороны процессора. Наибольшее распространение получили технологии Intel-VT и AMD-V, в настоящее время большинство процессоров для домашних компьютеров поддерживают одну из них. Аппаратная виртуализация не получила бы такого широкого распространения, если бы не преимущества, которые обеспечивает данный подход. Эти преимущества описаны ниже.
Первое преимущество: при аппаратной виртуализации виртуальные машины управляются гипервизором напрямую, в отличие от программной виртуализации, где, например, решение о выделении памяти для виртуальной машины сначала принимает операционная система хоста, и только после подтверждения гипервизор может предоставить ей ресурсы. Благодаря этому производительность гостевых ОС значительно повышается и достигает эффективности, сравнимой с реальным компьютером с такой же конфигурацией.
Второе преимущество: так как конфигурация виртуальной машины полностью эмулируется гипервизором, установщик операционной системы не нужно модифицировать. Выбираем нужные устройства в настройках, подключаем любой стандартный установочный образ нужной операционной системы и запускаем виртуальную машину. Более того, если у вас ещё сохранился процессор с 32-битной архитектурой, с помощью аппаратной виртуализации можно настроить виртуальную машину с 64-битным процессором и установить соответствующую ОС. Независимость от платформы хоста открывает поистине бесконечные возможности для экспериментов.
1.2.1. Преимущества виртуальных машин
- Приведу самый просто пример. Нынче, как мы знаем, вышли новые операционные системы. Windows Vista и Windows 7. И как многие из вас убедились, некоторые приложения, в частности игры, на них не работают. Так в чём проблема? Когда можно установить виртуальную машину с, допустим, операционной системой Windows XP. И всё прекрасно будет работать.
- Второй пункт можно отнести к злобным хакерам или просто к компьютерным хулиганам. Имеется в виду, что на виртуальной машине вы можете спокойно написать вирус или вредоносное программное обеспечение, которое сможет повредить вам лишь гостевую операционную систему виртуальной машины.
- Третий пункт можно было отнести ко второму. А именно то, что на виртуальную машину вы можете ставить любое ПО, не опасаясь чего-либо. Вы можете экспериментировать с различными настройками и прочее.
- Ну и одно из самых главных это то, что вы можете легко изучать новые операционные системы, не стирая свою старую.
Это конечно далеко не все преимущества виртуальных машин. Каждый пользователь может сам придумать, для чего ему нужна виртуальная машина.
Перед возможностью установки нескольких хостовых операционных систем на один компьютер с их раздельной загрузкой, виртуальные машины имеют следующие неоспоримые преимущества:
- Возможность работать одновременно в нескольких системах, осуществлять сетевое взаимодействие между ними.
- Возможность сделать «снимок» текущего состояния системы и содержимого дисков одним кликом мыши, а затем в течение очень короткого промежутка времени вернуться в исходное состояние.
- Простота создания резервной копии операционной системы (не надо создавать никаких образов диска, всего лишь требуется скопировать папку с файлами виртуальной машины).
- Возможность иметь на одном компьютере неограниченное число виртуальных машин с совершенно разными операционными системами и их состояниями.
- Отсутствие необходимости перезагрузки для переключения в другую операционную систему.
Программная виртуализация
Этот вид также подразделяется на несколько подвидов. В статье мы не будем подробно рассматривать каждый из них, так как в настоящее время программная виртуализация используется не так широко. Виртуальные машины на её основе значительно менее производительные по сравнению с другими видами виртуализации. Если интересно с чем это связано, подробнее можно почитать в Википедии.
Какие существуют виды виртуализации
Виртуализацию делят на три вида в зависимости от подхода к её реализации.
Рассмотрим основные типы виртуализации различных компонент ИТ — инфраструктуры.
- Виртуализация операционной системы.Является наиболее распространенной в данный момент формой виртуализации. Виртуальная операционная система (виртуальная машина) представляет собой, как правило, совмещение нескольких операционных систем, функционирующих на одной аппаратной основе. Каждая из виртуальных машин управляется отдельно при помощи VMM (Virtual Machine Manager). Лидерами в области поставок решений для виртуализации информационных систем являются Microsoft, AMD, Intel и VMware.
- Виртуализация серверов приложений.Под данным процессом виртуализации понимают процесс интеллектуальной балансировки нагрузки. Балансировщик нагрузки управляет несколькими веб — серверами и приложениями, как единой системой, пользователь, при этом, «видит» только один сервер, который, фактически, предоставляет функционал нескольких серверов.
- Виртуализация приложений.Под виртуализацией приложений следует понимать использование программных решений в рамках изолированной виртуальной среды (более подробно виртуализация приложений будет рассмотрена в последующих лекциях).
- Виртуализация сети.Представляет собой объединение аппаратных и программных ресурсов в единую виртуальную сеть. Выделяют внутреннюю виртуализацию сети — создающую виртуальную сеть между виртуальными машинами одной системы, и внешнюю — объединяющую несколько сетей в одну виртуальную.
- Виртуализация аппаратного обеспечения.В данном случае виртуализация заключается в разбиении компонент аппаратного обеспечения на сегменты, управляемые отдельно друг от друга. В некоторых случаях, виртуализация операционных систем невозможна без виртуализации аппаратного обеспечения.
- Виртуализация систем хранения.В свою очередь делится на два типа: виртуализацию блоков и виртуализацию файлов.Виртуализация файлов, как правило используется в системах хранения, при этом ведутся записи о том, какие файлы и каталоги находятся на определенных носителях. Виртуализация файлов отделяет статичный указатель нахождения виртуального файла (C:\, к примеру) от его физического местоположения. Т.е. при запросе пользователем файлаC:\file.doc решение виртуализации файлов отправит запрос к месту реального размещения файла.Виртуализация блоков. Используется в сетях распределенного хранения данных. Сервера — хранилища данных используют RAID- технологию. iSCSI интерфейс также использует блочную виртуализацию, позволяя операционной системе распределить виртуальное блочное устройство. Более подробную информацию о виртуализации систем хранения см. в п.№4 списка источников для самостоятельного изучения.
- Виртуализация сервисов.По своей сути, виртуализация сервисов является объединением всех вышеуказанных типов виртуализации. Решение виртуализации сервисов позволяет работать с приложением вне зависимости от физического расположения его частей, объединяя и управляя их взаимодействием.
Приведенная выше типология рассматривает виртуализацию, в зависимости от части ИТ — инфраструктуры, в которой она применяется. Подходы к созданию интерфейсов между виртуальными машинами и системами виртуализации ресурсов также можно разделить на следующие типы:
- Полная виртуализация — технология, которая обеспечивает полную симуляцию базового оборудования, гостевая операционная система остается в нетронутом виде.
- Аппаратная виртуализация — технология, позволяющая запускать на одном компьютере (хосте) несколько экземпляров операционных систем (гостевых операционных систем). При этом гостевые ОС независимы друг от друга и от аппаратной платформы.Аппаратная виртуализация представляет собой набор инструкций, облегчающих выполнение операций на аппаратном уровне, которое до этого могли выполняться только программно, при этом затрачиваются дополнительные программные ресурсы.
- Паравиртуализация — техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для этих целей в ядро ОС вносят незначительные изменения. Для взаимодействия с гостевой операционной системой используется API — интерфейс.
1.3.1. Абстракция и виртуализация
Компьютерные системы разрабатываются по определенной иерархии и имеют хорошо определенные интерфейсы, из-за чего они и продолжают развиваться. Использование таких интерфейсов облегчает независимую разработку аппаратных и программных подсистем силами разных групп специалистов. Абстракции скрывают детали реализации нижнего уровня, уменьшая сложность процесса проектирования.
На рис. 1 (а) приведен пример абстракции в применении к дисковой памяти. Операционная система абстрагируется от тонкостей адресации на жестком диске, от его секторов и дорожек, чтобы для прикладной программы диск выглядел как набор файлов переменного размера. Опираясь на эту абстракцию, «прикладные» программисты могут создавать файлы, записывать и читать данные, не зная устройства и физической организации жесткого диска.
Концепция архитектуры системы команд компьютера (instruction set architecture, ISA) наглядно иллюстрирует преимущества хорошо определенных интерфейсов. Они позволяют разрабатывать взаимодействующие компьютерные подсистемы не только в разных организациях, но и в разные периоды, иногда разделенные годами. Например, Intel и AMD создают микропроцессоры с системой команд IA-32 (x86), в то время как разработчики Microsoft пишут программное обеспечение, которое компилируется в эту систему команд. Поскольку обе стороны соблюдают спецификацию ISA, можно ожидать, что программное обеспечение будет правильно выполняться любым ПК на базе микропроцессора с архитектурой IA-32.
К сожалению, хорошо определенные интерфейсы имеют и недостатки. Подсистемы и компоненты, разработанные по спецификациям разных интерфейсов, не способны взаимодействовать друг с другом. Например, приложения, распространяемые в двоичных кодах, привязаны к определенной ISA и зависят от конкретного интерфейса к операционной системе. Несовместимость интерфейсов может стать сдерживающим фактором, особенно в мире компьютерных сетей, в котором свободное перемещение программ столь же необходимо, как и перемещение данных.
Виртуализация позволяет обойти эту несовместимость. Виртуализация системы или компонента (например, процессора, памяти или устройства ввода/вывода) на конкретном уровне абстракции отображает его интерфейс и видимые ресурсы на интерфейс и ресурсы реальной системы. Следовательно, реальная система выступает в роли другой, виртуальной системы или даже нескольких виртуальных систем.
В отличие от абстракции, виртуализация не всегда нацелена на упрощение или сокрытие деталей. В примере на рис. 1(б) виртуализация позволяет преобразовать один большой диск в два меньших виртуальных диска, каждый из которых имеет собственные секторы и дорожки. При отображении виртуальных дисков на реальный программные средства виртуализации используют абстракцию файла как промежуточный шаг. Операция записи на виртуальный диск преобразуется в операцию записи в файл (и, следовательно, в операцию записи на реальный диск). Отметим, что в данном случае никакого абстрагирования не происходит — уровень детализации интерфейса виртуального диска (адресация секторов и дорожек) ничем не отличается от уровня детализации реального диска.
Читайте также: