Unikernels: Library operating systems for the cloud

(Unikernel에서 넘어옴)


Unikernels: Rise of the Virtual Library Operating System
ASPLOS 2013

개요

Including all kernel and user-space code into more components that are flexible, secure, and reusable in the style of LibOS

일반적인 가상화시스템은 Hypervisor위에 OS를 설치한후 그 OS위에서 여러개의 운영체제를 실행시키게 된다. 이떄 각각의 OS는 종속된 Application실행에 필요한 라이브러리와 여러 기반적인 하드웨어 접근을 위한 시스템을 제공하게 된다. 그러나 Unikernel은 이러한 OS와 Application의 관계를 1대1로 묶어서 Unikernel이 한 Application실행에 필요한 최소한의 라이브러리와 하드웨어 접근만을 수행하게 한다. 이에 따라 Application동작을 위해서 필요한 Overhead와 (booting, memory footprint)와 같은 비용을 최소화 하여 Isolation은 제공하지만, Security, Footprint, Optimization, 그리고 booting speed에서 이점을 가질 수 있다.

  • Security: 어플리케이션이 OS사이즈가 작기 떄문에 공격받을 수 있는 면적이 줄어들고, 권한에 대한 문제도 없으며 exec와 같은 함수도 없어서 공격에 대한 위험도가 감소한다.
  • Small Footprint: OS이미지가 작다는 이점이 있다.
  • Optimization: OS이미지가 작아서 쉽게 최적화 할 수 있다. 또한 OS == Userspace라서 zero copy로 I/O를 처리하는 등의 기존에서는 불가능 했던 Optimization이 가능해 졌다.
  • Fast Boot: 기존의 Guest Kernel은 Module로딩과 같은 부팅 Time이 필요하였으나, 최소한의 OS이미지만을 사용하여 이런 시간을 줄였다.
  • Typesafety: Unikernel의 MirageOS는 OCaml(객체지향을 지원하는 함수형 언어)을 바탕으로 강력한 Type safety를 지원한다. 따라서 객체 관리에 있어서 버그를 줄이고 함수형 언어의 이점을 살려서 OS를 작성할 수 있었다.

기존의 LibOS와 다른 점은 LibOS는 Hypervisor의 도움없이 부팅시키는 아이디어여서, 단점이 많았지만 Modern Hypervisor의 도움으로 이러한 LibOS인스턴스들을 VM에서 실행시켜서 이러한 단점을 상쇠하였다는 것이다. 현재(2023년)에 거의 대부분의 Library OS는 Unikernel처럼 Hypervisor에서 실행되는 것이 기본이다. 따라서 Library OS == Unikernel이라고 생각해도 무관하게 되었다.

참고

  1. https://dl.acm.org/doi/10.1145/2557963.2566628
  2. https://uni2u.tistory.com/106