Об этом проекте
smolvm позволяет управлять и запускать пользовательские Linux-виртуальные машины локально с использованием аппаратной виртуализации (Hypervisor.framework на macOS, KVM на Linux, Windows Hypervisor Platform на Windows). Он построен на libkrun в качестве VMM и libkrunfw для гостевого ядра, при этом каждая рабочая нагрузка получает собственную ВМ и гостевое ядро для строгой изоляции.
Ключевые возможности:
- Быстрые кроссплатформенные микровиртуальные машины с холодным стартом менее 200 мс, эластичной памятью через virtio balloon и простаивающими потоками vCPU, которые спят в гипервизоре.
- Smolfile: файл декларации в формате TOML (аналогично Dockerfile, но для целой ВМ), задающий образ, ресурсы, сетевую политику, монтирования, порты и команды настройки. Неизвестные ключи отклоняются во время создания.
- Ветвление ВМ: живые копии-при-записи работающей машины, которые возобновляются с процессами, памятью и диском источника. Поддерживает пакетное ветвление с fan-out, сигнализацию готовности воркеров и удерживаемые слоты пула.
- Портативные артефакты: упаковка остановленной ВМ в единый файл .smolmachine, который можно отправить в любой OCI-реестр и восстановить на любой поддерживаемой платформе без зависимостей.
- Изоляция: сеть по умолчанию отключена; исходящий трафик можно ограничить определёнными разрешёнными хостами. Файловая система хоста, сеть и учётные данные разделены границей гипервизора.
- Проброс SSH-агента: гость может использовать SSH-ключи хоста для git и SSH без копирования материала приватного ключа в ВМ.
- Локальные образы контейнеров: загрузка из архивов docker save / podman save, stdin-каналов или распакованных каталогов rootfs без демона Docker.
- Постоянные dev-машины: создание, остановка, запуск и exec в машины с установленными пакетами, переживающими перезапуски. Монтирования каталогов хоста распространяют события inotify для горячей перезагрузки.
- Интеграция с Kubernetes: поставляется containerd shim v2, чтобы поды работали как микровиртуальные машины через RuntimeClass.
- Ускорение GPU: предоставляет GPU хоста через virtio-gpu / Venus (Vulkan-over-virtio) на macOS и Linux. Удалённый вызов CUDA API (--cuda) перенаправляет вызовы CUDA через vsock к драйверу NVIDIA на хосте без проброса GPU.
- Чекпоинтинг: сохранение состояния ВМ в виде долговечного артефакта .smolcheckpoint для последующего восстановления. Крейт Rust (smolvm-checkpoint) обеспечивает инкрементальное хранилище и портативный экспорт без зависимости от среды выполнения ВМ.
Ресурсы по умолчанию — 4 vCPU и 8 GiB RAM, переопределяемые через флаги или Smolfile. Модель безопасности рассматривает гостевой root как недоверенный, а явно проброшенные возможности (монтирования, сеть, порты, SSH-агент) становятся частью полномочий рабочей нагрузки. Проект лицензирован под Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.