Saturday, January 16
Shadow

Какие бывают виртуальные машины

Виртуальная машина (virtual machine, VM) — это программная имитация компьютера, установленная на другой компьютер. К примеру, у вас есть компьютер с операционной системой Windows, и вы устанавливаете на него специальную программу, которая имитирует другой компьютер, например под Linux.

Зачем нужны виртуальные машины

Создание облачных рабочих мест и серверов. Вы собираете сверхмощный сервер, с большими объемами памяти, а потом устанавливаете на него виртуальные машины. Эти VM могут работать как компьютеры, например для удаленных сотрудников, а могут — как серверы, например для создания корпоративной сети предприятия.

Виртуальные машины для этой цели часто используют компании, чтобы обеспечить филиалы надежными рабочими местами и серверами. Также именно с такими виртуальными машинами работают поставщики облачных услуг, которые продают компаниям виртуальные серверы.

Безопасность. Виртуальная машина — это закрытое пространство внутри вашего компьютера. Если вы выйдете в интернет через виртуальную машину и поймаете вирус, этот вирус не сможет получить доступ к вашему основному компьютеру и данным. То же самое с потенциально опасными программами — их можно запускать на виртуальной машине, и если внутри окажется вирус, просто удалить всю машину вместе с вредоносной программой.

Поддержка программ на некоторых языках программирования. Чтобы ПО, написанное на некоторых языках программирования работало, их код необходимо выполнять на специальной виртуальной машине. Для распространенных языков типа Java такие машины обычно предустановлены на компьютерах.

Дистрибуция ПО. Некоторые программы, особенно серверные, сложно запускать — нужно прописывать много настроек, создавать пользователей, задавать им права, убедиться в совместимости с железом. Поэтому часто серверные программы распространяют в виде готовых виртуальных машин, в которых все уже настроено и готово к работе. Покупатель ПО просто разворачивает виртуальную машину и пользуется в ней нужной программой.

Какие бывают виртуальные машины

Все VM делятся на три группы в зависимости от степени виртуализации.

Полная. Виртуальная машина полностью изображает компьютер. Именно такой технологией пользуются в целях безопасности — у вируса нет шансов проникнуть в основную систему ни по какому каналу. Еще такие виртуальные машины любят тестировщики — с их помощью они могут проверить работу программы на совершенно разных компьютерах с любыми операционными системами.

Такая виртуализация бесполезна для облачных технологий, так как сильно ограничивает вычислительные мощности.

С доступом к железу. В этом случае пользователи виртуальной операционной системы обращаются напрямую к реальному железу. Именно таким методом пользуются популярные облачные решения, например Virtualbox. Виртуализация по такой технологии позволяет добиться более высокой скорости — запросы виртуальных машин выполняются на реальном железе напрямую, без медленной и сложной эмуляции.

На уровне операционной системы. Это самый популярный способ, при котором прямо в ядре основной операционной системы выделяется несколько закрытых пространств. В эти пространства система «впускает» на выполнение другие программы. То есть по сути программы выполняет не виртуальная, а реальная ОС, но это происходит в ограниченной, изолированной виртуальной среде. Владелец главной системы может управлять виртуальными пространствами — выделять им разные ресурсы, разграничивать доступ к железу, блокировать и контролировать процессы.

Такая виртуализация наиболее производительная, так как не требует эмуляции или контроля за доступом к железу — все решает родительская операционная система.

По этой схеме работает контейнеризация приложений, например такой инструмент как Docker, который позволяет быстро собирать и копировать ПО. 

Какую виртуальную машину выбрать

Универсального идеального решения не существует. Если вам нужно проверять опасные программы и обеспечить максимальную безопасность, подойдет только полная виртуализация. Если нужно тестировать ПО на разных операционных системах и конфигурациях компьютера, тоже потребуется полная виртуализация. А вот для разработки ПО не обойтись без контейнеров, и значит, без виртуализации на уровне операционной системы.