Virtio

Бесплатно
Открытый исходный код
Linux

Сайт: virtio-fs.gitlab.io

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

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

  • Паравиртуализация: предоставляет эффективный и стандартизованный интерфейс, не полагающийся на полную эмуляцию аппаратуры.
  • Унифицированные устройства: описывает множество типов устройств (сеть, блочные устройства, консоль, rng, SCSI, ввод-вывод и др.) через общий механизм.
  • Механизм очередей (virtqueue): использует кольцевые буферы для обмена дескрипторами буферов между гостем и хостом, обеспечивая высокопроизводительную передачу данных.
  • Уведомления и события: реализует недорогие уведомления между гостевой системой и гипервизором для обработки поступающих запросов и завершения операций.
  • Конфигурация и возможности: поддерживает обмен конфигурационными параметрами и объявление возможностей устройства для согласования функций между сторонами.
  • Совместимость и расширяемость: допускает расширения и опции для новых функций при сохранении базовой совместимости драйверов.
  • Оптимизации производительности: включает техники, такие как использование крупных страниц, минимизация копирования данных и интеграция с механизмами ускорения гипервизора для снижения накладных расходов.
  • Безопасность и изоляция: проектируется с учётом требований изоляции между гостями и хостом, ограничивая привилегии виртуальных устройств и контролируя доступ к ресурсам.
Подробнее