Выпуск MirageOS 3.5, платформы для запуска приложений поверх гипервизора

Состоялся релиз операционной системы MirageOS 3.5, позволяющая формировать операционные системы одного приложения, в которых приложение поставляется как самодостаточный «unikernel», способный выполняться без применения операционных систем, отдельного ядра ОС и каких-либо прослоек. Для разработки приложений применяется язык OCaml. Код проекта распространяется под свободной лицензией ISC.

Вся низкоуровневая функциональность, свойственная операционной системе, реализована в форме библиотеки, прикрепляемой к приложению. Приложение может быть разработано в любой ОС, после чего компилируется в специализированное ядро (концепция unikernel), которое может запускаться напрямую поверх гипервизоров Xen, KVM, BHyve и VMM (OpenBSD), поверх мобильных платформ, в форме процесса в POSIX-совместимом окружении или в облачных окружениях Amazon Elastic Compute Cloud и Google Compute Engine.

Сгенерированное окружение не содержит ничего лишнего и взаимодействует непосредственно с гипервизором без драйверов и системных прослоек, что позволяет добиться существенного снижения накладных расходов и повышения безопасности. Работа с MirageOS сводится к трём стадиям: подготовка конфигурации с определением используемых в окружении OPAM-пакетов, сборка окружения и запуск окружения. Runtime для обеспечения работы поверх Xen основан на урезанном ядре Mini-OS, а для других гипервизоров и систем на базе ядра Solo5.

Несмотря на то, что приложения и библиотеки формируются на высокоуровневом языке OCaml, итоговые окружения демонстрируют достаточно неплохую производительность и минимальный размер (например, DNS-сервер занимает всего 200 Кб). Упрощается и сопровождение окружений, так как при необходимости обновления программы или изменения конфигурации, достаточно создать и запустить новое окружение. Поддерживается несколько десятков библиотек на языке OCaml для выполнения сетевых операций (DNS, SSH, OpenFlow, HTTP, XMPP и т.п.), работы с хранилищами и обеспечения параллельной обработки данных.

Основные новшества:

  • Добавлена библиотека mirage-kv с реализацией хранилища данных в формате ключ/значение, размещаемого в оперативной памяти. В отличие от ранее доступного модуля хранения mirage-fs в mirage-kv обеспечена поддержка операций записи и возможность версионирования и создания ответвлений хранилища с использованием протокола Git. Модуль используется для разработки файловой системы wodan, которая сможет применяться поверх Flash;
  • Расширены API библиотек mirage-clock (системные часы), mirage-protocols (сетевые протоколы) и mirage-net (сетевые устройства);
  • Повышено качестве предоставляемого генератора псевдослучайных чисел;
  • В реализации стека TCP/IP добавлена поддержка пересборки фрагментов пакетов IPv4 (fragment reassembly). Для TCP добавлена поддержка keepalive. Код для инкапсулирования/декапсулирования Ethernet и реализация протокола определения адресов (ARP) вынесены в отдельные OPAM-пакеты;
  • Добавлена поддержка запуска в качестве unikernel высокопроизводительного http-сервера httpaf;
  • В пакете mirage-net, предоставляющем средства для низкоуровневого взаимодействия с сетевыми устройствами, реализованы бэкенды xen, solo5, unix, macos и vnetif;
  • В runtime на базе Solo5 добавлена поддержка работы поверх гипервизоров FreeBSD bhyve и OpenBSD VMM, обеспечена поддержка ARM64 и KVM, добавлена возможность работы с использованием микроядра GenodeOS;
  • Большинство пакетов переведены на использование сборочной системы
    dune (jbuilder). Всего для MirageOS подготовлено более 100 OPAM-пакетов;
  • Добавлена возможность прикрепления пакетов-зависимостей к unikernel, для работы с которыми требуется наличие пакетного менеджера opam 2.0.2 или более новой версии;
  • Добавлена поддержка языка OCaml 4.06.0 в режиме безопасной работы со строками (safe-string).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.