Итак, что же такое виртуальная машина? Виртуальная машина (ВМ) — это программная вычислительная среда, эмулирующая аппаратные компоненты для работы операционной системы и приложений. Представьте себе компьютер внутри другого компьютера.
Физический компьютер, предоставляющий свои ресурсы, называют хостом (или хост-машиной). На каждой ВМ работает гостевая операционная система, что позволяет, например, запускать Windows и Linux одновременно на одном ПК.
Как устроена виртуализация
В основе виртуализации лежит гипервизор — программное обеспечение, которое создает виртуальные машины, управляет ими и контролирует доступ к физическому оборудованию. Несколько ВМ могут делить между собой мощность процессора, оперативную память, накопители и сетевые интерфейсы.
Гипервизор 1-го типа (автономный, или «bare-metal») работает непосредственно на физическом оборудовании. Гипервизор 2-го типа (хостовый) запускается поверх основной операционной системы. Примерами первого типа служат VMware ESXi и Microsoft Hyper-V, а второго — Oracle VirtualBox. В свою очередь, технология KVM (Kernel-based Virtual Machine) превращает само ядро Linux в полноценный гипервизор.
При аппаратной виртуализации специальные функции процессора помогают выполнять команды и изолировать гостевые системы. Виртуализация позволяет выполнять инструкции гостевой ОС напрямую на совместимом процессоре. В отличие от нее, эмуляция способна имитировать совершенно другую процессорную архитектуру за счет интерпретации или трансляции команд.
Настройка и сохранение ВМ
Конфигурация ВМ определяет количество виртуальных ядер процессора, объем выделенной оперативной памяти, виртуальный жесткий диск и сетевой адаптер. Для гостевой системы файлы дисков на физическом накопителе выглядят как настоящие жесткие диски. Перед установкой ОС важно свериться с системными требованиями: производительность напрямую зависит от выделенных ресурсов, накладных расходов гипервизора и нагрузки от других запущенных задач.
Вы также можете развернуть готовый образ виртуальной машины, уже содержащий содержимое диска. Клонирование позволяет создать копию ВМ из существующей конфигурации и дисков. А моментальный снимок (снапшот) фиксирует состояние диска в конкретный момент времени и может сохранять состояние оперативной памяти и устройств. Не стоит путать снапшот с полноценной резервной копией: его работа часто зависит от исходных файлов диска.
Зачем нужна виртуальная машина?
Виртуальные машины создают изолированную среду («песочницу») для тестирования программ и запуска устаревших приложений, требующих другой ОС. Бизнес применяет консолидацию серверов, чтобы перенести множество задач на меньшее число физических серверов, а облачные провайдеры сдают мощности ВМ в аренду. Изоляция защищает процессы одной ВМ от влияния соседей. Тем не менее безопасность виртуальных машин требует пристального внимания: уязвимости или ошибки в настройках могут нарушить эти границы. Регулярно обновляйте гипервизор и гостевые системы, ограничивайте права доступа и помните, что ни одна «песочница» не гарантирует абсолютной защиты от побега.
Виртуальные машины против контейнеров
Главное различие между виртуальными машинами и контейнерами кроется в ядре операционной системы. Системная виртуальная машина запускает собственное гостевое ядро. Контейнеры же обычно используют ядро хост-системы совместно, поэтому контейнеры Docker требуют значительно меньше ресурсов, чем полноценные ВМ. При этом на настольных ПК средой для запуска таких контейнеров нередко сама выступает виртуальная машина.
У термина «ВМ» есть и другое значение. Процессная (или прикладная) виртуальная машина, например Java Virtual Machine (JVM), предоставляет среду выполнения для отдельных программ, а не эмулирует полноценную операционную систему.
Этот материал подготовлен с использованием технологий ИИ, после чего прошел фактчекинг и редактуру научными редакторами HowStuffWorks.