Unikernel이란?
특정 application program을 구동하기 위한 작은 OS, 설정 파일을 하나로 묶은 것
일반적으로 하나의 OS 상에서 복수의 application를 작동시키지만, Unikernel에서는 각 application를 하나의 작은 OS와 1대 1로 묶어서 작동시킨다.
유니커널의 구성요소
- 커널 기능을 담당하는 libos
- 응용프로그램
- 응용프로그램 실행에 필요한 런타임 라이브러리
유니커널의 특징
- 유니커널의 가상머신과 컨테이너에서 공유하는 운영체제나 엔진을 포함하고 있지 않다.
- 독립적으로 실행할 수 있는 단일 부팅 이미지로 만들어진다.
- 필요한 라이브러리들은 하나의 목적을 가진 프로그램으로 링크되어 최소한의 부팅 가능한 이미지로 만들어진다.
- 사용되지않는 코드는 링크에서 제거되고 최소한의 필요한 디바이스 드라이버들만 포함한다.
- 예를 들어 웹서버의 경우 최소한의 요구사항으로 설치되는 우분투는 5GB의 용량이 필요한 반면, 이미지나 웹컨텐츠를 포함하지 않은 유니커널 기반 웹서비스의 경우 2MB보다 작은 이미지로 만들어진다.
- 이미지 크기가 줄어듦에 따라서 부팅시간이 빨라지는 장점을 가진다.
- 하이퍼바이저 위에서 동작하기 때문에 클라우드 환경에서 사용되지만, 또한 베어메탈에서 동작이 가능하다.
- 유니커널은 가상머신과 컨테이너에서 공유하는 운영체제나 엔진을 포함하고 있지 않다.
- 별도의 OS Kernel을 사용하지 않고, Application을 서비스하는 데 필요한 Kernel의 특정 라이브러리만을 포함하여 Compile하여. Hypervisor 혹은 Baremetal 등에서 바로 서비스가 가능하도록 지원
유니커널이 부각된 이유
- 모노리틱 운영체제인 리눅스가 점점 발전하면서 용량이 커지고 무거워지고 있다.
- 현재 리눅스 배포판에는 수억라인의 코드로 구성되어 있지만, 일반적인 응용 프로그램은 필요한 경우, 필요한 부분의 코드만을 사용하기 때문에 대부분의 코드는 사용되지 않는다.
- 리눅스는 어느 하드웨어에서나 동작할 수 있도록 설계되었기 때문에 플로피 디스크 드라이버와 같이 불필요한 기능을 포함하고 있다.
유니커널의 장점
- Application 구동에 필요한 라이브러리만 포함하기 때문에 매우 가벼움
- 불필요한 서비스가 사용되지 않기 때문에 매우 빠르게 구동
- Application에 필요하지 않은 불필요한 kernel은 배포되지 않기 때문에 공격 노출을 줄여 보안이 강화
- 응용프로그램이 필요한 라이브러리만을 가지고 있기 떼문에 공격 대상이 크게 감소하겨 보안에 강한 장점을 가진다.
- 범용 운영체제에서필요한 셸이나 터미널을 제공하지 않기 때문에 시스템의 상태에 대한 확인이 필요할 경우 유니 커널에서 제공하는 API를 사용하여 요청하고 읽기 전용의 결과만 확인 가능하다.
Library Os의 특징
- 단일 주소 공간을 사용한다. 단일 주소 공간을 사용하면 커널모드와 유저모드간에 같은 권한레벨을 사용하기 때문에 인터럽트 등 발생시 문맥교환이 발생하지 않으며,, 시스템 콜 또한 함수 호출 방식을 사용하여 문맥 교환이 발생하지 않는다.
- 문맥 교환없이 하드웨어로 직접적인 접근이 가능하게 하여 성능을 향상
- Library OS가 구동되기 위한 특정 하드웨어의 device driver가 필요로 하는데
- 문맥 교환이란?
- 각 프로세스가 일을 처리하기 위헤서는 CPU를 필요로 아주 짧은 시간에 CPU를 할당받아 일을 처리한다. 각 프로세스는 CPU를 차지하기 위해 서로 짧은 시간 동안 CPU 제어권을 바꾸며 경쟁한다.
- 문맥 교환 —> 현재 CPU를 사용중인 프로세스의 CPU 제어권이 다른 프로세스로 이양되는 과정
- 프로세스가 실행 상태일 때 시스템 콜이나 인터럽트가 밠생하면 CPU의 제거권이 운영체제에게로 넘어와 원래 실행중이던 프로세스의 업무를 잠시 멈추고 운영체제 커널의 코드가 실행함 이경우에 CPU의 실행 위치 등 프로세스의 문맥중 일부를 PCB에 저장하게 되지만 이러한 과정을 문맥교환이라고 하지 않음
container와의 비교
- Unikernel은 Container와 동일하게 Immutable Infrastructure를 제공
- Unikernel은 Container와 유사하게 Resource 사용에 대한 overhead가 적음
- Container가 host Os의 기본 Kernel을 공유하는 반면에 UniKernel은 개발 App을 구동하기 위한 일부 라이브러리에 대해서 Application과 함께 컴파일하여 해당 application에서 독립적으로 사용
Unikernel - Part 1
Today Keys : Unikernel, Container, Docker. specialised, single, address, space, ClickOS , Clive , Drawbridge ,HalVM , IncludeOS , Ling , MirageOS , OSv , Rumprun ,Runtime.js , UniK 오랜만에 남기는..
zigispace.net
https://ettrends.etri.re.kr/ettrends/174/0905174013/
유니커널의 동향과 매니코어 시스템에 적용
고성능 컴퓨팅, 빅데이터 처리, 인메모리 데이터베이스 관련된 응용프로그램이 발전으로 처리해야 하는 데이터가 많아지고 이에 따라 빠른 처리속도를 제공하는 시스템이 필요하게 되었다. 이
ettrends.etri.re.kr
https://kosaf04pyh.tistory.com/195
[운영체제] 문맥교환(Context Switching)
문맥교환 컴퓨터에는 여러 프로세스들이 실행되고 있습니다. 카카오톡을 켜놓고 유튜브로 노래를 들으면서 웹서핑을 하는 것은 사용자 입장에서 동시에 일어나는 일 처럼 보이지만 실제로는
kosaf04pyh.tistory.com
'Kubernetes' 카테고리의 다른 글
pod pv pvc 강제 삭제하기 (0) | 2022.01.06 |
---|---|
Volume에 대해 알아보자 [emptyDir, hostpath] - 1 (0) | 2022.01.05 |
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.12. Latest validated version: 19.03 (0) | 2021.12.31 |
master에 worker node 재조인하기 (0) | 2021.12.31 |
Kubernetes에서 Go application을 Unikernel로 실행하기 (1) | 2021.12.30 |