Оглавление
Если вы работаете в сфере программного обеспечения или рядом с ней, вы наверняка слышали о виртуальных машинах. Если нет, вам может быть интересно, что это такое и для чего они используются.
Как инженер-программист, я ежедневно использую виртуальные машины. Это мощные инструменты для разработки программного обеспечения, но у них есть и другие применения. Известные также как виртуальные машины, многие предприятия используют их из-за их гибкости, надежности и экономичности; они также предотвращают катастрофы, связанные с запущенным тестированием программного обеспечения.
Давайте рассмотрим, что такое виртуальные машины и для чего они используются.
Что такое виртуальная машина?
Виртуальная машина - это экземпляр операционной системы (ОС), такой как Windows, Mac OS или Linux, работающий в рамках основной ОС компьютера.
Обычно она запускается в окне приложения на рабочем столе. Виртуальная машина обладает полной функциональностью и действует как отдельный компьютер или машина. По сути, виртуальная машина - это виртуальный компьютер, работающий внутри другого компьютера, называемого хост-машиной.
Изображение 1: Виртуальная машина, запущенная на ноутбуке.
Виртуальная машина не имеет аппаратного обеспечения (памяти, жесткого диска, клавиатуры или монитора). Она использует имитацию аппаратного обеспечения хост-машины. Благодаря этому на одной хост-машине может быть запущено несколько виртуальных машин, также называемых "гостями".
Изображение 2: Хост-машина, на которой работает несколько ВМ.
На хосте можно запускать несколько виртуальных машин с различными операционными системами, включая Linux, Mac OS и Windows. Эта возможность зависит от программного обеспечения, называемого гипервизором (см. изображение 1 выше). Гипервизор работает на хост-машине и позволяет создавать, настраивать, запускать и управлять виртуальными машинами.
Гипервизор выделяет дисковое пространство, планирует время обработки и управляет использованием памяти для каждой ВМ. Именно этим занимаются такие приложения, как Oracle VirtualBox, VMware, Parallels, Xen, Microsoft Hyper-V и многие другие: они являются гипервизорами.
Гипервизор может работать на ноутбуке, ПК или сервере. Он делает виртуальные машины доступными для локального компьютера или пользователей, распределенных по сети.
Для разных типов виртуальных машин и сред требуются разные типы гипервизоров. Давайте рассмотрим некоторые из них.
Типы виртуальных машин
Виртуальные машины системы
Системные виртуальные машины, иногда называемые полной виртуализацией, запускаются гипервизором и обеспечивают функциональность реальной компьютерной системы. Они используют родную операционную систему хоста для управления и совместного использования системных ресурсов.
Системные виртуальные машины часто требуют мощного хоста с быстрым или несколькими процессорами, большим объемом памяти и дискового пространства. Некоторые виртуальные машины, работающие на персональных или портативных компьютерах, могут не требовать вычислительной мощности, которая нужна большим корпоративным виртуальным серверам; однако они будут работать медленно, если хост-система не соответствует требованиям.
Обработка виртуальных машин
Виртуальные машины процессов значительно отличаются от SVM - возможно, они работают на вашей машине, а вы даже не подозреваете об этом. Они также известны как виртуальные машины приложений или управляемые среды выполнения (MRE). Эти виртуальные машины работают внутри операционной системы хоста и поддерживают приложения или системные процессы.
Зачем использовать PVM? Они выполняют услуги, не завися от конкретных операционных систем или аппаратного обеспечения. У них есть своя маленькая ОС с необходимыми ресурсами. MRE находится в отдельной среде; не имеет значения, работает ли она на Windows, Mac OS, Linux или любой другой хост-машине.
Одна из самых распространенных виртуальных машин Process Virtual Machine - та, о которой вы, вероятно, слышали и, возможно, видели, как она работает на вашем компьютере. Она используется для запуска приложений Java и называется Java Virtual Machine или сокращенно JVM.
Типы гипервизоров
Большинство виртуальных машин, с которыми мы имеем дело, используют гипервизор, поскольку они эмулируют целую компьютерную систему. Существует два различных типа гипервизоров: Bare Metal Hypervisors и Hosted Hypervisors. Давайте кратко рассмотрим оба типа.
Гипервизор на чистом металле
BMH также можно назвать "родными" гипервизорами, они работают непосредственно на аппаратном обеспечении хоста, а не в операционной системе хоста. Фактически, они занимают место операционной системы хоста, планируя и управляя использованием аппаратного обеспечения каждой виртуальной машиной, тем самым устраняя "посредника" (ОС хоста).
Нативные гипервизоры обычно используются для крупных корпоративных ВМ, которые компании используют для предоставления сотрудникам серверных ресурсов. Microsoft Azure или Amazon Web Services - это ВМ, размещенные на архитектуре такого типа. Другие примеры - KVM, Microsoft Hyper-V и VMware vSphere.
Размещенный гипервизор
Хостируемые гипервизоры работают на стандартных операционных системах - как и любые другие приложения, которые мы запускаем на наших машинах. Они используют ОС хоста для управления и распределения ресурсов. Этот тип гипервизора лучше подходит для индивидуальных пользователей, которым необходимо запускать несколько операционных систем на своих машинах.
К ним относятся такие приложения, как Oracle VirtualBox, VMware Workstations, VMware Fusion, Parallels Desktop и многие другие. Более подробную информацию о размещенных гипервизорах вы можете найти в нашей статье "Лучшее программное обеспечение для виртуальных машин".
Зачем использовать виртуальные машины?
Теперь, когда у вас есть базовое понимание того, что такое виртуальная машина, вы, вероятно, можете придумать несколько отличных применений. Вот несколько основных причин, по которым люди используют виртуальные машины.
1. экономическая эффективность
Виртуальные машины экономически эффективны во многих ситуациях. Одна из самых распространенных - в корпоративном мире. Использование физических серверов для предоставления ресурсов сотрудникам может быть очень дорогим. Оборудование стоит недешево, а его обслуживание - еще дороже.
Использование виртуальных машин в качестве корпоративных серверов стало нормой. Использование виртуальных машин у такого провайдера, как MS Azure, не требует первоначальной покупки оборудования и платы за обслуживание. Эти виртуальные машины могут быть установлены, настроены и использованы всего за копейки в час. Они также могут быть выключены, когда не используются, и не несут никаких затрат.
Использование виртуальной машины на вашем компьютере также может стать огромной экономией денег. Если вам необходимо выполнять работу в нескольких операционных системах или различных конфигурациях оборудования, вы можете
использовать несколько виртуальных машин на одном хосте - нет необходимости покупать отдельный компьютер для каждой задачи.
2. масштабируемость и гибкость
Будь то корпоративные серверы или виртуальные машины, работающие на вашем ноутбуке, виртуальные машины являются масштабируемыми. Ресурсы легко настроить в соответствии с вашими потребностями. Если вам нужно больше памяти или места на жестком диске, просто зайдите в гипервизор и перенастройте виртуальную машину на большее. Нет необходимости приобретать новое оборудование, и процесс может быть завершен быстро.
3. Быстрая настройка
Новая ВМ может быть настроена быстро. У меня были случаи, когда мне требовалось настроить новую ВМ, я звонил своему коллеге, который управляет ими, и менее чем через час они были готовы к работе.
4. аварийное восстановление
Если вы пытаетесь предотвратить потерю данных и подготовиться к аварийному восстановлению, виртуальные машины могут стать отличным инструментом. Их легко резервировать и при необходимости распределять по разным местам. Если виртуальные машины размещаются у третьей стороны, например, Microsoft или Amazon, они будут находиться за пределами офиса, что означает, что ваши данные будут в безопасности, если ваш офис сгорит.
5. легко воспроизводится
Большинство гипервизоров позволяют создавать копии, или образы, ВМ. Образы позволяют легко создавать точные копии одной и той же базовой ВМ для любой ситуации.
В среде, в которой я работаю, мы предоставляем каждому разработчику виртуальную машину для разработки и тестирования. Этот процесс позволяет нам иметь образ, настроенный со всеми необходимыми инструментами и программным обеспечением. Когда мы принимаем на работу нового разработчика, нам достаточно сделать копию этого образа, и у него уже есть все необходимое для работы.
6. идеально подходит для Dev/Test
Одним из лучших преимуществ использования виртуальных машин является то, что они представляют собой идеальный инструмент для разработки и тестирования программного обеспечения. Виртуальные машины позволяют разработчикам вести разработку на нескольких платформах и средах на одной машине. Если виртуальная машина будет повреждена или разрушена, можно быстро создать новую.
Они позволяют тестировщику иметь чистую новую среду для каждого цикла тестирования. Я работал над проектами, в которых мы устанавливали автоматические сценарии тестирования, которые создавали новую виртуальную машину, устанавливали последнюю версию программного обеспечения, запускали все необходимые тесты, а затем удаляли виртуальную машину после завершения тестов.
ВМ отлично подходят для тестирования продуктов и обзоров, подобных тем, которые мы проводим на SoftwareHow.com. Я могу устанавливать приложения в ВМ, запущенной на моей машине, и тестировать их, не загромождая основную среду.
После завершения тестирования я всегда могу удалить виртуальную машину, а затем создать новую, когда она мне понадобится. Этот процесс также позволяет мне тестировать на нескольких платформах, даже если у меня есть только машина Windows.
Заключительные слова
Как видите, виртуальные машины - это экономичный и универсальный инструмент, который можно использовать для многих приложений. Нам больше не нужно покупать, настраивать и обслуживать дорогостоящее оборудование, чтобы обеспечить доступ к серверу для тестировщиков, разработчиков и других людей. Виртуальные машины дают нам гибкость, позволяя легко и быстро создавать операционные системы, оборудование и среды, которые нам нужны - в любое время.