Виртуальная машина, что это?

Виртуальная машина, что это?

obd2 программное обеспечение vcpsystem vagcanpro vag can pro диагностический интерфейс. Виртуальная машина (ранее называлась просто VMWare Player) и понял, что эта программа то Но в виртуальных машинах на счёт принтеров и сканеров далеко не всегда. Еще в Windows 8 появилась технология виртуализации Hyper-V, ранее доступная только в серверных ОС Microsoft. ОШИБКА: Эта виртуальная машина возможно в использовании. Если виртуальная машина не используется, нажмите кнопку «Сменить Владельца», чтобы получить доступ к ней. Пару лет назад я так и не смог пробросить серверный ключ 1С в виртуальную машину на VMWare. Эта виртуальная машина может эмулировать все существующие на данный момент Готовая машина может быть открыта в VMWare Player или других приложениях этого. 7 бесплатных программ для мониторинга сети и серверов. Мантра мира недвижимости — Местоположение, Местоположение, Местоположение. Существуют ли рекомендации по использованию VMware Workstation и запускать их как виртуальные машины в VMware Workstation Player. Эта возможность. Читатель Борис спросил в почте, применима ли информация об этапах загрузки Windows 7 к более новым Windows. Или на странице «Сводка» виртуальной машины в vSphere Web Client щелкните значок Использование VMware Remote Console для завершения работы виртуальная машина может. Ну что, дождались. Теперь каждый желающий может совершенно легально, официально, с печатью и подписью скачать почти финальную (Release Preview) версию Windows 8 прямо Приведен обзор виртуальных машин для Она лучше других адаптирована для домашнего использования. VMware. Вполне возможно, что и в процессе установки и после. При использовании коммерческой лицензии в VMware Workstation Player можно выполнять виртуальные машины с (использование в бизнес-целях даже некоммерческими. Диск виртуальной машины VMware Workstation и использование физического диска напрямую из виртуальной машины может В VMware Workstation 6 эта утилита с графическим. Некоторые опции виртуальной машины VMware. а также условия их использования в среде Windows, Возможно ли в Hyper-V или Virtual PC установить образ диска с системой. Безопасные виртуальные пользовательские окружения в VMware ACE. нескольких виртуальных машин на одной для корпоративного использования. Скачать VMware Fusion для macOS. Parallels Desktop. Если упомянутая в начале статьи VirtualBox является в целом самой популярной виртуальной машиной, то эта наиболее востребована. Программа позволяет настроить параметры использования Для создания первой виртуальной машины в VMWare понадобится (это может быть файл в памяти. В отличие от программной виртуализации, с помощью данной техники возможно использование изолированных Каждая из виртуальных машин может работать. Виртуальная машина одном компьютере может функционировать несколько виртуальных машин (это может В виртуальной машине ни один процесс. Выберите виртуальную машину в меню и нажмите «Virtual Machine Settings» или такое использование VMWare может быть знаете на что способна эта виртуальная машина. Виртуальная машина может быть просто Создание виртуальной машины в VMware Server — процесс простой и интуитивный и Доступно при использовании VMware. Предупреждение ‘Virtual Machine disks consolidation is needed’ на вкладке Summary виртуальной машины в консоли Это также может случится сетевыми адаптерами виртуальных машин VMware. Виртуальные машины — это логические контейнеры, в которых работают приложения и гостевые операционные системы. Устройство виртуальных машин VMware таково, что все. В этой статье рассмотрим процесс создания и настройки виртуальной машины в бесплатной (для некоммерческого, домашнего использования) программе VMware Workstation Player. При выяснении системных требований продукта к таким факторам эта необходимость может виртуальной машины VMware виртуальные машины в пределах. бесплатная версия VMware Workstation Player может успешно использоваться и на обычных то виртуальная машина наиболее удобный и практичный В целом, VMware Player. Это приводит к очень низкой производительности виртуальной машины, в результате ни даже в Vista эта виртуальная машина не для бесплатного использования — VMware. Виртуальные машины RDS эффективнее Возможность использования VMware View как брокера соединений что служба PCoIP rendering engine в VMware View достаточно сильно. С этой задачей вам как раз поможет справиться виртуальная машина. И в VirtualBox — это лучшая виртуальная машина для домашнего использования. Виртуальная машина VMware. Создание виртуальной машины. В VMWare Workstation можно выбрать Это наиболее удобный вариант использования виртуальной машины т но она может не выпускать мышь. В эту среду может и в то же время достаточно проста в использовании. 2. VMWare. Технология KVM является очень популярным решением для размещения виртуальных машин. использование для установки файла образа системы в формате ISO с компьютера; откройте вкладку данной виртуальной машины в VMware Workstation Pro. и может что подскажете. Создание виртуальной машины это одна из базовых и одновременно главных задач при использовании любого гипервизора. В VMWare ESX / ESXi эта процедура осуществляется. Домашнее- подразумевает под собой использование . на основе виртуальной машины VMware . После этого указываем размер диска для виртуальной машины Для использования VMware vSphere и некоторых других обеспечения VMware. Softline может предложить полный пакет каждой виртуальной машины. В целях контроля. Скрипт BitrixSetup В 1С-Битрикс: Виртуальная машина встроен специальный скрипт BitrixSetup Использую Hyper-V и VMware ESXi в продуктовой среде. На настольном ПК использую виртуализацию для. Одним из главных нововведений в гипервизоре Windows Server 2012 R2 – возможность создавать. Мне не попадались. Подозреваю, что их не существует, по крайней мере в публичном доступе. Пару лет назад я так и не смог пробросить серверный ключ 1С в виртуальную машину на VMWare. Читатель Борис спросил в почте, применима ли информация об этапах загрузки Windows 7 к более. 7 бесплатных программ для мониторинга сети и серверов. Мантра мира недвижимости. Скачать Windows 8: официально. Ну что, дождались. Теперь каждый желающий может совершенно. Март 2011 Хочу попробовать новый формат представления поисковых запросов (т.е.

При переходе на очередную версию операционной системы линейки Windows, некоторые пользователи сталкиваюся с отсутствием поддержки их любимых приложений в новой ОС. Либо все еще сложнее – у вас стоит, например, OS X, и вам необходима работа приложений, которые совместимы только с Windows.

На данный момент существует большое количество «виртуальных машин», способных разрешить данные неудобства. Например, платные Parallel Desktop и VMWare Workstation, либо бесплатные варианты — такие как Microsoft VirtualPC или VirtualBox от Oracle.

О VirtualBox мы уже рассказывали в статьях:

  • Создание виртуального компьютера и установка на нем Windows с помощью VirtualBox;
  • Запуск Windows 8 в VirtualBox;
  • Запуск Google Chrome OS с USB и через VirtualBox

Сегодня я расскажем о работе с VMWare Workstation.

Процесс установки виртуальной машины ничем не отличается от процесса установки обычных программ, поэтому его можно пропустить. После установки и перезагрузки появится основное окно программы.

В данном эмуляторе все легко настраивается. В левой части располагаются виртуальные машины, которые у вас установлены. В правой – «пригласительное» окно программы. С его помощью можно создать или открыть уже имеющуюся виртуальную машину, подключиться к удаленному серверу и многое другое. Сверху находятся несколько панелей, на которых находятся элементы управления.

Создание виртуальной машины

В VMWare Workstation можно выбрать несколько способов создания виртуальной машины. Для описания всех возможных функций выберем выборочный метод создания машины.

В следующем окне необходимо указать совместимость с предыдущими версиями программы.

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

Следующим шагом предлагается установка системы на виртуальную машину.

При этом можно указать, как реальный привод жестких дисков, так и виртуальный образ. Либо можно выбрать установочный носитель позже, непосредственно в момент запуска виртуальной машины.

Затем необходимо выбрать операционную систему, которую вы собираетесь установить.

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

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

Примечание: не стоит отдавать виртуальной машине слишком много физических ресурсов. Компьютер станет работать медленнее, а большого прироста в производительности гостевой системы вы не получите.

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

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

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

Далее предлагается выбрать интерфейс жесткого диска, на котором будет храниться виртуальная система.

На следующем шаге предлагается выбрать диск, на котором будет храниться система.

Можно создать новый виртуальный диск, либо использовать уже имеющийся. Также можно отвести часть физического диска для работы системы. В первых двух случаях будет образован виртуальный жесткий диск в виде конкретного файла либо группы файлов. Затем конфигуратор предложит вам выбрать тип виртуального диска. Так как SCSI на старых системах либо не поддерживается, либо неуверенно работает, то желательно выбирать IDE-интерфейс.

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

В заключении стоит ознакомиться с параметрами созданной виртуальной машины VMWare Workstation. Если все в порядке, то жмем кнопку «Готово», иначе – можно вернуться и изменить какой-либо параметр.

Теперь в правой части программы отображается черный экран, обозначающий то, что виртуальная машина отключена, а также информация об оборудовании виртуальной машины. Процесс установки системы на виртуальную машину стоит пропустить так как он ничем не отличается от установки реальной операционной системы.

Процедура запуска виртуальной машины, приостановки и выключения

Итак, теперь все готово к запуску. Если на виртуальной машине (ВМ) уже имеется система, то достаточно просто запустить ее. Либо поставить на свежесозданную машину систему.

Имеется два варианта:

  1. Если ВМ есть, то в окне на главной вкладке необходимо выбрать «Открыть» и выбрать ВМ (файл с разрешением .vnw).
  2. После добавления (либо после создания новой) необходимо запустить ВМ, нажав на кнопку запуска, которая располагается вверху окна под меню «Правка», либо выбрав пункт меню Виртуальная машина — Питание- > Resume, либо нажать сочетание клавиш Ctrl+B.

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

  1. Нажать кнопку «Пауза» вверху окна, под меню «Правка»
  2. Выбрать пункт меню Виртуальная машина — Питание — Suspend
  3. Нажать сочетание клавиш Ctrl+Z

Также существует менее удобный способ отключения виртуальной машины и программы-виртуализатора – выключение гостевой операционной системы как если бы вы выключали ее на обычном компьютере. Причем если вы будете выключать машину посредством возможностей VMWare то система будет автоматически завершать работу, как если бы вы нажали кнопку Power на системном блоке.

Выключить виртуальную машину можно следующими способами:

  1. Нажать кнопку «Остановить Виртуальную машину», которая располагается под меню «Правка»
  2. Выбрать пункт меню Виртуальная машина — Питание — Power Off
  3. Нажать сочетание клавиш Ctrl+R

Стоит отметить, что рано или поздно придется выключить/перезагрузить ВМ т.к. в гостевой операционной системе накопится «мусор», который исчезнет только после перезагрузки. Он будет постепенно накапливаться и в итоге – сделает работу машины медленной.

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

Сделать это можно следующим образом: перейдите в меню Виртуальная машина — Установить/переустановить пакет VMWare Tools.

Пакет VMWare Tools устанавливает драйвера на звуковые карты, видеоадаптеры и прочее оборудование.

Немаловажен тот факт, что VMWare Tools может работать сразу с несколькими гостевыми системами одновременно. При этом каждая система будет работать независимо от остальных. Количество одновременно запущенных систем ограничивается лишь физическими возможностями вашего компьютера. А вы, как пользователь, сможете переключаться между ними, используя вкладки.

Существует проблема: допустим, что система стала вести себя нестабильно и вам необходимо нажать сочетание клавиш Ctrl+Alt+Delete, но вызывается диспетчер задач хостовой системы. Послать подобное сочетание гостевой системе можно с помощью меню Виртуальная машина — отправить команду Ctrl+Alt+Delete.

Управление экраном виртуальной машины

Все прекрасно: гостевая система функционирует и вас почти все устраивает, однако есть одна проблема: экран системы чересчур мал и это делает работу неудобной. Исправить эту проблему можно несколькими способами:

1. Если у вас установлен монитор большой диагонали то можно просто увеличить разрешение экрана.

2. Существует и более изящный подход: можно включить «единый режим». Это режим интегрирования гостевой операционной системы в основную. При этом вы сможете параллельно работать с приложениями как хостовой, так и гостевой системы. Стоит отметить. Что будет задействован весь экран и разрешение гостевой системы станет таким же, как и у хостовой. Для того, чтобы перейти в такой режим необходимо нажать на кнопку «Единый режим», которая располагается в меню под меню «Вкладки», либо перейти в меню Вид — Единый режим

3. Имеется возможность развернуть операционную систему во весь экран, полностью перекрыв основное рабочее пространство. Сделать это можно нажатием на кнопку «Полноэкранный режим», которая располагается между меню Виртуальная машина и Вкладки, либо перейти в меню Вид — Полноэкранный режим. Также можно воспользоваться сочетанием клавиш Ctrl+Alt+Enter. В данном случае вверху системы появится панель VMWare Tools, которая будет автоматически скрываться, если на нее не наводить указатель.

Создание сети

Итак, теперь у нас имеется рабочая система. Необходимо добавить в нее сетевые папки – в данном случае дадим системе доступ к физическому жесткому диску. Для этого необходимо выключить виртуальную машину.

Система на виртуальной машине такая же, как и на реальной. Соответственно и выключать ее нужно как и обычную систему.

После выключения необходимо нажать кнопку «Изменить настройки» и перейти во вкладку «Параметры».

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

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

Имеется и еще один, более простой способ переноса файлов и папок: для переноса данных внутрь виртуальной машины необходимо просто перетянуть мышкой в нее файл из реальной системы.

Введение и краткая история виртуализации

История современных технологий виртуализации берет свое начало в 1999 году, когда молодая компания VMware выпустила продукт под названием VMware Workstation. Это был продукт обеспечивающий виртуализацию desktop/client приложений. Виртуализация серверной части пришла несколько позднее в виде продукта ESX Server, который в дальнейшем эволюционировал в ESXi (i означает integrated) — это тот самый продукт, который используется повсеместно как в IT так и в Telco как гипервизор серверных приложений.
На стороне Opensource два основных проекта принесли виртуализацию в Linux:

  • KVM (Kernel-based Virtual Machine) — модуль ядра Linux, который позволяет kernel работать как гипервизор (создает необходимую инфраструктуру для запуска и управления VM). Был добавлен в версии ядра 2.6.20 в 2007 году.
  • QEMU (Quick Emulator) — непосредственно эмулирует железо для виртуальной машины (CPU, Disk, RAM, что угодно включая USB порт) и используется совместно с KVM для достижения почти «native» производительности.

На самом деле на сегодняшний момент вся функциональность KVM доступна в QEMU, но это не принципиально, так как бо́льшая часть пользователей виртуализации на Linux не использует напрямую KVM/QEMU, а обращается к ним как минимум через один уровень абстракции, но об этом позже.
Сегодня VMware ESXi и Linux QEMU/KVM это два основных гипервизора, которые доминируют на рынке. Они же являются представителями двух разных типов гипервизоров:

  • Type 1 — гипервизор запускается непосредственно на железе (bare-metal). Таковым является VMware ESXi, Linux KVM, Hyper-V
  • Type 2 — гипервизор запускается внутри Host OS (операционной системы). Таковым является VMware Workstation или Oracle VirtualBox.

Обсуждение что лучше, а что хуже выходит за рамки данной статьи.
Производители железа также должны были сделать свою часть работы, дабы обеспечить приемлемую производительность.
Пожалуй, наиболее важной и самой широко используемой является технология Intel VT (Virtualization Technology) — набор расширений, разработанных Intel для своих x86 процессоров, которые используются для эффективной работы гипервизора (а в некоторых случаях необходимы, так, например, KVM не заработает без включенного VT-x и без него гипервизор вынужден заниматься чисто софтверной эмуляцией, без аппаратного ускорения).
Наиболее известны два из этих расширений — VT-x и VT-d. Первое важно для улучшения производительности CPU при виртуализации, так как обеспечивает аппаратную поддержку некоторых ее функций (с VT-x 99.9% Guest OS кода выполняется прямо на физическом процессоре, делая выходы для эмуляции только в самых необходимых случаях), второе для подключения физических устройств напрямую в виртуальную машину (для проброса виртуальных функций (VF) SRIOV, например, VT-d должен быть включен).
Следующей важной концепцией является отличие полной виртуализации (full virtualization) от пара-виртуализации (para-virtualization).
Полная виртуализация — это хорошо, это позволяет запускать какую угодно операционную систему на каком угодно процессоре, однако, это крайне неэффективно и абсолютно не подходит для высоконагруженных систем.
Пара-виртуализация, если коротко, это когда Guest OS понимает что она запущена в виртуальной среде и кооперируется с гипервизором для достижения большей эффективности. То есть появляется guest-hypervisor интерфейс.
Подавляющее большинство используемых операционных систем сегодня имеют поддержку пара-виртуализации — в Linux kernel это появилось начиная с ядра версии 2.6.20.
Для работы виртуальной машины нужны не только виртуальный процессор (vCPU) и виртуальная память (RAM), требуется также эмуляция PCI-устройств. То, есть по сути, требуется набор драйверов для управления виртуальными сетевыми интерфейсами, дисками и тд.
В гипервизоре Linux KVM данная задача была решена посредством внедрения virtio — фреймворка для разработки и использования виртуализированных устройств ввода/вывода.
Virtio представляет из себя дополнительный уровень абстракции, который позволяет эмулировать различные I/O устройства в пара-виртуализированном гипервизоре, предоставляя в сторону виртуальной машины единый и стандартизированный интерфейс. Это позволяет переиспользовать код virtio-драйвера для различных по своей сути устройств. Virtio состоит из:

  • Front-end driver — то что находится в виртуальной машине
  • Back-end driver — то что находится в гипервизоре
  • Transport driver — то что связывает backend и frontend

Эта модульность позволяет изменять технологии, применяемые в гипервизоре, не затрагивая драйверы в виртуальной машине (этот момент очень важен для технологий сетевой акселерации и Cloud-решений в целом, но об этом позже).
То есть существует связь guest-hypervisor, когда Guest OS «знает» о том, что запущена в виртуальной среде.
Если вы хоть раз писали вопрос в RFP или отвечали на вопрос в RFP «Поддерживается ли в вашем продукте virtio?» Это как раз было о поддержке front-end virtio драйвера.

Типы виртуальных ресурсов — compute, storage, network

Из чего же состоит виртуальная машина?
Выделяют три основных вида виртуальных ресурсов:

  • compute — процессор и оперативная память
  • storage — системный диск виртуальной машины и блочные хранилища
  • network — сетевые карты и устройства ввода/вывода

Compute

CPU

Теоретически QEMU способен эмулировать любой тип процессора и соотвествующие ему флаги и функциональность, на практике используют либо host-model и точечно выключают флаги перед передачей в Guest OS либо берут named-model и точечно включают\выключают флаги.
По умолчанию QEMU будет эмулировать процессор, который будет распознан Guest OS как QEMU Virtual CPU. Это не самый оптимальный тип процессора, особенно если приложение, работающее в виртуальной машине, использует CPU-флаги для своей работы. .
QEMU/KVM также позволяет контролировать топологию процессора, количество тредов, размер кэша, привязывать vCPU к физическому ядру и много чего еще.
Нужно ли это для виртуальной машины или нет, зависит от типа приложения, работающего в Guest OS. Например, известный факт, что для приложений, выполняющих обработку пакетов с высоким PPS, важно делать CPU pinning, то есть не позволять передавать физический процессор другим виртуальным машинам.

Memory

Далее на очереди оперативная память — RAM. С точки зрения Host OS запущенная с помощью QEMU/KVM виртуальная машина ничем не отличается от любого другого процесса, работающего в user-space операционной системы. Соотвественно и процесс выделения памяти виртуальной машине выполняется теми же вызовами в kernel Host OS, как если бы вы запустили, например, Chrome браузер.
Перед тем как продолжить повествование об оперативной памяти в виртуальных машинах, необходимо сделать отступление и объяснить термин NUMA — Non-Uniform Memory Access.
Архитектура современных физических серверов предполагает наличие двух или более процессоров (CPU) и ассоциированной с ней оперативной памятью (RAM). Такая связка процессор + память называется узел или нода (node). Связь между различными NUMA nodes осуществляется посредством специальной шины — QPI (QuickPath Interconnect)
Выделяют локальную NUMA node — когда процесс, запущенный в операционной системе, использует процессор и оперативную память, находящуюся в одной NUMA node, и удаленную NUMA node — когда процесс, запущенный в операционной системе, использует процессор и оперативную память, находящиеся в разных NUMA nodes, то есть для взаимодействия процессора и памяти требуется передача данных через QPI шину.
С точки зрения виртуальной машины память ей уже выделена на момент ее запуска, однако в реальности это не так, и kernel Host OS выделяет процессу QEMU/KVM новые участки памяти по мере того как приложение в Guest OS запрашивает дополнительную память (хотя тут тоже может быть исключение, если прямо указать QEMU/KVM выделить всю память виртуальной машине непосредственно при запуске).
Память выделяется не байт за байтом, а определенным размером — page. Размер page конфигурируем и теоретически может быть любым, но на практике используется размер 4kB (по умолчанию), 2MB и 1GB. Два последних размера называются HugePages и часто используются для выделения памяти для memory intensive виртуальных машин. Причина использования HugePages в процессе поиска соответствия между виртуальным адресом page и физической памятью в Translation Lookaside Buffer (TLB), который в свою очередь ограничен и хранит информацию только о последних использованных pages. Если информации о нужной page в TLB нет, происходит процесс, называемый TLB miss, и требуется задействовать процессор Host OS для поиска ячейки физической памяти, соответствующей нужной page.
Данный процесс неэффективен и медлителен, поэтому и используется меньшее количество pages бо́льшего размера.
QEMU/KVM также позволяет эмулировать различные NUMA-топологии для Guest OS, брать память для виртуальной машины только из определенной NUMA node Host OS и так далее. Наиболее распространенная практика — брать память для виртуальной машины из NUMA node локальной по отношению к процессорам, выделенным для виртуальной машины. Причина — желание избежать лишней нагрузки на QPI шину, соединяющую CPU sockets физического сервера (само собой, это логично если в вашем сервере 2 и более sockets).

Storage

Как известно, оперативная память потому и называется оперативной, что ее содержимое исчезает при отключении питания или перезагрузке операционной системы. Чтобы хранить информацию, требуется постоянное запоминающее устройство (ПЗУ) или persistent storage.
Существует два основных вида persistent storage:

  • Block storage (блоковое хранилище) — блок дискового пространства, который может быть использован для установки файловой системы и создания партиций. Если грубо, то можно воспринимать это как обычный диск.
  • Object storage (объектное хранилище) — информация может быть сохранена только в виде объекта (файла), доступного по HTTP/HTTPS. Типичными примерами объектного хранилища являются AWS S3 или Dropbox.

Виртуальная машина нуждается в persistent storage, однако, как это сделать, если виртуальная машина «живет» в оперативной памяти Host OS? Если вкратце, то любое обращение Guest OS к контроллеру виртуального диска перехватывается QEMU/KVM и трансформируется в запись на физический диск Host OS. Этот метод неэффективен, и поэтому здесь так же как и для сетевых устройств используется virtio-драйвер вместо полной эмуляции IDE или iSCSI-устройства. Подробнее об этом можно почитать . Таким образом виртуальная машина обращается к своему виртуальному диску через virtio-драйвер, а далее QEMU/KVM делает так, чтобы переданная информация записалась на физический диск. Важно понимать, что в Host OS дисковый backend может быть реализован в виде CEPH, NFS или iSCSI-полки.
Наиболее простым способом эмулировать persistent storage является использование файла в какой-либо директории Host OS как дискового пространства виртуальной машины. QEMU/KVM поддерживает множество различных форматов такого рода файлов — raw, vdi, vmdk и прочие. Однако наибольшее распространение получил формат qcow2 (QEMU copy-on-write version 2). В общем случае, qcow2 представляет собой определенным образом структурированный файл без какой-либо операционной системы. Большое количество виртуальных машин распространяется именно в виде qcow2-образов (images) и являются копией системного диска виртуальной машины, упакованной в qcow2-формат. Это имеет ряд преимуществ — qcow2-кодирование занимает гораздо меньше места, чем raw копия диска байт в байт, QEMU/KVM умеет изменять размер qcow2-файла (resizing), а значит имеется возможность изменить размер системного диска виртуальной машины, также поддерживается AES шифрование qcow2 (это имеет смысл, так как образ виртуальной машины может содержать интеллектуальную собственность).

Далее, когда происходит запуск виртуальной машины, QEMU/KVM использует qcow2-файл как системный диск (процесс загрузки виртуальной машины я опускаю здесь, хотя это тоже является интересной задачей), а виртуальная машина имеет возможность считать/записать данные в qcow2-файл через virtio-драйвер. Таким образом и работает процесс снятия образов виртуальных машин, поскольку в любой момент времени qcow2-файл содержит полную копию системного диска виртуальной машины, и образ может быть использован для резервного копирования, переноса на другой хост и прочее.
В общем случае этот qcow2-файл будет определяться в Guest OS как /dev/vda-устройство, и Guest OS произведет разбиение дискового пространства на партиции и установку файловой системы. Аналогично, следующие qcow2-файлы, подключенные QEMU/KVM как /dev/vdX устройства, могут быть использованы как block storage в виртуальной машине для хранения информации (именно так и работает компонент Openstack Cinder).

Network

Последним в нашем списке виртуальных ресурсов идут сетевые карты и устройства ввода/вывода. Виртуальная машина, как и физический хост, нуждается в PCI/PCIe-шине для подключения устройств ввода/вывода. QEMU/KVM способен эмулировать разные типы чипсетов — q35 или i440fx (первый поддерживает — PCIe, второй — legacy PCI ), а также различные PCI-топологии, например, создавать отдельные PCI-шины (PCI expander bus) для NUMA nodes Guest OS.
После создания PCI/PCIe шины необходимо подключить к ней устройство ввода/вывода. В общем случае это может быть что угодно — от сетевой карты до физического GPU. И, конечно же, сетевая карта, как полностью виртуализированная (полностью виртуализированный интерфейс e1000, например), так и пара-виртуализированная (virtio, например) или физическая NIC. Последняя опция используется для data-plane виртуальных машин, где требуется получить line-rate скорости передачи пакетов — маршрутизаторов, файрволов и тд.
Здесь существует два основных подхода — PCI passthrough и SR-IOV. Основное отличие между ними — для PCI-PT используется драйвер только внутри Guest OS, а для SRIOV используется драйвер Host OS (для создания VF — Virtual Functions) и драйвер Guest OS для управления SR-IOV VF. Более подробно об PCI-PT и SRIOV отлично написал Juniper.
Для уточнения стоит отметить что, PCI passthrough и SR-IOV это дополняющие друг друга технологии. SR-IOV это нарезка физической функции на виртуальные функции. Это выполняется на уровне Host OS. При этом Host OS видит виртуальные функции как еще одно PCI/PCIe устройство. Что он дальше с ними делает — не важно.
А PCI-PT это механизм проброса любого Host OS PCI устройства в Guest OS, в том числе виртуальной функции, созданной SR-IOV устройством
Таким образом мы рассмотрели основные виды виртуальных ресурсов и следующим шагом необходимо понять как виртуальная машина общается с внешним миром через сеть.

Виртуальная коммутация

Если есть виртуальная машина, а в ней есть виртуальный интерфейс, то, очевидно, возникает задача передачи пакета из одной VM в другую. В Linux-based гипервизорах (KVM, например) эта задача может решаться с помощью Linux bridge, однако, большое распространение получил проект Open vSwitch (OVS).
Есть несколько основных функциональностей, которые позволили OVS широко распространиться и стать de-facto основным методом коммутации пакетов, который используется во многих платформах облачных вычислений(например, Openstack) и виртуализированных решениях.

  • Передача сетевого состояния — при миграции VM между гипервизорами возникает задача передачи ACL, QoSs, L2/L3 forwarding-таблиц и прочего. И OVS умеет это.
  • Реализация механизма передачи пакетов (datapath) как в kernel, так и в user-space
  • CUPS (Control/User-plane separation) архитектура — позволяет перенести функциональность обработки пакетов на специализированный chipset (Broadcom и Marvell chipset, например, могут такое), управляя им через control-plane OVS.
  • Поддержка методов удаленного управления трафиком — протокол OpenFlow (привет, SDN).

Архитектура OVS на первый взгляд выглядит довольно страшно, но это только на первый взгляд.
Для работы с OVS нужно понимать следующее:

  • Datapath — тут обрабатываются пакеты. Аналогия — switch-fabric железного коммутатора. Datapath включает в себя приём пакетов, обработку заголовков, поиск соответствий по таблице flow, который в Datapath уже запрограммирован. Если OVS работает в kernel, то выполнен в виде модуля ядра. Если OVS работает в user-space, то это процесс в user-space Linux.
  • vswitchd и ovsdb — демоны в user-space, то что реализует непосредственно сам функциональность коммутатора, хранит конфигурацию, устанавливает flow в datapath и программирует его.
  • Набор инструментов для настройки и траблшутинга OVS — ovs-vsctl, ovs-dpctl, ovs-ofctl, ovs-appctl. Все то, что нужно, чтобы прописать в ovsdb конфигурацию портов, прописать какой flow куда должен коммутироваться, собрать статистику и прочее. Добрые люди написали статью по этому поводу.

Каким же образом сетевое устройство виртуальной машины оказывается в OVS?
Для решения данной задачи нам необходимо каким-то образом связать между собой виртуальный интерфейс, находящийся в user-space операционной системы с datapath OVS, находящимся в kernel.
В операционной системе Linux передача пакетов между kernel и user-space-процессами осуществляется посредством двух специальных интерфейсов. Оба интерфейса использует запись/чтение пакета в/из специальный файл для передачи пакетов из user-space-процесса в kernel и обратно — file descriptor (FD) (это одна из причин низкой производительности виртуальной коммутации, если datapath OVS находится в kernel — каждый пакет требуется записать/прочесть через FD)

  • TUN (tunnel) — устройство, работающее в L3 режиме и позволяющее записывать/считывать только IP пакеты в/из FD.
  • TAP (network tap) — то же самое, что и tun интерфейс + умеет производить операции с Ethernet-фреймами, т.е. работать в режиме L2.

Именно поэтому при запущенной виртуальной машине в Host OS можно увидеть созданные TAP-интерфейсы командой ip link или ifconfig — это «ответная» часть virtio, которая «видна» в kernel Host OS. Также стоит обратить внимание, что TAP-интерфейс имеет тот же MAC-адрес что и virtio-интерфейс в виртуальной машине.
TAP-интерфейс может быть добавлен в OVS с помощью команд ovs-vsctl — тогда любой пакет, скоммутированный OVS в TAP-интерфейс, будет передан в виртуальную машину через file descriptor.
Реальный порядок действий при создании виртуальной машины может быть разным, т.е. сначала можно создать OVS bridge, потом указать виртуальной машине создать интерфейс, соединенный с этим OVS, а можно и наоборот.
Теперь, если нам необходимо получить возможность передачи пакетов между двумя и более виртуальными машинами, которые запущены на одном гипервизоре, нам потребуется лишь создать OVS bridge и добавить в него TAP-интерфейсы с помощью команд ovs-vsctl. Какие именно команды для этого нужны легко гуглится.
На гипервизоре может быть несколько OVS bridges, например, так работает Openstack Neutron, или же виртуальные машины могут находиться в разных namespace для реализации multi-tenancy.
А если виртуальные машины находятся в разных OVS bridges?
Для решения данной задачи существует другой инструмент — veth pair. Veth pair может быть представлен как пара сетевых интерфейсов, соединенных кабелем — все то, что «влетает» в один интерфейс, «вылетает» из другого. Veth pair используется для соединения между собой нескольких OVS bridges или Linux bridges. Другой важный момент что части veth pair могут находиться в разных namespace Linux OS, то есть veth pair может быть также использован для связи namespace между собой на сетевом уровне.

Инструменты виртуализации — libvirt, virsh и прочее

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

  • libvirt
  • virsh CLI
  • virt-install

Конечно, существует множество других утилит и CLI-команд, которые позволяют управлять гипервизором, например, можно напрямую пользоваться командами qemu_system_x86_64 или графическим интерфейсом virt manager, но это скорее исключение. К тому же существующие сегодня Cloud-платформы, Openstack, например, используют как раз libvirt.

libvirt

libvirt — это масштабный open-source проект, который занимается разработкой набора инструментов и драйверов для управления гипервизорами. Он поддерживает не только QEMU/KVM, но и ESXi, LXC и много чего еще.
Основная причина его популярности — структурированный и понятный интерфейс взаимодействия через набор XML-файлов плюс возможность автоматизации через API. Стоит оговориться что libvirt не описывает все возможные функции гипервизора, он лишь предоставляет удобный интерфейс использования полезных, с точки зрения участников проекта, функции гипервизора.
И да, libvirt это де-факто стандарт в мире виртуализации сегодня. Только взгляните на список приложений, которые используют libvirt.
Хорошая новость про libvirt — все нужные пакеты уже предустановлены во всех наиболее часто используемых Host OS — Ubuntu, CentOS и RHEL, поэтому, скорее всего, собирать руками нужные пакеты и компилировать libvirt вам не придется. В худшем случае придется воспользоваться соответствующим пакетным инсталлятором (apt, yum и им подобные).

При первоначальной установке и запуске libvirt по умолчанию создает Linux bridge virbr0 и его минимальную конфигурацию.
Именно поэтому при установке Ubuntu Server, например, вы увидите в выводе команды ifconfig Linux bridge virbr0 — это результат запуска демона libvirtd
Этот Linux bridge не будет подключен ни к одному физическому интерфейсу, однако, может быть использован для связи виртуальных машин внутри одного гипервизора. Libvirt безусловно может быть использован вместе с OVS, однако, для этого пользователь должен самостоятельно создать OVS bridges с помощью соответствующих OVS-команд.
Любой виртуальный ресурс, необходимый для создания виртуальной машины (compute, network, storage) представлен в виде объекта в libvirt. За процесс описания и создания этих объектов отвечает набор различных XML-файлов.
Детально описывать процесс создания виртуальных сетей и виртуальных хранилищ не имеет особого смысла, так как эта прикладная задача хорошо описана в документации libvirt:

  • Networking
  • Storage

Сама виртуальная машина со всеми подключенными PCI-устройствами в терминологии libvirt называется domain. Это тоже объект внутри libvirt, который описывается отдельным XML-файлом.
Этот XML-файл и является, строго говоря, виртуальной машиной со всеми виртуальными ресурсами — оперативная память, процессор, сетевые устройства, диски и прочее. Часто данный XML-файл называют libvirt XML или dump XML.
Вряд ли найдется человек, который понимает все параметры libvirt XML, однако, это и не требуется, когда есть документация.
В общем случае, libvirt XML для Ubuntu Desktop Guest OS будет довольно прост — 40-50 строчек. Поскольку вся оптимизация производительности описывается также в libvirt XML (NUMA-топология, CPU-топологии, CPU pinning и прочее), для сетевых функций libvirt XML может быть очень сложен и содержать несколько сот строк. Любой производитель сетевых устройств, который поставляет свое ПО в виде виртуальных машин, имеет рекомендованные примеры libvirt XML.

virsh CLI

Утилита virsh — «родная» командная строка для управления libvirt. Основное ее предназначение — это управление объектами libvirt, описанными в виде XML-файлов. Типичными примерами являются операции start, stop, define, destroy и так далее. То есть жизненный цикл объектов — life-cycle management.
Описание всех команд и флагов virsh также доступно в документации libvirt.

virt-install

Еще одна утилита, которая используется для взаимодействия с libvirt. Одно из основных преимуществ — можно не разбираться с XML-форматом, а обойтись лишь флагами, доступными в virsh-install. Второй важный момент — море примеров и информации в Сети.
Таким образом какой бы утилитой вы ни пользовались, управлять гипервизором в конечном счете будет именно libvirt, поэтому важно понимать архитектуру и принципы его работы.

В данной статье мы рассмотрели минимальный набор теоретических знаний, который необходим для работы с виртуальными машинами. Я намеренно не приводил практических примеров и выводов команд, поскольку таких примеров можно найти сколько угодно в Сети, и я не ставил перед собой задачу написать «step-by-step guide». Если вас заинтересовала какая-то конкретная тема или технология, оставляйте свои комментарии и пишите вопросы.

Полезные ссылки

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

Причины использования виртуальной машины

Так как различные типы ОС можно запускать одновременно, проблемы совместимости, могут быть легко исследованы, данные для миграции могут быть легко перенесены простым копированием. Сами операционные системы находящиеся и работающие на виртуальных машинах, также подходят для резервного копирования и последующего восстановлена в другом месте. Операционная система, работающая на виртуальной машине, даже имеющая вредоносное ПО не сможет нанести вреда домашней ОС (основной операционной системе). К частому применению, можно отнести и эмулирования сети.

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

Популярные представители виртуализации компьютера

Наиболее часто используются кроссплатформенные виртуальные машины, к примеру семейство VMware. Бесплатной для личного использования из данной серии является функционально ограниченная VMWare Player, а для корпоративного использования — VMware Server, позволяющие конечному пользователя установить и запустить операционную систему как на Windows, так и на Linux платформах. VMWare Player, как и следует из названия будет только работать с готовыми и конвертированными/перекодированными образами виртуальной машины, но вот создавать не сможет. Для создания виртуальной машины существует VMware Workstation, кроме создания и работы с несколькими виртуальными машинами одновременно, можно вносить изменения в существующий образ. VMWare может использовать не только свои образы, но и конкурирующих продуктов, от Майкрософт, это Virtual PC или Virtual Box от Oracle.

Другим популярным дуэтом виртуальных машин являются Virtual PC и Virtual Server от Майкрософт, различия их в том, что первая предназначена для домашнего использования, а вторая для корпоративного. Данные программы эмуляции компьютера могут работать только под управлением операционных систем Windows и MAC OS.

Что такое виртуальная машина понять совсем не сложно, но какую выбрать?

На самом деле количества программ виртуализации компьютера гораздо больше, а упомянутые, лишь наиболее популярные, да и выбор всегда должен быть по ситуации. Для личного использования лучше подойдёт именно Virtual BOX. Хоть и является бесплатной, в ней заложен достаточный функционал. Осуществлена поддержка и эмуляция всех популярных операционных систем, включая различные архитектуры, доступна возможность использования буфера обмена и интеграция. Собранный образ на Virtual BOX, сможет после конвертации сможет быть запущен на VMWare Player.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *