Что такое виртуализация и для чего она нужна
У пользователей Linux или Mac иногда возникает потребность в запуске программ, работающих только в Windows, а у Windows-пользователей, особенно программистов, потребность в запуске Linux или другой версии Windows. Классический пример — игры или Photoshop.
Самый очевидный способ сделать это — купить второй компьютер, но это дорогое удовольствие. Второй вариант - поставить Windows рядом со своей основной операционной системой. Такая установка, как правило, может все сломать, но если у вас получилось, во время старта компьютера вы сможете выбрать операционную систему для загрузки. Но существует третий путь — виртуализация.
Виртуализация
Виртуализация — это создание изолированных окружений в рамках одного физического устройства (в нашем случае — компьютера). Каждое окружение при этом выглядит как отдельный компьютер со своими характеристиками, такими как доступная память, процессор и тому подобное. Такое окружение называют набором логических ресурсов или виртуальной машиной.
Виртуализация позволяет запускать операционную систему как обычную программу на вашем компьютере!
ОС, внутри которой стартует другая ОС, называется хост-системой, (host) а ОС, которая работает в виртуальном окружении — гостевой (guest).
Специальная программа (по сути тоже операционная система) — гипервизор — занимается созданием виртуальных машин и их управлением. Гипервизор обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между запущенными ОС. В зависимости от типа используемой виртуализации, гипервизор может работать как напрямую с железом без хост системы, так и через основную операционную систему, установленную на хост-машину. В первом случае используется аппаратная виртуализация, во втором — программная виртуализация. На домашних компьютерах распространен именно второй тип.
В отличие от установки двух операционных систем рядом в одну машину, виртуализация — это гораздо более безопасный метод. В любой момент можно все снести и переустановить. Вы можете создать столько виртуальных машин, сколько нужно.
Аппаратная виртуализация
Как ясно из названия, аппаратная виртуализация работает благодаря поддержке со стороны железа — процессора. В отличие от программной виртуализации, гостевые операционные системы управляются гипервизором напрямую без участия хостовой ОС.
Аппаратная виртуализация гораздо эффективнее программной, так как гипервизор, в отличие от хостовой ОС, создает очень небольшой оверхед (overhead, накладные расходы). Программная виртуализация, в свою очередь, делится на несколько подтипов, о которых подробнее можно прочитать в Википедии.
Контейнерная виртуализация
Особняком стоит так называемая контейнерная виртуализация. В отличие от предыдущих видов, она не связана с запуском ОС в изолированном окружении. При контейнерной виртуализации изоляция происходит на уровне процесса операционной системы.
На текущий момент такой вид виртуализации существует только в Linux и доступен благодаря двум возможностям ядра: cgroups и namespaces. Они позволяют запускать всего лишь один процесс так, как будто он выполняется в своем собственном мире, со своей сетью, своим диском, своей файловой системой и так далее. При таком виде виртуализации происходит запуск процесса в той же операционной системе и на том же ядре, а значит вы не можете с помощью нее в Linux запустить Windows. Эту виртуализацию применяют на уровне сервисов, составляющих части программного продукта. Наиболее известные проекты: OpenVZ, Docker, LXC.
Хостинг
Каждая виртуальная машина получит столько ресурсов, сколько вы укажете. Этим фактом особенно пользуются хостеры (компании, предоставляющие услуги веб-хостинга). Фактически на каждого пользователя создается своя собственная виртуальная машина с квотами, соответствующими выбранному тарифу (ограничения по памяти, процессору и так далее).
Кроме того, виртуализация изолирует машины друг от друга, а значит вам не придется переживать, если пользователи попытаются навредить системе или соседним пользователям. Подобная услуга обычно называется VPS (virtual private server) и в базовой комплектации стоит дешево.
Виртуальные машины позволяют эффективнее утилизировать (использовать) ресурсы железной машины. Как правило, далеко не всем пользователям нужна мощность того железа, которое стоит у хостера, да и платить за нее он не готов. А вот виртуальная машина может съедать лишь проценты от мощности железа, что позволяет на одной машине размещать десятки клиентов (а то и больше). Получается, что и пользователь доволен, и хостер заработал свои деньги.
Частые вопросы
Что делать если процессор не поддерживает виртуализацию?
Это крайне маловероятно, но даже в таком случае можно запустить виртуальную машину. Правда производительность будет очень низкой, так как по факту будет работать программная виртуализация вместо аппаратной. Лучше всё же обновить железо на более современное.
Другие гайды по теме
- Что такое Vagrant. Vagrant позволяет создавать и конфигурировать легковесные, повторяемые и переносимые окружения для разработки в виртуальных машинах.
- Как работать с Linux используя Windows. Инструкция по установке Ubuntu Linux внутри Windows с использованием различных технологий виртуализации.