StratoVirt Design
Обзор
StratoVirt — это легковесная технология виртуализации с открытым исходным кодом, основанная на Linux Kernel-based Virtual Machine (KVM). Она снижает потребление ресурсов памяти и улучшает скорость запуска виртуальных машин (ВМ), сохраняя при этом возможности изоляции и безопасности традиционной виртуализации. StratoVirt может применяться в микросервисных или бессерверных сценариях, таких как вычисления функций, и оставляет интерфейс и дизайн для импорта дополнительных функций, включая стандартную виртуализацию.
Архитектура
На следующей схеме показана базовая архитектура StratoVirt, состоящая из трёх слоёв сверху вниз:
- Внешний API: StratoVirt использует протокол QMP для связи с внешними системами и совместим с OCI. В то же время StratoVirt можно управлять с помощью libvirt.
- Загрузчик: отказ от традиционного режима загрузки BIOS + GRUB для быстрой загрузки в облегчённых сценариях и поддержка загрузки UEFI для стандартных ВМ.
- Эмулированная материнская плата:
- microvm: для повышения производительности и уменьшения поверхности атаки StratoVirt минимизирует симуляцию устройств пользовательского режима. Реализованы устройства моделирования KVM и устройства паравиртуализации, такие как GIC, последовательные, RTC и virtio-mmio устройства;
- стандартная ВМ: реализация загрузки UEFI с использованием сконструированных таблиц ACPI. Устройства virtio-pci и VFIO могут быть подключены для значительного улучшения производительности ввода-вывода.

Функции
- Высокая изоляция на основе аппаратного обеспечения;
- Быстрая холодная загрузка: благодаря минималистичному дизайну microvm может быть запущен в течение 50 мс;
- Низкое использование памяти: StratoVirt работает с объёмом памяти 4 МБ;
- Улучшение ввода-вывода: StratoVirt предлагает нормальную способность ввода-вывода с минималистичной эмуляцией устройств ввода-вывода;
- Совместимость с OCI: StratoVirt работает с контейнерами isula и kata и может быть идеально интегрирован в экосистему Kubernetes;
- Поддержка нескольких платформ: полная поддержка платформ Intel и Arm;
- Расширяемость: StratoVirt оставляет интерфейс и дизайн для добавления дополнительных функций, даже расширения до поддержки стандартной виртуализации;
- Безопасность: менее 55 системных вызовов во время работы.
Реализация
Работающая архитектура
- VM StratoVirt является независимым процессом в Linux. Процесс имеет три типа потоков: основной поток, поток VCPU и поток ввода-вывода:
- Основной поток представляет собой цикл для асинхронного сбора и обработки событий от внешних модулей, таких как поток VCPU;
- Каждый VCPU имеет поток для обработки ловушечных событий этого VCPU;
- Потоки ввода-вывода могут быть настроены для устройств ввода-вывода для улучшения производительности ввода-вывода.
Ограничения
- Поддерживается только операционная система Linux. Рекомендуемая версия ядра — 4.19;
- В качестве клиентской операционной системы поддерживается только Linux, рекомендуемая версия ядра — 4.19;
- StratoVirt полностью протестирован на openEuler;
- Поддерживает максимум 254 процессора.
Комментарий ( 0 )