Виртуальная машина (virtual machine) — это компьютерная программа, которая имитирует другой компьютер. Этот другой компьютер — виртуальный, не существует в реальности, но ведет себя как настоящий.
У виртуального компьютера своя операционная система и даже свои вычислительные мощности. Ресурсы он «одалживает» у хоста — компьютера, на котором запущена виртуальная машина.
Любой человек может установить на свой рабочий компьютер ПО для виртуальных систем и создать виртуальную машину. Ресурсы у хоста и виртуальной системы будут разделены, и они будут работать как два отдельных устройства. А уровень разделения может задать сам пользователь.
Виртуальную машину иногда сокращают как VM или ВМ.
Что такое виртуальные машины и как они работают
Виртуальная машина работает как отдельный компьютер внутри компьютера и система внутри системы. В реальности такого устройства нет, поэтому оно — виртуальное. Но работать с ним можно как с настоящим и получать доступ через компьютер-хост.
Обычно это выглядит так: специальная программа для создания виртуальных машин открывается в отдельном окне. В этом окне — интерфейс операционной системы, которую установили на виртуальный компьютер. С ним можно работать как обычно: скачивать, создавать и удалять файлы, устанавливать программы и даже кодить. На хосте эти файлы и программы не появятся, а останутся внутри виртуальной системы.
У хоста и ВМ могут быть разные операционные системы. Скажем, на компьютере Mac можно создать виртуальную машину с Windows 10, несмотря на то что обычно Windows нельзя установить на устройства Apple.
Разделение ресурсов
Пока ВМ запущена, хост будет «жертвовать» ей часть своих ресурсов, чтобы та смогла работать, — ведь реальной аппаратуры у виртуального компьютера нет.
Например, у человека есть компьютер с 8 Гб оперативной памяти. Он может создать на нем виртуальную машину с оперативной памятью 2 Гб. Эти ресурсы виртуальный ПК «отберет» у реального, и на системе-хосте будут доступны только 6 Гб оперативной памяти. Но если закрыть виртуальную машину, мощности вернутся хосту.
Создать виртуальную машину более мощную, чем хост, невозможно. Но хостом может быть не только домашний компьютер: «виртуалку» можно запустить на удаленном сервере, а работать с ней — уже через обычный ПК. Так делают, например, при реализации некоторых веб-технологий.
Технология виртуализации
Разделение ресурсов между хостом и ВМ происходит с помощью технологии виртуализации. Это возможность современных компьютеров — они могут создавать виртуальные копии собственной аппаратуры и обращаться к ним как к настоящим. Именно это происходит, когда человек создает виртуальную машину.
Виртуализация происходит на довольно низком уровне, то есть близком к «железу». Поэтому на некоторых компьютерах ее надо включать отдельно — даже не через операционную систему, а еще раньше, при запуске компьютера и до загрузки ОС.
Созданные цифровые копии аппаратуры — это и есть то самое виртуальное «железо», на котором работает ВМ. Обычный компьютер использует реальную аппаратуру, а «гостевая» виртуальная ОС — копии.
Гипервизор
Гипервизор — это программа-контролер, которая следит за распределением ресурсов между хостом и виртуальной машиной. Он помогает выделять мощности для цифровых копий, следит за тем, чтобы всем машинам хватало ресурсов, и контролирует процессы внутри виртуальных ОС. В более широком смысле гипервизор отделяет операционную систему и абстракции внутри нее от реального «железа». Сейчас есть два основных типа таких контролеров:
- автономные — запускаются непосредственно на «железе» хоста и разделяют его с виртуальной машиной на уровне аппаратуры;
- хостовые — запускаются поверх операционной системы хоста и выделяют виртуальную машину в отдельный процесс в этой ОС.
В большинстве современных компьютеров гипервизоры — это программное обеспечение. Специализированное ПО для создания виртуальных машин обычно включает в себя гипервизор, и для каждого решения он свой.
Для чего нужны виртуальные машины
Благодаря разделению ресурсов ВМ может работать автономно от хоста. То есть если в виртуальной системе что-то сломается, это не навредит оригинальному компьютеру и его системе. Если нужно, чтобы основная система не имела доступа к каким-то данным, снова выручает виртуализация. Поэтому виртуальные машины нужны для очень разных целей.
Тестирование в безопасной среде. Виртуальная машина позволяет по-разному «ломать» программное обеспечение без вреда для основной ОС. Например, можно запустить на виртуальной Windows код, написанный изначально для Mac. Даже если он сработает неправильно и виртуальная система повредится, хосту ничего не будет угрожать.
Эмуляция среды. Можно настроить виртуальную систему под определенные параметры, чтобы проверить работу созданной программы в этих условиях. Например, сделать «слабую» ВМ, чтобы посмотреть, как новая игра будет работать на маломощных компьютерах. Или эмулировать устаревшую систему, чтобы запустить на ней какое-то специфическое ПО.
Запуск другой ОС. Очевидный пример — виртуальная машина с WIndows на компьютере с macOS, на который нельзя установить Windows обычным способом. Конечно, на обычных ПК можно поставить две системы одновременно, но тогда у них будет общая память. А если память нужно разделить, можно воспользоваться виртуализацией.
Создание виртуального сервера. Этим способом часто пользуются в интернет-технологиях. Когда интернет-хостинг выделяет клиенту сервер, это не всегда отдельная физическая машина. Намного чаще это виртуальный сервер, созданный на мощностях нескольких реальных серверов с помощью виртуализации.
Виртуальными машинами пользуются айтишники разных направлений: бэкенд-разработчики, тестировщики и другие. Но перечисленные вещи могут понадобиться не только IT-специалисту. Среди обычных пользователей виртуалками могут пользоваться люди, работающие со своеобразным ПО, которое давно не обновлялось и существует только для старых ОС. Это, например, геймеры, играющие в ретроигры.
Виртуальные машины и контейнеры: разница
Виртуализацию не стоит путать с контейнеризацией, а сами виртуальные машины — с контейнерами. Это похожие понятия: контейнеры тоже позволяют изолировать какие-то процессы от основной ОС, настраивать среду внутри себя, тестировать и запускать какое-то ПО. Но разница между технологиями есть, и серьезная.
Контейнеры работают на более высоком уровне абстракции, виртуальные машины — на низком. На практике это означает, что ВМ ближе к железу, чем контейнер. А значит, разделение между хостом и гостевой ОС глубже и они более автономны. То есть ВМ в какой-то степени безопаснее и надежнее.
Виртуальная машина имитирует компьютер целиком, с ОС и аппаратурой, а контейнер — только нужную часть. Если надо выполнить какую-то простую задачу, например одновременно запустить несколько копий приложения в разных условиях, контейнера будет достаточно. А вот чтобы полностью имитировать работу того же сервера со всеми его многочисленными процессами, понадобится виртуализация.
Виртуальные машины отнимают заметно больше ресурсов, чем контейнеры. Сложно представить множество ВМ на одном компьютере. А вот много контейнеров, работающих одновременно и автономно друг от друга, — легко. Дело в том, что виртуальные машины довольно ресурсоемкие. Контейнеры намного «легче», быстрее и компактнее. Но в некоторых ситуациях без ВМ, пусть даже тяжеловесных, никуда. Например, в системах с повышенными требованиями к безопасности.
На практике оказывается, что в некоторых ситуациях оптимальнее использовать контейнер, а в некоторых — виртуальную машину. Поэтому в IT применяют оба вида технологий.
Виды виртуальных машин
Мы уже говорили, что гипервизоры — контролеры виртуализации — могут быть автономными и хостовыми. Если говорить о виртуальных машинах в целом, тут тоже выделяют несколько типов реализации.
Виртуализация системы и виртуализация процесса. Виртуализация системы — это создание полноценной копии компьютера со своей ОС. Например, когда создается виртуальный сервер. Виртуализация процессов — запуск ВМ только для определенной программы. Тогда виртуальная машина работает как прослойка между программой и хостом. Так работает язык программирования Java: благодаря встроенной виртуализации программы на нем запускаются под любой ОС.
Аппаратная и программная виртуализация. В первом случае виртуальная машина создается на уровне железа, еще до перехода в операционную систему. Во втором — загружается поверх системы хоста как отдельный процесс.
Виртуализация накопителей и сетей. Это немножко другие виды виртуализации, чем описанные раньше. Мы затронули виртуальный сервер — пример того, как несколько физических устройств можно объединить в одно виртуальное. Но так можно делать не только с серверами. Можно виртуализировать накопители: скажем, в компьютере стоит два жестких диска, а система будет читать их как один. Или объединить несколько компьютерных сетей в одну.
Преимущества виртуальных машин
Автономность. С помощью виртуализации можно получить на одном физическом устройстве несколько виртуальных «компьютеров», работающих независимо друг от друга. На каждом из них могут быть своя среда, операционная система, набор программ и файлов, и это никак не повлияет на другие. Удобно, скажем, при менеджменте больших систем. А можно и, наоборот, собрать разрозненные мощности нескольких компьютеров в один виртуальный.
Безопасность. Виртуальные машины используют в том числе для запуска потенциально вредоносного кода. Если код сломает виртуальную машину, созданную специально под такую задачу, — он навредит только ей. Другие ОС, как хосты, так и виртуальные, не пострадают. Их файлы, настройки и установленные программы останутся целы.
Гибкость. Виртуализация позволяет более гибко работать с компьютерами. Скажем, человеку нужно протестировать свою программу на нескольких системах с разными мощностями. Ему не понадобится для этого покупать несколько новых устройств. Он может просто создать виртуальные системы с нужными настройками и проверить все в них с помощью всего одного реального компьютера.
Универсальность. Виртуальную машину можно поднять на любом компьютере. Хостом может стать и домашний ноутбук, и мощный сервер. Гостевая система тоже может быть любой: хоть популярные Windows и Linux, хоть вообще малоизвестные ОС для специфических нужд.
Разнообразие. Применять виртуальные машины можно очень по-разному: и для личных нужд, и для бизнес-задач, и для работы. В сочетании с разнообразием технологий для ВМ и доступных ОС это серьезно расширяет возможности пользователя.
Недостатки виртуальных машин
Скорость работы хоста. Виртуальная машина — большая нагрузка на основную систему. Один набор аппаратуры должен одновременно обслуживать и реальный, и виртуальный ПК. А хост к тому же отдает гостевой ОС часть своих ресурсов, и это сказывается на его производительности.
Производительность ВМ. Виртуальный ПК по определению работает медленнее, чем обычный. Его система и программы связываются с железом не напрямую, а через виртуальные копии. Информация должна пройти больше шагов, поэтому для тех же действий нужно больше времени. Каким бы мощным ни был хост, виртуальная машина будет работать медленнее основной.
Стабильность. Если на одном хосте запущено несколько виртуальных машин одновременно, это может нарушить стабильность всей системы. Причина все та же — ресурсоемкость. Вполне реальна ситуация, когда нескольким гостевым ОС не хватает ресурсов, они начинают отбирать всё больше, и это приводит к падению системы-хоста. Поэтому для масштабной виртуализации нужно мощное железо и грамотное управление ресурсами.
Плюсы и минусы по сути вытекают из одного и того же факта: ВМ — это отдельный виртуальный ПК со своей архитектурой и отдельными мощностями. Именно в этом причина и его надежности, и его тяжеловесности.
Примеры программ для виртуальных систем
Чтобы создать виртуальную машину на собственном компьютере, нужно специальное программное обеспечение. Таких решений сейчас много, некоторые из них платные, другие доступны и в бесплатной версии. У каждого из них своя реализация и особенности. Вот несколько популярных примеров.
Oracle VirtualBox. Известное ПО от компании Oracle проще, чем аналоги, зато доступно бесплатно и хорошо подходит для новичков. Можно выбирать настройки для виртуальных систем: сколько в них будет памяти, какого размера сделать виртуальный жесткий диск. При этом интерфейс довольно простой и в нем легко разобраться, а поддерживаются практически все ОС.
Parallels Desktop. Это программа, созданная специально для Apple. Она адаптирована под macOS, но в качестве виртуальных машин поддерживает и другие ОС: Windows, Linux и так далее. Ее часто используют, чтобы запускать операционные системы семейства Windows на компьютерах Mac. Кроме того, она умеет автоматически скачивать установочные файлы для разных ОС, адаптировать графику Windows-приложений под дисплеи Mac и оптимизировать скорость. Программа платная даже для персонального использования и стоит от 100 долларов.
VMWare Workstation. Более продвинутая программа, которой обычно пользуются для бизнес-целей или при работе. Она поддерживает больше технологий виртуализации, позволяет работать и с ВМ, и с контейнерами. Есть две версии программы: продвинутая стоит от 200 долларов в зависимости от наполнения, но нужна в первую очередь для коммерческого использования. Более простой версией можно пользоваться бесплатно для обучения или личных нужд.
Microsoft Hyper-V. В отличие от других программ, эту не нужно скачивать. Она встроена в операционную систему Windows 10 и позволяет создавать виртуальные машины прямо через интерфейс системы. Плюс такого подхода — виртуализация более нативная и адаптирована под особенности Windows как хоста. Запустить Hyper-V можно через консоль PowerShell.
QEMU. Бесплатная программа для виртуализации и эмуляции. У нее открытый исходный код, и она довольно быстро работает, но разобраться в ней не так легко, как в других решениях.
Как создать и настроить виртуальную ОС
Понадобится одна из программ выше, а дальше конкретные шаги зависят от выбранного ПО. Например, в VirtualBox все можно сделать через визуальный интерфейс, а для работы с QEMU понадобится консоль. Но общий порядок действий примерно такой:
- выбрать и скачать образ системы, которая будет использоваться в качестве виртуальной. Для Parallels и Hyper-V этот пункт можно пропустить, они сами умеют искать образы популярных ОС;
- открыть программу для виртуализации и начать создание новой виртуальной машины — для этого есть кнопка или команда;
- выбрать параметры виртуальной машины, например количество памяти или объем диска;
- указать образ системы, скачанный в пункте 1;
- подождать, пока виртуальная система установится и развернется.
После этого виртуальную систему можно запускать через программу для виртуализации. Программа будет показывать список установленных виртуальных машин: можно выбрать и открыть любую. Через нее же можно настроить виртуальную ОС, создать новую или удалить имеющуюся.
Виртуальная система обычно открывается в новом окне, как приложение. Чтобы выйти из виртуальной ОС, нужно закрыть это окно или выбрать вариант «Выключить» в интерфейсе самой гостевой системы.
Чтобы узнать больше о виртуализации и ее применении, запишитесь на курсы — попробуйте новые знания на практике сразу.
0 комментариев