намекать:
Чтобы узнать больше об интернет-технологиях и консультациях, посетите официальный аккаунт: Flowlet.
Технология виртуализации является краеугольным камнем облачных вычислений. Технология виртуализации в основном состоит из трех ключевых технологий: виртуализация ЦП, виртуализация памяти и виртуализация ввода-вывода. Поскольку виртуализация ввода-вывода является техническим пересечением вычислений, сетей и систем хранения данных, важность и сложность виртуализации ввода-вывода очевидны.
Периферийные ресурсы ввода-вывода ограничены, и один ресурс ввода-вывода может быть разделен между несколькими виртуальными машинами с помощью технологии виртуализации ввода-вывода (IOV: виртуализация ввода-вывода).
В этой статье будет подробно объяснена классификация технологии виртуализации и два способа реализации виртуализации ввода-вывода: эмуляция ввода-вывода (эмуляция устройства) и сквозная передача ввода-вывода (сквозная передача устройства).
в :
Симуляцию ввода-вывода (эмуляцию устройства) можно разделить на: полную виртуализацию ввода-вывода (I/O Full-virtualization) и паравиртуализацию ввода-вывода (I/O Para-virtualization);
Сквозная передача ввода-вывода (сквозная передача устройства) может быть разделена на: сквозную передачу устройства (прямое назначение ввода-вывода) и сквозную передачу SR-IOV;
Эта статья в основном разделена на следующие части:
1. Введение в виртуализацию
Часть I. Виртуализация уровня аппаратной абстракции
Часть II. Виртуализация уровня операционной системы
Часть III. Виртуализация функционального уровня библиотеки.
Часть IV. Виртуализация уровня языка программирования
2. Введение в VMM
Часть I: Тип-1 (модель гипервизора/голое железо)
Часть II: Тип 2 (хостовая модель/хостинг)
Часть III: Тип-3/Тип-1,5 (Гибридная модель/Гибрид)
3, модель ввода-вывода
Часть I. Полная виртуализация ввода-вывода
Часть II: Паравиртуализация ввода-вывода
4, прямое подключение ввода-вывода
Часть I. Сквозное подключение устройства
Часть II. Сквозной переход SR-IOV
1. Введение в виртуализацию
В компьютерной системе снизу вверх ее можно разделить на: аппаратный уровень, уровень операционной системы, уровень библиотеки функций и уровень приложений.
Любой из четырех вышеперечисленных уровней может быть виртуализирован. Когда определенный уровень виртуализируется, интерфейс между этим уровнем и предыдущим уровнем не меняется, а меняется только реализация этого уровня. Виртуализация вышеупомянутых 4 уровней может сформировать следующие 4 метода виртуализации:
Виртуализация на уровне абстракции оборудования относится к реализации виртуальных машин через уровень абстракции виртуального оборудования, который представляет операционную систему виртуальной машины с уровнем абстракции оборудования, который такой же или похожий на физическое оборудование. Его также называют уровнем набора команд. виртуализация.
Технология виртуализации, реализованная на этом уровне, может виртуализировать всю компьютерную систему, то есть виртуализировать физическую компьютерную систему в одну или несколько виртуальных машин. Каждая виртуальная машина имеет собственное виртуальное оборудование (например, ЦП, память, устройства и т. д.), обеспечивающее независимую среду выполнения виртуальной машины.
Операционные системы в каждой виртуальной машине могут быть совершенно разными, а их среды выполнения полностью независимы. Поскольку операционная система виртуальной машины может видеть уровень аппаратной абстракции, поведение операционной системы виртуальной машины ничем не отличается от поведения на физической платформе.
Например: KVM, VMware Workstation, VMware vSphere и Microsoft Hyper-v относятся к виртуализации уровня абстракции оборудования.
Виртуализация на уровне операционной системы означает, что ядро операционной системы может предоставлять несколько изолированных экземпляров пользовательского режима. Эти экземпляры пользовательского режима (также известные как контейнеры) для своих пользователей подобны реальному компьютеру со своими независимыми файловыми системами, стеками сетевых протоколов, системными настройками и библиотечными функциями.
Поскольку это виртуализация, обеспечиваемая ядром операционной системы, виртуализация на уровне операционной системы обычно очень эффективна. Она требует очень небольших ресурсов виртуализации и накладных расходов на производительность и не требует специальной аппаратной поддержки. Но его гибкость относительно невелика, и операционная система каждого контейнера и операционная система хоста обычно должны быть одной и той же операционной системой.
Кроме того, хотя виртуализация на уровне операционной системы обеспечивает относительно сильную изоляцию между экземплярами пользовательского режима, ее степень детализации является относительно грубой.
Например: Docker и Containered оба относятся к виртуализации уровня операционной системы.
Операционная система обычно предоставляет набор общих служб другим приложениям в виде библиотечных функций, таких как службы операций с файлами, службы операций со временем и т. д. Эти библиотечные функции могут скрывать некоторые детали внутри операционной системы, упрощая программирование приложений.
Различные функции библиотеки операционной системы имеют разные служебные интерфейсы. Например, служебный интерфейс Linux отличается от интерфейса Windows. Виртуализация на уровне функций библиотеки виртуализирует сервисный интерфейс функций библиотеки уровня приложения операционной системы, так что приложения могут беспрепятственно работать в разных операционных системах без изменений, тем самым улучшая совместимость между системами.
Например, Wine имитирует интерфейс функций библиотеки Windows в Linux, позволяя приложению Windows нормально работать в Linux.
Виртуальная машина на уровне языка программирования называется виртуальной машиной языкового уровня, например JVM (виртуальная машина Java). Этот тип виртуальной машины выполняет задания на уровне процесса. Разница в том, что эти программы ориентированы не на архитектуру, существующую на оборудовании, а на виртуальную архитектуру.
Коды этих программ сначала компилируются в промежуточные коды, специфичные для их виртуальной архитектуры, а затем поддержка времени выполнения виртуальной машины переводит промежуточные коды на машинный язык оборудования для выполнения.
2. Введение в VMM
В этой статье мы обсуждаем виртуализациюдааппаратное обеспечениеслой абстракциивиртуализация。Прямо сейчас:уровень набора командвиртуализация,да был впервые предложен и изучен из-добрый технология виртуализации,На данный момент существует множество добрых технологий и конкретных планов внедрения.,существоватьпредставлятьперед ними,Необходимо сначала понять путь, по которому можно добиться виртуализации на уровне системы.
Каждая виртуальная машина имеет собственное виртуальное оборудование. Благодаря моделированию уровня виртуализации операционная система виртуальной машины считает, что она по-прежнему работает как эксклюзивная машина. Этот уровень виртуализации называется монитором виртуальной машины (монитор виртуальной машины). , ВММ).
Виртуализацию физических ресурсов с помощью VMM можно свести к трем основным задачам: виртуализация процессоров, виртуализация памяти и виртуализация ввода-вывода.
Текущий основной VMM (монитор виртуальных машин) на уровне предприятия в основном делится на три типа: тип 1 (модель гипервизора), тип 2 (модель хоста), тип 3/тип 1.5 (гибридная модель).
Термин «гипервизор» появился в 1970-х годах. На заре компьютерной эры операционные системы назывались супервизорами, и поэтому операционные системы, которые могли запускать другие операционные системы, назывались гипервизорами.
В модели гипервизора VMM можно рассматривать как полноценную операционную систему. Однако, в отличие от традиционных операционных систем, VMM предназначена для виртуализации и, следовательно, также имеет функции виртуализации. С архитектурной точки зрения, во-первых, все физические ресурсы, такие как процессоры, память и устройства ввода-вывода, принадлежат VMM. Поэтому VMM берет на себя ответственность за управление физическими ресурсами, во-вторых, VMM необходимо предоставлять виртуальные машины для работы. клиентов — операционная система машины, поэтому VMM также отвечает за создание виртуальных сред и управление ими.
Поскольку VMM имеет как функцию управления, так и функцию виртуализации физических ресурсов, эффективность виртуализации физических ресурсов будет выше. Хотя модель гипервизора обладает эффективностью виртуализации, у нее также есть свои недостатки. Поскольку VMM полностью владеет физическими ресурсами, VMM необходимо управлять физическими ресурсами, включая драйверы устройств.
Мы знаем, что объем работы по разработке драйверов устройств огромен. Поэтому это большая проблема для модели гипервизора. Фактически, в реальных продуктах VMM, основанный на модели гипервизора, обычно выборочно выбирает некоторые устройства ввода-вывода для поддержки в зависимости от позиционирования продукта, а не поддерживает все устройства ввода-вывода.
Типичным примером этой модели является VMware vSphere для корпоративных приложений.
В модели хостинга физические ресурсы управляются операционной системой хоста. Операционная система хоста — это традиционная операционная система, такая как Windows, Linux и т. д. Эти традиционные операционные системы не предназначены для виртуализации, поэтому они сами не имеют функций виртуализации. Фактические функции виртуализации предоставляются VMM.
VMM обычно представляет собой независимый модуль ядра операционной системы хоста. Некоторые реализации также включают процессы пользовательского режима, такие как модель устройства пользовательского режима, отвечающая за виртуализацию ввода-вывода. VMM получает ресурсы, вызывая службы операционной системы хоста для виртуализации процессоров, памяти и устройств ввода-вывода. После того как VMM создает виртуальную машину, он обычно участвует в планировании как процесс операционной системы хоста.
Преимущества и недостатки хост-модели прямо противоположны преимуществам и недостаткам модели гипервизора. Самым большим преимуществом хост-модели является то, что она может полностью использовать драйверы устройств существующей операционной системы. VMM не требует повторной реализации драйверов для различных устройств ввода-вывода и может сосредоточиться на виртуализации физических ресурсов. Учитывая большое разнообразие устройств ввода-вывода и постоянно меняющуюся рабочую нагрузку по разработке драйверов устройств, это преимущество имеет большое значение. Кроме того, модель хоста также может использовать другие функции операционной системы хоста, такие как планирование и управление питанием, которые можно использовать напрямую без необходимости повторной реализации VMM.
Конечно, у хостовой модели также есть недостатки. Поскольку физические ресурсы контролируются хостовой операционной системой, VMM должен вызывать службы хостовой операционной системы для получения ресурсов для виртуализации, и эти системные службы не учитывают поддержку виртуализации. начало их проектирования и разработки. Таким образом, это повлияет на эффективность и функциональность виртуализации VMM.
Типичными примерами этой модели являются KVM, QEMU, VirtualBox и VMware Workstation.
Гибридная модель представляет собой смесь двух вышеупомянутых моделей. VMM по-прежнему находится на самом низком уровне и владеет всеми физическими ресурсами. В отличие от режима гипервизора, VMM активно отказывается от контроля над большинством устройств ввода-вывода и передает их привилегированной операционной системе, работающей на привилегированной виртуальной машине. Соответственно, обязанности по виртуализации VMM также разделяются. Виртуализация процессора и памяти по-прежнему выполняется VMM, а виртуализация ввода-вывода выполняется при сотрудничестве VMM и привилегированной операционной системы. Таким образом, модуль модели устройства находится в привилегированной операционной системе и взаимодействует с VMM через соответствующие механизмы связи.
Гибридная модель сочетает в себе преимущества двух вышеупомянутых моделей. VMM может использовать существующие драйверы устройств ввода-вывода операционной системы и не требует дополнительной разработки. VMM напрямую управляет физическими ресурсами, такими как процессоры и память, а эффективность виртуализации относительно высока.
Конечно, у гибридных моделей есть и недостатки. Поскольку привилегированная операционная система работает на виртуальной машине, когда привилегированная операционная система требуется для предоставления услуг, VMM необходимо переключиться на привилегированную операционную систему, что создает издержки переключения контекста. При частом переключении накладные расходы на переключение контекста приведут к значительному снижению производительности. Из соображений производительности многие функции по-прежнему необходимо реализовать в VMM, например планировщик и управление питанием.
Типичным примером этой модели является Xen.
3, модель ввода-вывода
I/O моделирование(Device эмуляция) в основном делится на: ввод-вывод Полная виртуализация (ввод-вывод Полная виртуализация)и I/O Паравиртуализация (ввод-вывод Para-virtualization)2 вид структуры.
Объясняя это 2 добрый I/O Прежде чем моделировать архитектуру, давайте взглянем на текущую мейнстримную тенденцию. 2 добрый VMM Как работает моделирование устройства в Модельиз:
существовать VMM Комплексное оборудованиемоделированиедасуществовать VMware workstations Общие методы реализации моделирования оборудованияиз. Как показано на рисунке выше, существует данная модель VMM. В том числе различныедобрыйвиртуальная машина Операционная Система может совместно использовать публичные устройства (например: виртуальные диски, виртуальные сетевые адаптеры и т.п.) моделирование.
Как показано на картинке выше,Вторая добрая архитектура называется моделированием устройств в пользовательском пространстве. Как следует из названия,Не встроить устройство моделирования приезжать VMM , а дасуществовать реализуется в пользовательском процессе. КЕМУ Обеспечивает моделирование оборудования и используется большим количеством независимых Используется VMM (виртуальная машина на основе ядра [KVM]).
Это преимущество моделиза да, поскольку моделирование устройства не зависит от ВММ, следовательно, может существовать VMM Совместное использование моделирующего оборудования также можно осуществить без изменений. VMM Одновременно выполняем любые виды моделирования оборудования.
Этот метод использует программное моделирование реального аппаратного обеспечения. обеспечениеоборудование Все функции устройства или структуры шины (такие как перечисление устройств, идентификация, прерывание и DMA) и т. д. могут существовать. VMM серединамоделирование。И правильновиртуальная МашинаLook приезжатьизда Полнофункциональная, «настоящая» и заппаратная. Программное обеспечение Фактически, обычно требуется, чтобы программное обеспечение на хост-компьютере взаимодействовало с клиентом для перехвата данных. I/O Устройство из каждого доброго запроса, а затем посредством программного моделирования реальное изаппаратное безопасность Например: QEMU/KVM. Виртуализация QEMU Вы можете моделировать каждый добрый тип сетевой карты.
Этот добрый подход очень прозрачен для клиента и не требует рассмотрения аппаратного обеспечения. В случае программного обеспечения проприетарный драйвер не требуется, поэтому никаких изменений не требуется. Операционная система。нода,Модель Quanxu имеет большой недостаток.,То есть производительность недостаточно высока,Есть две основные причины:
существовать KVM-qemu Модельиз Виртуализация,моделирование IO режим виртуализации из Максимальные накладные расходы существовали в режиме процессора из переключения: в том числе из Guest OS приезжать VMM переключение и из режима ядра VMM приезжатьпрофиль пользователяиз IO моделирование переключения между процессами.
существоватьэтотдобрый Виртуализация,Клиентская операционная система может обнаружить собственную виртуальную машину.,I/O Извиртуализация осуществляется путем совместного моделирования внешнего и внутреннего драйверов.
Фронтенд/бэкэнд архитектура, также известная как “Split I/O», то есть традиционный драйвер ввода-вывода разделен на две части. Одна часть расположена внутри гостевой ОС и является драйвером устройства (фронтенд). Этот драйвер не имеет прямого доступа к устройству. Передняя часть -end драйвер отвечает за получение входных данных от других модулей, запрос операции /O и передачу виртуальной. Механизм канала событий между машиной и из перенаправляет запрос ввода-вывода внутреннему драйверу. Внутренний драйвер может напрямую вызывать драйвер физического устройства ввода-вывода для доступа к аппаратному обеспечению. обеспечение. После того, как серверная часть существования завершит обработку запроса, она асинхронно уведомит внешний интерфейс.
По сравнению с полностью виртуальной моделью VMM Необходимо перехватывать каждый I/O Запрос и множественное переключение контекста из режима, этот добрый, основанный на запросе/транзакции из режима, может значительно снизить частоту переключения контекста и уменьшить накладные расходы. Но это добрый I/O Модель имеет большой недостаток, который необходимо доработать. Операция системаядро и драйверы,Поэтому будут проблемы с переносимостью и применимостью.,что приводит к ограниченному использованию.
исуществовать Нет同извиртуализация机制середина,Процесс и методы реализации также различны.,Например: VMware из VMXNET2, VMXNET3.,KVM серединаиз virtio。
Половина Виртуализацияиз virtio да IBM Набор решений был предложен в 2005 году. После более чем десяти лет разработки его движущая сила в основном была интегрирована. система встроена в ядро, поэтому virtio также стал I/O Половина виртуализациииз фактического стандарта.
4, прямое подключение ввода-вывода
Сквозная передача ввода-вывода (сквозная передача устройства) может быть разделена на: сквозную передачу устройства (прямое назначение ввода-вывода) и сквозную передачу SR-IOV;
Программная реализация I/O виртуализацияизтехнологиясередина,всеизвиртуальная машины распределены на физической платформе изаппаратное обеспечениеоборудование Если физические условия хорошие, то имеется достаточное количество изаппаратного оборудования. программного обеспечения, вы можете рассмотреть возможность создания каждой виртуальной машина занимает физическое устройство, что, несомненно, улучшит производительность системы.
Назначьте устройство напрямую в виртуальную машина,Разрешить виртуальной машине прямой доступ к физическому устройству без использования VMM или перехвата VMM.,Это прямая технология оборудования.
существоватьоборудованиепрямой Модельсередина,виртуальная машина Операционная система может напрямую иметь права управления доступом к определенному физическому устройству, VMM Больше не вмешивайтесь в операции доступа. Таким образом, модель может значительно улучшить производительность оборудования виртуализации и снизить VMM Программа отличается сложностью, проста в реализации и не требует доработок. Операционная система, обеспечивающая высокую доступность.
Прямая модель устройства, хотя существует производительность по сравнению с программным способом из двух добрых входов/выходов. Оборудование было значительно усовершенствовано, но его использование имеет определенные ограничения.
Потому что это должно Модель Часть физического оборудования назначается непосредственно виртуальной машине.,другойвиртуальная машина не может использовать устройство из-за проблемы на другой виртуальной машине Если машине необходим доступ к устройству, она не может удовлетворить спрос. Решение состоит в том, чтобы полностью удовлетворить спрос физическими ресурсами или с помощью аппаратного обеспечения. технология виртуализации виртуализирует множество IO Устройство (по производительности очень близкое к физическому устройству) для использования несколькими виртуальными машинами (аппаратное обеспечение должно его поддерживать).
существоватьI/O В прямой технологии физическое устройство напрямую закрепляется за виртуальным устройством. машина, хотя и приближаюсь к прямому доступу к устройству из I/O производительность. Но дапотому чтодругойвиртуальная машина не может использовать устройство, жертвуя масштабируемостью системы.
Поэтому в сентябре 2007 года PCI-SIG Официально выпущенный «Сингл» Root I/O Virtualization and Sharing Specification Revision 1.0》Спецификация, определяющая несколько System Images Как поделиться PCI Интерфейс из I/O аппаратное обеспечение оборудования.(здесь изоборудование может да PCIe Сетевая карта, одна штука PCIe SSD и т. д).
Виртуализация ввода-вывода с единым корнем SR-IOV. В существованииSR-IOV определены два функциональных типа:
PF (тип физической функции), отвечающий за управление. SR-IOV Устройство со специальным драйвером, его основная функция — обеспечить функцию доступа к устройству и глобальную настройку общего ресурса, виртуальную функцию. Машина Все операции, влияющие на состояние устройства, должны быть переданы PF Запрос выполнен.
Каждый PF может обнаруживаться и управляться физическим хостом. Кроме того, с помощью физического хоста PF Доступ к драйверу возможен напрямую. PF все ресурсы и для всех VF И настраиваем его, например: настройки VF количество и запустить или остановить его глобально.
VF (тип виртуальной функции), облегченный PCIe Функция, включающая три аспекта: виртуальная машина Операционная система обеспечивает функции отправки и получения данных виртуальной сетевой карты; PF Общайтесь и выполняйте глобальные связанные операции. потому что VF ресурсы являются лишь подмножеством ресурсов устройства, поэтому VF Драйвер имеет ограниченный доступ к ресурсам, а доступ к другим ресурсам должен осуществляться через PF Заканчивать.
один или несколько VF поделиться PF,его установка драйверасуществоватьвиртуальная машинаначальство,Когда VF назначен виртуальной машине,виртуальная машину можно использовать как обычно PCIe Инициализация и настройка устройства ВФ. если PF представляет собой физическую сетевую карту, тогда VF нодаодинвиртуальная Машина может видеть и использовать виртуальную сетевую карту.
(Конец текста)
end
Reference:
Перепечатайте и внесите свой вклад
При перепечатке статьи просьба указывать: Публичный аккаунт источника статьи: Flowlet.