- Виртуальная машина это устройство
- Виды гипервизоров
- Что такое виртуальная машина?
- Где применяются виртуальные машины?
- Форматы файлов виртуальных машин
- Виртуальная машина (VM) в Vmware esxi
- Виртуальная машина (VM) в MS Hyper-V
- Виртуальная машина (VM) в xenserver
- Виртуальная машина (VM) в VMware Workstation
- Виртуальная машина (VM) в VirtualBox
- Виртуальная машина (VM) в Proxmox
- Виртуальная машина на KVM
- Как работает KVM?
- Виртуальные машины в публичных облаках
- Виртуальная машина
- Содержание
- Теория
- Применение
Виртуальная машина это устройство
Всем привет, ранее мы с вами рассмотрели, что такое виртуализаиция, и для чего она используется. Как вы уже знаете, за счет виртуализации, на хосте vmware esxi и Hyper-V запускаются виртуальные машины. Сегодня мы разберем, что из себя представляют эти виртуальные машины, какие они бывают.
Давайте для начала вспомним, какие бывают гипервизоры. Напомню гипервизор это прослойка между железом и виртуальной машиной, которая перехватывает от них задачи на обращение к железу и передает их физическому хосту.
Виды гипервизоров
Основными игроками на данном рынке, являются конечно, компания VMware с продуктом vmware esxi и MS с Hyper-V, proxmox или openstack. Раньше был XenServer, но он сдался и перестал вести конкуренцию с данными компаниями. Это виртуализация первого уровня, имеется в виду, что сами гипервизоры ставятся на голое железо, а уже поверх них виртуальные машины. Существуют еще и гипервизоры второго уровня, ее еще называют вложенная виртуализация, те которые ставятся в операционной системе в виде программы и дальше позволяют уже внутри ОС, создавать виртуальные машины, это называется еще паравиртуализация. Примерами может быть VMware Workstation или Virtual Box. На сайте виртуализации посвящено более 300 статей, советую ознакомится.
Что такое виртуальная машина?
Внутри этого набора файлов работает операционная система с сервисами. Все это добро, лежит на дисках физического хоста, внутри файловой системы гипервизора. У каждого продукта этот набор файлов разный, так же как и формат, давайте пробежимся по каждому из них.
Если обратиться к Википедии, то (Virtual Machine или VM) — это система в задачи которой входит эмулирование аппаратного обеспечения или различных платформ. Сама виртуальная платформа умеет эмулировать, как отдельные аппаратные части, так и целые компьютеры или другое оборудование, например сетевые роутеры Juniper или Cisco, которые уже давно выпускают аналоги своих физических железок в виде виртуальных эплаинсов (Виртуальных машин), которые могут работать на физических серверах с гипервизорами и не привязываться к оборудованию, благодаря миграции.
Где применяются виртуальные машины?
Область применения виртуальных машин огромна, я постараюсь вам ниже перечислить основные направления:
- Равномерное распределение ресурсов мощных серверов — Это нормальная практика, что при покупке мощного физического сервера, вы хотите использовать его по полной программе. Если вы просто поставите на него операционную систему и развернете сервис, то с большой вероятностью, сервер будет сильно недозагружен. Выходом из такой ситуации и консолидация ресурсов, это установка гипервизора, в рамках которого вы будите создавать виртуальные машины, у каждой будет своя задача, и вы сможете максимально задействовать все доступные возможности железа. Так например у меня в компании огромный штат серверов Power Edge R740, на борту которого 1,5 тб ОЗУ и два мощных серверных процессора Intel по 18 ядер, вот их виртуальные машины смогут с лихвой использовать и принести гораздо больше пользы. Плюсом такого решения является, то что виртуальные машины независимы друг от друга, и их можно обслуживать не затрагивая соседей.
- Тестирование новых операционных систем — Данное решение подойдет, для изучения новых операционных систем, так и для тестирования каких-то функций, ролей, настроек. Очень мощным плюсом в таком подходе, то что вы все делаете в рамках изолированных виртуальных машин, сломав которые вы не нанесете вреда своей инфраструктуре. Еще есть огромный бонус, это снапшоты, которые позволяю вам быстро откатываться на любое состояние виртуальной машины, удобно при тестах.
- Запуск старого и несовместимого программного обеспечения — Простой пример, у вас есть старое ПО, которое уже давно не обновляется и не поддерживается, например со стороны Windows 10, или принтер, который не имеет драйверов для той же десятки и вы не хотите покупать новое, когда работает старое. Выходом из ситуации является установка виртуальной машины с нужной версией ОС, где вы легко будите использовать нужное, устарелое ПО или оборудование, которое легко пробрасывается внутрь виртуальной машины. Кроме того, запускать устаревшее программное обеспечение таким способом намного безопаснее, поскольку оно изолировано внутри виртуальной машины.
- Разработка программного обеспечения для других платформ — Еще одно важное применение виртуальных машин — это упрощение рабочего процесса для тестирования приложений и веб-сайтов на нескольких платформах. Например, предположим, что вы разрабатываете игру, которая работает как на настольных, так и на мобильных платформах. Вы можете использовать эмуляцию для тестирования различных версий прямо на вашем компьютере. Вместо того, чтобы перемещать файлы установщика туда и обратно на телефон и другие тестовые компьютеры, вы можете просто имитировать их. Виртуализация также позволяет компилировать исполняемые файлы других типов. Даже если вы используете кросс-платформенный Фреймворк, вы можете скомпилировать только файлы APP на Mac и файлы EXE на Windows. Вместо двойной загрузки для каждой сборки виртуализация упрощает процесс. Иногда нет замены запуску приложений на реальном оборудовании, поскольку эмуляция не идеальна. Но для многих целей эмуляция — это удобный способ получить доступ к другим ОС без особых проблем.
- Безопасное обращение с потенциально вредоносным ПО — Как мы видели, одним из основных преимуществ виртуальной машины является ее изоляция от вашей основной системы. Это означает, что вы можете пойти на риск, которого обычно избегаете. Вы легко можете проверять в рамках виртуальной машины антивирус и вирусы, вредоносное ПО, методы лечения компьютера. При этом не затрагивая вашу основную систему.
Форматы файлов виртуальных машин
Ниже я опишу основные форматы самых популярных гипервизоров, которые представлены на рынке виртуализации и публичных облаков.
Виртуальная машина (VM) в Vmware esxi
У виртуальных машин vmware esxi, основной формат файлов это vmdk, в данном файле хранится по сути сам жесткий диск подключаемый к виртуальной машине. На скриншоте ниже представлены файлы реальной виртуалки, про остальные форматы советую прочитать в Описание форматов ESXI.
Виртуальная машина esxi
Виртуальная машина (VM) в MS Hyper-V
Виртуальная машина microsoft, не может к счастью, а может быть и наоборот, таким большим набором файлов. Безусловно, удобно иметь один отдельный файл с жестким диском и один с настройками BIOS и железа. У Hyper-V есть старый формат и новый. Старый это vhd, был до 2010 года в версии Hyper-V 2.0. С выходом Windows Server 2012 R2, и Hyper-V 3.0 формат файла поменяли на vhdx. В файлике xml хранятся настройки виртуальной машины.
Виртуальная машина microsoft
Виртуальная машина (VM) в xenserver
Xenserver имеет формат XVA у виртуальной машины. На скришоте приведен пример.
Виртуальная машина (VM) в VMware Workstation
VMware Workstation, так же как и Vmware esxi хранит фалы в тех же форматах vmdk. Заметьте структура строения виртуальной машины такая же. Очень удобно, но чтобы ее завести на гипервизоре ESXI, необходимо произвести конвертирование vm.
Виртуальная машина (VM) в VirtualBox
У VirtualBox естественно свой формат виртуальной машины, а именно vdi. Его так же можно переконвертировать во что вам нужно.
Виртуальная машина (VM) в Proxmox
Proxmox использует формат qcow2. Набирающий сейчас популярность, гипервизор. Так же как и VirtualBox, полностью бесплатный.
Виртуальная машина на KVM
Что такое KVM — это виртуальная машина на основе ядра (KVM) — это технология виртуализации с открытым исходным кодом, встроенная в Linux. В частности, KVM позволяет превратить Linux в гипервизор, который позволяет хост-машине запускать несколько изолированных виртуальных сред, называемых гостевыми или виртуальными машинами (ВМ).
Если у вас Linux 2.6.20 или новее, у вас есть KVM. KVM был впервые анонсирован в 2006 году, а годом позже был объединен с основной версией ядра Linux. Поскольку KVM является частью существующего кода Linux, он немедленно извлекает выгоду из каждой новой функции, исправления и усовершенствования Linux без дополнительной разработки.
Как работает KVM?
KVM превращает Linux в гипервизор типа 1 (без операционной системы). Всем гипервизорам необходимы некоторые компоненты уровня операционной системы, такие как диспетчер памяти, планировщик процессов, стек ввода/вывода, драйверы устройств, диспетчер безопасности, сетевой стек и многое другое — для запуска виртуальных машин. KVM имеет все эти компоненты, потому что это часть ядра Linux. Каждая виртуальная машина реализована как обычный процесс Linux, запланированный стандартным планировщиком Linux, с выделенным виртуальным оборудованием, таким как сетевая карта, графический адаптер, процессор (ы), память и диски.
Виртуальные машины в публичных облаках
На момент написания статьи уже почти 2021 год, пандемия показала, что многие бизнесы можно и нужно переформатировать от облачного варианта в онлайн. Многим компаниям аренда серверных мощностей в публичном облаке выходит дешевле, чем содержать свой штат физических серверов и администраторов. Логично, что на данном рынке сразу появилось огромное количество игроков, кто за умеренную плату позволит вам на их мощностях запустить нужное количество виртуальных машин. Вот список основных игроков:
- AWS — Это публичное облако компании Amazon, там по мимо создания виртуальных машин, можно еще делать кучу всего, например передать туда делегирование вашей DNS зоны. Гипервизор там называется EC2 – гипервизор Nitro.
- MS Azure — Это публичное облако компании Microsoft, там все так же под капотом будут виртуальные машины на Hyper-V.
- Google Cloud — Публичное облако гугл, так же позволяет арендовать сотни различных конфигураций виртуальных машин
- Яндекс Облако — отечественный аналог, так же решил попробовать свои силы на этом поприще
- Куча мелких сервисов по типу Даталайн, МТС, Softline, Специалист, Билайн и многие другие, они делают виртуальные машины на базе купленного VMware Cloud Platform.
Виртуальная машина
Виртуальная машина (ВМ, от англ. virtual machine ) —
- программная и/или аппаратная система, эмулирующаяаппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин)
- или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница);
- также спецификация некоторой вычислительной среды (например: «виртуальная машина языка программирования Си»).
Виртуальная машина исполняет некоторый машинно-независимый код (например, байт-код, шитый код, p-код) или машинный код реального процессора. Помимо процессора, ВМ может эмулировать работу как отдельных компонентов аппаратного обеспечения, так и целого реального компьютера (включая BIOS, оперативную память, жёсткий диск и другие периферийные устройства). В последнем случае в ВМ, как и на реальный компьютер, можно устанавливать операционные системы (например, Windows можно запускать в виртуальной машине под Linux или наоборот). На одном компьютере может функционировать несколько виртуальных машин (это может использоваться для имитации нескольких серверов на одном реальном сервере с целью оптимизации использования ресурсов сервера).
Содержание
Теория
Концепция виртуальной машины как совокупности ресурсов, которые эмулируют поведение реальной машины, появилась в Кембридже в конце 1960-х годов как расширение концепции виртуальной памяти манчестерской вычислительной машины Atlas (англ.). [1] В целом вычислительный процесс определяется в рамках этой концепции содержимым того рабочего пространства памяти, к которому он имеет доступ. При условии, что конкретная ситуация в этом рабочем пространстве соответствует ожидаемой, процесс не имеет никаких средств для определения того, является ли представленный ему ресурс действительно физическим ресурсом этого типа, или же он имитируется действиями других ресурсов, которые приводят к аналогичным изменениям содержимого рабочего пространства процесса.
Например, процесс не может определить, монопольно ли он использует процессор или же в режиме мультипрограммирования вместе с другими процессами. В виртуальной машине ни один процесс не может монопольно использовать никакой ресурс, и все системные ресурсы считаются ресурсами потенциально совместного использования. Кроме того, использование виртуальных машин обеспечивает развязку между несколькими пользователями, работающими в одной вычислительной системе, обеспечивая определённый уровень защиты данных.
Идея виртуальной машины лежит в основе целого ряда операционных систем, в частности, IBM VM/CMS (и её советского клона СВМ) и DEC VAX/VMS.
Применение
Виртуальные машины могут использоваться для:
- защиты информации и ограничения возможностей программ (см.: песочница);
- исследования производительности ПО или новой компьютерной архитектуры;
- эмуляции различных архитектур (например, эмулятор игровой приставки);
- оптимизации использования ресурсов мейнфреймов и прочих мощных компьютеров (см., например: IBM eServer);
- вредоносного кода для управления инфицированной системой: вирус PMBS, обнаруженный в 1993 году, а также руткит SubVirt, созданный в 2006 году в Microsoft Research, создавали виртуальную систему, которой ограничивался пользователь и все защитные программы (антивирусы и прочие). [2]
- моделирования информационных систем с клиент-серверной архитектурой на одной ЭВМ (эмуляция компьютерной сети с помощью нескольких виртуальных машин).
- упрощения управления кластерами — виртуальные машины могут просто мигрировать с одной физической машины на другую во время работы.
- тестирования и отладки системного программного обеспечения;