02.07.2022

Компания Amazon опубликовала систему виртуализации Firecracker 1.0

Компания Amazon опубликовала значительный выпуск монитора виртуальных машин (VMM, Virtual Machine Monitor) Firecracker 1.0.0, рассчитанного на запуск виртуальных машин с минимальными накладными расходами. Firecracker является ответвлением от проекта CrosVM, используемого компанией Google для запуска приложений Linux и Android в ChromеOS. Разработка Firecracker ведётся в подразделении Amazon Web Services с целью повышения производительности и эффективности работы платформ AWS Lambda и AWS Fargate. Код Firecracker написан на языке Rust и распространяется под лицензией Apache 2.0.

Firecracker предлагает легковесные виртуальные машины, именуемые microVM. Для полноценной изоляции microVM применяются технологии аппаратной виртуализации на базе гипервизора KVM, но при этом обеспечивается производительность и гибкость на уровне обычных контейнеров. Система доступна для архитектур x86_64 и ARM64, и протестирована на CPU семейства Intel Skylake, Intel Cascade Lake, AMD Zen2 и ARM64 Neoverse N1. Предоставляются средства для интеграции Firecracker в runtime систем контейнерной изоляции, таких как Kata Containers, Weaveworks Ignite и containerd (предоставляется runtime firecracker-containerd).

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

При запуске с урезанным ядром дополнительный расход памяти по сравнению с контейнером составляет менее 5 Мб. Задержка с момента запуска microVM до начала выполнения приложения заявлена в пределах от 6 до 60 мс (в среднем 12 мс), что позволяет порождать новые виртуальные машины с интенсивностью до 180 окружений в секунду на хосте с 36 ядрами CPU.

Для управления виртуальными окружениями в пространстве пользователя выполняется фоновый процесс Virtual Machine Manager, предоставляющий RESTful API, реализующий такие функции, как настройка, запуск и остановка microVM, выбор шаблонов CPU (C3 или T2), определение числа виртуальных процессоров (vCPU) и размера памяти, добавление сетевых интерфейсов и дисковых разделов, задание ограничений на пропускную способность и интенсивность выполнения операций, предоставление дополнительной памяти и мощностей CPU в случае нехватки ресурсов.

Кроме использования в качестве более глубокого уровня изоляции для контейнеров Firecracker также подходит для обеспечения работы FaaS-систем (Функция как услуга), предлагающих модель бессерверных вычислений, разработка при которой ведётся на уровне подготовки набора небольших отдельных функций, каждая их которых обеспечивает обработку определённого события и рассчитана на обособленную работу без привязки к окружению (stateless, результат не зависит от прошлого состояния и содержимого ФС). Функции запускаются только при возникновении необходимости и сразу после обработки события завершают свою работу. FaaS-платформа сама размещает подготовленные функции, организует управление и обеспечивает масштабирование окружений, необходимых для выполнения подготовленных функций.

Дополнительно можно отметить публикацию компанией Intel гипервизора Cloud Hypervisor 21.0, построенного на основе компонентов
совместного проекта Rust-VMM, в котором кроме Intel также участвуют компании Alibaba, Amazon, Google и Red Hat. Rust-VMM написан на языке Rust и позволяет создавать специфичные для определённых задач гипервизоры. Cloud Hypervisor является одним из таких гипервизоров, который предоставляет высокоуровневый монитор виртуальных машин (VMM), работающий поверх KVM и оптимизированный для решения задач, свойственных для облачных систем. Код проекта доступен под лицензией Apache 2.0.

Cloud Hypervisor cфокусирован на запуске современных дистрибутивов Linux с использованием паравиртуализированных устройств на базе virtio. Из ключевых задач упоминается: высокая отзывчивость, низкое потребление памяти, высокая производительность, упрощение настройки и сокращение возможных векторов для атак. Поддержка эмуляции сведена к минимуму и ставка делается на паравиртуализацию. Поддерживаются архитектуры x86_64 и AArch64. Из гостевых систем пока поддерживается только 64-разрядные сборки Linux. Настройка CPU, памяти, PCI и NVDIMM производится на этапе сборки. Предусмотрена возможность миграции виртуальных машин между серверами.

В новой версии Cloud Hypervisor реализована возможность эффективной локальной live-миграции, которую можно использовать для обновления окружений на лету (Live Upgrade). Новый режим отличается отключением сравнения памяти исходного и целевого окружения, что позволяет снизить время операции обновления на лету с 3 секунд до 50 мс. В качестве рекомендованного заявлено ядро Linux 5.15 (в 5.14 имеются проблемы с virtio-net).

Источник.