Виртуальная машина для Linux (Черновик)

Виртуальная машина для Linux

Из этой статьи вы узнаете все, что необходимо знать о виртуализации в Linux. Мы начнем с истории появления виртуальных машин, после чего вкратце поговорим о технологии, делающей виртуализацию возможной и интересной. А уже потом будет обзор лучших виртуальных машин для Linux. С сегодняшнего дня, вас уже не напугать словами «Виртуальная машина» и «Контейнеры«. Вы будете это знать!

История виртуализации Linux

Виртуализация существует со времен мейнфреймов 1960-х, где работа одной программы была отделена от другой. Позднее IBM СР-40 ввел понятие гипервизора и возможность одновременного функционирования нескольких операционных систем.

Всерьез виртуализация стала применяться в середине 2000-х, когда появились 64-битные процессоры с явными функциями для более эффективного запуска гостевых ОС. Возможность виртуализации компьютеров (в теории) сделала жизнь сисадминов легче. Можно было делать моментальные снимки целых систем, припасать их резервные копии и восстанавливать не сложнее, чем файлы. Можно было тестировать критические обновления в виртуальной песочнице, солидно сокращая вероятность проблем при их развертывании в физических системах.

РЕКОМЕНДУЕМ:
Запуск приложения в отдельных виртуальных машинах с AppVM

Несколько виртуальных машин (VM, ВМ) могли сосуществовать в одной системе и при этом быть практически полностью изолированными друг от друга, что повышало надежность и безопасность. Домашние пользователи могли использовать преимущества этого «uLye-nux“, не рискуя повредить свою основную ОС.

С тех пор оборудование продвинулось еще дальше, и теперь вы можете передавать на ВМ целые устройства. Это дает возможность, помимо всего прочего, запускать ВМ Windows с помощью собственной специальной разогнанной видеокарты.

Виртуальная машина Linux
Виртуальная машина для Linux

Вслед за ВМ появились контейнеры, которые вместо реализации целой операционной системы-используют ядро хоста и содержат только то, что необходимо для запуска определенного сервиса или набора сервисов. Это позволяет им поставляться с конкретными библиотеками, избегая проблемы конфликта версий при установке программы на другой компьютер. Благодаря этому они более переносимы, чем виртуальные машины, и до некоторой степени предлагают тот же уровень изоляции. Самым ярким примером здесь является контейнеры Docker.

Компании Snap и Flatpak используют технологию контейнеров и уже вовсю применяются вместо традиционных пакетов. Это означает, что разработчикам становится легко создавать и быстро поставлять независящие от дистрибутива пакеты, чтобы включить свои программы в следующий релиз, не дожидаясь составителей пакетов.

Поэтому если вы хотите попробовать супер-пупер Linux в безопасной среде или реализовать целый стек LAMP на своем сервере с помощью одной команды, читайте дальше!

Что такое виртуальная машина Linux?

Виртуальная машина может работать на любом старом компьютере. В конце концов, люди работают с эмуляторами уже не один год. Но имитация посторонней архитектуры — дело непростое, так что те эмуляции старались сосредоточиться на куда менее мощных компьютерах, чем хост.

Однако, эмулируя компьютер, архитектурно близкий нашему хосту, мы можем сэкономить время и силы. Вместо того, чтобы эмулировать CPU и прочие устройства, мы можем передавать этим устройствам инструкции. И чем больше мы это делаем, тем больше смещаемся от эмуляции в сторону виртуализации.

Для правильной виртуализации нужен гипервизор, который размещается поверх ВМ и сортирует вызовы между гостем и хостом. Нам не надо, чтобы наш гипервизор бездельничал, иначе он будет бессмысленным и позволит гостю вытворять с хостом нежелательные вещи, но и не надо, чтобы он чересчур надрывался.

Примерно с 2006 г. новые функции CPU (Intel VT-x и AMD-V) позволили разрабатывать элегантные гипервизоры, идеально отвечающие требованиям. В Linux есть KVM, в Windows есть Hyper-V, потом еще есть гипервизор Хеп, который работает на привилегированном виртуализированном домене ОС (domO, где может работать любая ОС). Менее привилегированные (domU) ВМ используют domO для доступа ко всему своему оборудованию, а гипервизор поверх всего обеспечивает полную изоляцию всего. Сосредоточенная на безопасности Qubes OS использует виртуализацию Хеп, чтобы обеспечить разграничение приложений. Дальнейшие инновации CPU (VT-d от Intel и AMD-Vi) дают ВМ прямой доступ к периферии. Именно эта магия вместе с Open Virtual Machine Firmware (OVMF) и чудесами драйвера VFIO позволяет нам передать целую видеокарту ВМ Windows 10 и заставить ее работать практически с родной скоростью, запуская все игры, которые пока что не работают нормально в Steam Play.

Виртуализация — это также отличный способ резервного копирования физического сервера. Обзаведясь виртуальным зеркалом своего сервера, вы можете сделать его моментальный снимок и экспериментировать с разными настройками или обновлениями, которые было бы неразумно применять в промышленной эксплуатации. Если они не сработают, вы легко вернетесь к прежнему состоянию и сможете пробовать снова. Если откажет ваш физический сервер, то будет достаточно легко восстановить вашу виртуальную резервную копию на новом оборудовании. В порядке альтернативы, вы просто развернете копию этой ВМ — в облаке полно виртуальных машин.

VirtualBox

Плавно вступаем в мир виртуальных машин через получившую говорящее имя VirtualBox. Воздать свою первую виртуальную машину легко: труднее всего принять решение о выборе платформы. VMWare и VirtualBox предлагают бесплатные инструменты для всех операционных систем (включая Linux). В Windows можно использовать Hyper-V, который, со своей новой функцией Quick Create, может развернуть экземпляр Ubuntu быстрее, чем вы скажете: «Патентная практика Microsoft развивается в полном соответствии со взглядами компании на Linux и открытый код в целом». Мы будем использовать VirtualBox, поскольку она имеет лицензию GPL версии 2 (за исключением Extension Pack, который предлагает такие функции, как транзитная передача USB (USB passthrough) и устройства NVMe — не путайте их с Guest Additions (добавления для гостевой системы), которые теперь тоже выходят под GPL) и одинаково выглядит на всех ОС. Следуйте пошаговому руководству внизу, чтобы приступить к работе, или, если вы уже в курсе дела, читайте дальше и познакомьтесь с некоторыми из ее менее известных функций.

Виртуальные настройки

Предположим, что вы уже ознакомились с нашим руководством, загрузили средство установки и установили Ubuntu на свою Virtualbox. Как и в реальном мире, live-OC намного медленнее, чем установленные в виртуальном мире. Когда запустится ВМ, вы увидите сообщение об интеграции курсора мыши. Это жутко полезная функция, которая обеспечивает плавное движение мыши на хосте и на госте. Если вы используете гостевую ОС без поддержки этой функции, воспользуйтесь клавишей «правый Ctrl», чтобы вызволить курсор мыши из заточения в гостевом окне.

Настройки Virtualbox по умолчанию отлично работают для установки большинства гостевых ОС Linux, но всегда есть место для улучшений. Первое, что вы, вероятно, заметили, это что у ВМ низкое разрешение и что окна перемещаются и изменяют размеры нестерпимо долго. Причина в том, что у нашей виртуальной видеокарты мизерные 16 МБ памяти и никаких функций разгона. Чтобы это исправить, надо выключить ВМ. Затем выберите ВМ из списка слева и нажмите на кнопку Settings (Настройки) на панели инструментов и перейдите в раздел Display (Отображение). Здесь вы можете определить спецификации виртуальной видеокарты. Для более высокого разрешения экрана при большей глубине цвета нужно больше видеопамяти. С настройками по умолчанию вместо видеопамяти используется ОЗУ системы, так что вы, вероятно, сможете выделить здесь как минимум 64 МБ. На самом деле вполне возможно настроить ее побольше, чем позволяет ползунок, употребив инструмент командной строки VboxManage. Но об этом — позднее.

Все современные рабочие столы, несмотря на свое сидение на двумерной поверхности, используют для перемещения окон и создания под ними симпатичных теней какой-либо вид ЗО-графики (OpenGL, OpenGL ES или недавно появившийся Vulkan). Нажав на окно Enable 3D acceleration (Включить ЗО-графику) мы разрешаем нашей ВМ передавать эти базовые элементы более или менее напрямую на видеокарту хоста, а также напрямую получать доступ к его видеопамяти. Так что если вы используете встроенную графику (или очень старую видеокарту с небольшой VRAM), убедитесь, что вы не преувеличили. Есть соблазн нажать также на окно 20-графики, но это скажется только на графике DirectDraw в гостевых ОС Windows.

Мы также можем разогнать CPU. Настройки по умолчанию отводят на работу с гостевой ОС только один поток; это довольно мучительно для мира, где многозадачность принимается как должное. Поэтому выберите раздел System (Система) слева и вкладку Processor (Процессор). Гостю можно отвести столько виртуальных CPU, сколько потоков способен запустить хост (поэтому удвойте число ядер, если ваш процессор поддерживает HyperThreading (гиперпоточность) или как там это сейчас называется у AMD). И опять, если вы отведете гостю слишком много CPU, пострадает хост, что в свою очередь вызовет проблемы у гостя. Универсальным правилом будет не отводить более половины наличных ресурсов CPU. Можно также задать планку выполнения, чтобы ВМ не могла исчерпать все ресурсы ядра на хосте, это бывает полезно для некоторых разнузданных задач.

Используйте ресурсы мудро! Если вы отведете гостю слишком много CPU, пострадает хост, что в свою очередь вызовет проблемы у гостя.

Некоторым операционным системам требуется выбрать Enable РАЕ/NX, что даст возможность 32-битным ВМ получать доступ к более чем 4 ГБ памяти. Если вы настраиваете Ubuntu Server guest (что и указали в окнах Machine Туре и Version), это происходит автоматически. Перейдя на вкладку Acceleration [Ускорение], вы должны увидеть, что окна VT-x и Nested Paging отмечены. Для нашего виртуального жесткого диска официально не рекомендуется отмечать Use Host I/O Cache [Использовать кэш ввода-вывода хоста], отключая специальный кэш VirtualBox, чтобы использовать кэш ОС. Однако есть сообщения, что тогда ускоряется выполнение задач с активным использованием ввода/вывода, в частности, установка ОС и обновление пакетов. Мы не будем рассказывать здесь о настройке ВМ Windows, но если вам это нужно, то вам, вероятно, придется немного поэкспериментировать, чтобы всё работало хорошо.

QEMU и Libvirt

VirtualBox—отличный выбор для начала работы с виртуализацией: вы получаете броское название, дружелюбный интерфейс и кросс-платформенность. Однако в Linux есть и другие опции.

Многие активно избегают VirtualBox из-за ассоциаций с Oracle (эту компанию многие считают склочным корпоративным монстром), купившей эту программу вместе с компанией Sun в 2010 г. QEMU — инструмент, куда более отвечающий стандартам Linux (ну вы поняли: нескончаемые опции командной строки, заумные файлы настройки и неумолимые сообщения об ошибках). Сам по себе QEMU — это эмулятор, но в сочетании с мощью KVM он превращается в первоклассный инструмент виртуализации.

Кроме того, Libvirt предоставляет платформу, упрощающую управление ВМ QEMU (и другими). Она берет на себя проблемы определения виртуальных сетей и хранилища и позволяет управлять и получать доступ к ВМ удаленно. Более подробное объяснение этих трех уровней вы найдете в комментариях гуру виртуализации Берто Гарсии [Alberto Garcia] в LXF234. Libvirt, в свою очередь, может управляться превосходным virt-manager, который дает доступ к большинству опций QEMU через понятный и дружелюбный графический интерфейс. Но давайте сначала обойдемся старым способом. Чтобы установить QEMU (а также элементы Libvirt, которыми мы воспользуемся позднее) в Ubuntu 18.04 (и его производных), сделайте следующее:

Виртуальная машина QEMU

Прежде чем добыть виртуальную машину, надо обзавестись виртуальным хранилищем. Простейший способ сделать это — использовать qemu-img, вот так:

S qemu-img create -f qcow2 Ixf.qcow2 20G

Создастся динамический образ QC0W2, так что в данном случае он не поглотит сразу 20 ГБ на диске. Позаботьтесь создать его в таком месте, где он сможет спокойно расти в объеме, поскольку если на вашем разделе root закончится место, могут произойти всяческие ужасы. Можно также использовать «сырой [raw]» образ со статическим объемом. В некоторых ситуациях это обеспечит преимущества в производительности и не создаст ситуации растраты ресурсов хранилища при добавлении к ним данных, но зато будет не так стабильно при сбое вашей ВМ.

Мы определили особенности нашей ВМ посредством опций командной строки. Как вы понимаете, эти опции способны заполнить собой целый выпуск Linux Format, так что мы сосредоточимся сначала на основных. В нашем примере мы воспользуемся ISO Elementary OS (который вы найдете на нашем DVD. но лучше скопировать его на более быстрый диск), хотя ничто не мешает вам загрузить ОС по своему выбору. Столь же спокойно вы можете указать /dev/edrom вместо файла ISO, если хотите использовать реальный носитель. Вот как запустить нашу ВМ и отвести ей 3 ГБ памяти (разумное количество для настольного Linux):

S qemu-system-x86_64 -edrom elementaryos-5.0-stable.20181016.iso -drive file=lxf.qcow2 -enable-kvm -m 3G

Обратите внимание на опцию -enable-kvm. QEmu — это всё-таки эмулятор, и если мы не разрешим использовать KVM. всё будет эмулироваться, т.е. работать очень медленно. Ну очень медленно. Исследовав среду live (с помощью опции Try Elementary), вы должны обнаружить, что работать в Интернете можно, а вот пропинговать хосты нельзя.

QEMU по умолчанию устанавливает основное сетевое соединение NAT, что прекрасно подходит в большинстве случаев,

Понравилась статья? Поделиться с друзьями:
Добавить комментарий