Suicide
01.02.2022, 00:15
Компания Amazon опубликовала (https://github.com/firecracker-microvm/firecracker/releases/tag/v1.0.0) значительный выпуск монитора виртуальных машин (VMM, Virtual Machine Monitor) Firecracker 1.0.0 (https://firecracker-microvm.io/), рассчитанного на запуск виртуальных машин с минимальными накладными расходами. Firecracker является ответвлением от проекта CrosVM (https://chromium.googlesource.com/chromiumos/platform/crosvm/), используемого компанией Google для запуска приложений Linux (https://www.opennet.ru/opennews/art.shtml?num=48563) и Android (https://www.opennet.ru/opennews/art.shtml?num=50748) в ChromеOS. Разработка Firecracker ведётся в подразделении Amazon Web Services с целью повышения производительности и эффективности работы платформ AWS Lambda и AWS Fargate. Код Firecracker написан на языке Rust и распространяется (https://github.com/firecracker-microvm/firecracker) под лицензией 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 (https://github.com/firecracker-microvm/firecracker-containerd)).
https://www.opennet.ru/opennews/pics_base/0_1643648286.png (https://raw.githubusercontent.com/firecracker-microvm/firecracker/main/docs/images/firecracker_host_integration.png)
Выполняемое внутри виртуальных машин программное окружение урезано и содержит только минимальный набор компонентов. Для экономии памяти, сокращения времени запуска и повышения безопасности в окружениях запускается урезанное ядро Linux (поддерживаются (https://github.com/firecracker-microvm/firecracker/blob/main/docs/kernel-policy.md) ядра 4.14 и 5.10), из которого исключено всё лишнее, в том числе сокращена функциональность и удалена поддержка устройств.
При запуске с урезанным ядром дополнительный расход памяти по сравнению с контейнером составляет менее 5 Мб. Задержка с момента запуска microVM до начала выполнения приложения заявлена (https://github.com/firecracker-microvm/firecracker/blob/main/SPECIFICATION.md) в пределах от 6 до 60 мс (в среднем 12 мс), что позволяет (https://github.com/firecracker-microvm/firecracker/blob/main/docs/design.md) порождать новые виртуальные машины с интенсивностью до 180 окружений в секунду на хосте с 36 ядрами CPU.
Для управления виртуальными окружениями в пространстве пользователя выполняется фоновый процесс Virtual Machine Manager, предоставляющий RESTful API (https://github.com/firecracker-microvm/firecracker/blob/main/docs/api_requests), реализующий такие функции, как настройка, запуск и остановка microVM, выбор шаблонов CPU (C3 или T2), определение числа виртуальных процессоров (vCPU) и размера памяти, добавление сетевых интерфейсов и дисковых разделов, задание ограничений на пропускную способность и интенсивность выполнения операций, предоставление дополнительной памяти и мощностей CPU в случае нехватки ресурсов.
Кроме использования в качестве более глубокого уровня изоляции для контейнеров Firecracker также подходит для обеспечения работы FaaS-систем (Функция как услуга (https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%BA% D0%B0%D0%BA_%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B0)) , предлагающих модель бессерверных вычислений, разработка при которой ведётся на уровне подготовки набора небольших отдельных функций, каждая их которых обеспечивает обработку определённого события и рассчитана на обособленную работу без привязки к окружению (stateless, результат не зависит от прошлого состояния и содержимого ФС). Функции запускаются только при возникновении необходимости и сразу после обработки события завершают свою работу. FaaS-платформа сама размещает подготовленные функции, организует управление и обеспечивает масштабирование окружений, необходимых для выполнения подготовленных функций.
Дополнительно можно отметить публикацию (https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v21.0) компанией Intel гипервизора Cloud Hypervisor 21.0 (https://github.com/intel/cloud-hypervisor), построенного на основе компонентов совместного проекта Rust-VMM (https://github.com/rust-vmm), в котором кроме Intel также участвуют компании Alibaba, Amazon, Google и Red Hat. Rust-VMM написан на языке Rust и позволяет создавать специфичные для определённых задач гипервизоры. Cloud Hypervisor является одним из таких гипервизоров, который предоставляет высокоуровневый монитор виртуальных машин (VMM), работающий поверх KVM и оптимизированный для решения задач, свойственных для облачных систем. Код проекта доступен (https://github.com/intel/cloud-hypervisor) под лицензией 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).
31.01.2022
https://www.opennet.ru/opennews/art.shtml?num=56616
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 (https://github.com/firecracker-microvm/firecracker-containerd)).
https://www.opennet.ru/opennews/pics_base/0_1643648286.png (https://raw.githubusercontent.com/firecracker-microvm/firecracker/main/docs/images/firecracker_host_integration.png)
Выполняемое внутри виртуальных машин программное окружение урезано и содержит только минимальный набор компонентов. Для экономии памяти, сокращения времени запуска и повышения безопасности в окружениях запускается урезанное ядро Linux (поддерживаются (https://github.com/firecracker-microvm/firecracker/blob/main/docs/kernel-policy.md) ядра 4.14 и 5.10), из которого исключено всё лишнее, в том числе сокращена функциональность и удалена поддержка устройств.
При запуске с урезанным ядром дополнительный расход памяти по сравнению с контейнером составляет менее 5 Мб. Задержка с момента запуска microVM до начала выполнения приложения заявлена (https://github.com/firecracker-microvm/firecracker/blob/main/SPECIFICATION.md) в пределах от 6 до 60 мс (в среднем 12 мс), что позволяет (https://github.com/firecracker-microvm/firecracker/blob/main/docs/design.md) порождать новые виртуальные машины с интенсивностью до 180 окружений в секунду на хосте с 36 ядрами CPU.
Для управления виртуальными окружениями в пространстве пользователя выполняется фоновый процесс Virtual Machine Manager, предоставляющий RESTful API (https://github.com/firecracker-microvm/firecracker/blob/main/docs/api_requests), реализующий такие функции, как настройка, запуск и остановка microVM, выбор шаблонов CPU (C3 или T2), определение числа виртуальных процессоров (vCPU) и размера памяти, добавление сетевых интерфейсов и дисковых разделов, задание ограничений на пропускную способность и интенсивность выполнения операций, предоставление дополнительной памяти и мощностей CPU в случае нехватки ресурсов.
Кроме использования в качестве более глубокого уровня изоляции для контейнеров Firecracker также подходит для обеспечения работы FaaS-систем (Функция как услуга (https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%BA% D0%B0%D0%BA_%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B0)) , предлагающих модель бессерверных вычислений, разработка при которой ведётся на уровне подготовки набора небольших отдельных функций, каждая их которых обеспечивает обработку определённого события и рассчитана на обособленную работу без привязки к окружению (stateless, результат не зависит от прошлого состояния и содержимого ФС). Функции запускаются только при возникновении необходимости и сразу после обработки события завершают свою работу. FaaS-платформа сама размещает подготовленные функции, организует управление и обеспечивает масштабирование окружений, необходимых для выполнения подготовленных функций.
Дополнительно можно отметить публикацию (https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v21.0) компанией Intel гипервизора Cloud Hypervisor 21.0 (https://github.com/intel/cloud-hypervisor), построенного на основе компонентов совместного проекта Rust-VMM (https://github.com/rust-vmm), в котором кроме Intel также участвуют компании Alibaba, Amazon, Google и Red Hat. Rust-VMM написан на языке Rust и позволяет создавать специфичные для определённых задач гипервизоры. Cloud Hypervisor является одним из таких гипервизоров, который предоставляет высокоуровневый монитор виртуальных машин (VMM), работающий поверх KVM и оптимизированный для решения задач, свойственных для облачных систем. Код проекта доступен (https://github.com/intel/cloud-hypervisor) под лицензией 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).
31.01.2022
https://www.opennet.ru/opennews/art.shtml?num=56616