В рассказах о том, как работают эмуляторы старых приставок, и об облачных игровых сервисах мы упоминали виртуализацию и виртуальные машины. Настало время рассказать об этом подробнее.
Что такое виртуализация
Представьте, что у вас есть компьютер на Windows, но вы хотите попробовать немного поработать в Linux — познакомиться с этой операционной системой и решить, стоит ли на неё переходить. Очевидный способ — скачать систему на флешку, загрузиться с неё и установить полноценный Linux на компьютер.
Но у такого подхода есть минус, покажем на примере:
- Вы установили Linux второй системой, чтобы, если что, — можно было перезагрузиться назад в Windows.
- Загрузились в Linux.
- Увидели, что всё остановилось на командной строке, а что вводить дальше — непонятно.
- Перезагрузились в Windows, нашли решение в интернете, записали команды на листочек.
- Перезагрузились обратно в Linux, ввели команды, появился рабочий стол и графический интерфейс, но интернета нет.
- Перезагрузились в Windows, и всё по новой.
Получается, что системы на компьютере две, но толком поработать не получается ни в одной — по крайней мере, первое время.
Есть другой способ — использовать виртуальную систему и поставить Linux туда. Работает это, например, так:
- Запускаете Windows.
- Устанавливаете специальную программу, которая создаст внутри вашей системы виртуальный компьютер.
- Устанавливаете туда Linux, и он там работает как будто на отдельном компьютере.
- А для Windows такая виртуальная система будет выглядеть как одна большая программа, которую в любой момент можно свернуть, закрыть или переключиться с неё на другую программу.
Это не единственный способ виртуализации, но он самый популярный среди обычных пользователей. Удобство в том, что таких виртуальных компьютеров можно создать много и запускать одновременно (если хватает ресурсов) или по очереди. Например, внутри Windows можно создать одну виртуальную машину для тестовой установки Ubuntu, а в другой поставить Debian и софт для тестирования серверных приложений.
Гипервизор
Гипервизор — это программа, которая работает на компьютере и превращает часть реального железа в начинку для виртуального компьютера. Например, у нас есть процессор 8 ядер, 16 гигабайт оперативной памяти, SSD на 512 гигабайт и Wi-Fi.
После запуска гипервизор берёт это железо, отщипывает от него понемножку и собирает это всё в один виртуальный компьютер. При этом Wi-Fi он не делит, а берёт целиком, но пропускает через себя, как будто в компьютере стоит другой модуль беспроводной связи. На выходе у нас получается виртуальный компьютер, где стоит 4 гигабайта оперативной памяти, двухъядерный процессор и 100 гигабайт на жёстком диске.
Задача гипервизора — следить за тем, чтобы гостевая система работала только внутри выделенных ресурсов и не залезала в хост-систему. А ещё он смотрит за работоспособностью гостевой системы и сообщает, если что-то идёт не так.
Программная виртуализация
Программный гипервизор — это эмулятор, программа, которая запускается внутри операционной системы и имитирует работу виртуального компьютера. Всё, что она делает, — это выделяет немного ресурсов и следит за тем, чтобы гостевая система не вышла за их пределы. Иногда такой гипервизор позволяет обращаться к секторам диска или регистрам процессора напрямую, но так бывает не всегда.
Программные гипервизоры проще в установке и могут работать почти на любом железе. Но из-за того, что все команды и разрешения на доступ к железу проходит через них, то реальная скорость работы системы на таком гипервизоре ниже, чем на таком же, но настоящем железе.
👉 Кстати, Bluestack, эмулятор Андроида на ПК — это программный гипервизор, который превращает часть ресурсов компьютера в телефонное железо:
Аппаратная виртуализация
Аппаратный гипервизор работает иначе: вместо того чтобы запускаться на хост-системе, он сам становится такой системой. По сути, аппаратный гипервизор — это такая мини-операционная система, единственная задача которой запускать поверх себя любые другие операционные системы и давать им больше свободы в доступе к железу.
Для работы аппаратного гипервизора нужно, чтобы процессор и материнская плата поддерживали виртуализацию на аппаратном уровне. Это значит, что в них должны быть специальные команды, которые помогут гипервизору правильно распределить процессорную мощность и разграничить доступ к памяти разных систем.
Где применяются виртуальные системы
Главная задача виртуальных систем — использовать железо по максимуму. Для этого гипервизоры ставят:
- на серверы в интернете, чтобы получить виртуальные серверы, на которых можно, например, сделать свой хостинг;
- на игровые видеосерверы — так работает облачный гейминг;
- для тестирования софта — например, если нужно протестировать одну и ту же программу сразу в нескольких версиях Windows;
- на домашние компьютеры, чтобы одновременно работать в нескольких операционных системах или тестировать новые возможности систем;
- для создания безопасных «песочниц», куда можно запускать вирусы и трояны, чтобы изучить их поведение.
С чего начать
Популярные софтовые гипервизоры — VMWare Workstation, Parallels Desktop и Oracle Virtualbox. Устанавливаете любой, какой вам понравится, и разворачиваете в нём нужную операционку. Всё.
Что дальше
В следующей серии расскажем о самых популярных гипервизорах и программах виртуализации, а заодно покажем, как это можно сделать штатными средствами в разных операционных системах.