프로젝트 소개
smolvm을 사용하면 하드웨어 가상화(macOS의 Hypervisor.framework, Linux의 KVM, Windows의 Windows Hypervisor Platform)를 통해 로컬에서 사용자 지정 Linux 가상 머신을 관리하고 실행할 수 있습니다. VMM으로 libkrun을, 게스트 커널로 libkrunfw를 기반으로 구축되었으며, 각 워크로드는 강력한 격리를 위해 자체 VM과 게스트 커널을 갖습니다.
주요 기능은 다음과 같습니다:
- 200ms 미만의 콜드 스타트, virtio balloon을 통한 탄력적 메모리, 하이퍼바이저에서 대기하는 유휴 vCPU 스레드를 갖춘 빠른 크로스 플랫폼 마이크로VM.
- Smolfile: 이미지, 리소스, 네트워크 정책, 마운트, 포트, 설정 명령을 지정하는 TOML 선언 파일(Dockerfile과 유사하지만 전체 VM용). 알 수 없는 키는 생성 시 거부됩니다.
- VM 분기: 실행 중인 머신의 라이브 copy-on-write 포크로, 소스의 프로세스, 메모리, 디스크 상태로 재개됩니다. 팬아웃을 통한 배치 분기, 워커 준비 신호, 보류된 풀 슬롯을 지원합니다.
- 휴대용 아티팩트: 중지된 VM을 단일 .smolmachine 파일로 패키징하여 모든 OCI 레지스트리에 푸시하고, 의존성 없이 지원되는 모든 플랫폼에서 재수화할 수 있습니다.
- 샌드박싱: 네트워크는 기본적으로 꺼져 있으며, 송신은 특정 허용 호스트로 제한할 수 있습니다. 호스트 파일 시스템, 네트워크, 자격 증명은 하이퍼바이저 경계로 분리됩니다.
- SSH 에이전트 전달: 게스트는 개인 키 자료를 VM에 복사하지 않고도 git 및 SSH에 호스트 SSH 키를 사용할 수 있습니다.
- 로컬 컨테이너 이미지: Docker 데몬 없이 docker save / podman save 아카이브, stdin 파이프, 또는 압축 해제된 rootfs 디렉터리에서 부팅합니다.
- 영구 개발 머신: 설치된 패키지가 재시작 후에도 유지되는 머신을 생성, 중지, 시작, exec할 수 있습니다. 호스트 디렉터리 마운트는 핫 리로드를 위해 inotify 이벤트를 전파합니다.
- Kubernetes 통합: containerd shim v2를 제공하여 RuntimeClass를 통해 파드가 마이크로VM으로 실행됩니다.
- GPU 가속: macOS와 Linux에서 virtio-gpu / Venus(Vulkan-over-virtio)를 통해 호스트 GPU를 노출합니다. CUDA API 리모팅(--cuda)은 GPU 패스스루 없이 vsock을 통해 CUDA 호출을 호스트 NVIDIA 드라이버로 전달합니다.
- 체크포인팅: VM 상태를 내구성 있는 .smolcheckpoint 아티팩트로 저장하여 나중에 복원할 수 있습니다. Rust 크레이트(smolvm-checkpoint)는 VM 런타임에 의존하지 않고 증분 스토리지와 휴대용 내보내기를 제공합니다.
기본 리소스는 4 vCPU와 8 GiB RAM이며, 플래그나 Smolfile을 통해 재정의할 수 있습니다. 보안 모델은 게스트 root를 신뢰할 수 없는 것으로 취급하며, 명시적으로 전달된 기능(마운트, 네트워크, 포트, SSH 에이전트)은 워크로드의 권한에 포함됩니다. 이 프로젝트는 Apache-2.0 라이선스입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.