Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unikernelの話
Search
funera1
August 23, 2023
0
52
Unikernelの話
funera1
August 23, 2023
Tweet
Share
More Decks by funera1
See All by funera1
Mercari Summer Intern 2022
funera1
0
21
Featured
See All Featured
Writing Fast Ruby
sferik
623
60k
Making the Leap to Tech Lead
cromwellryan
129
8.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
663
120k
Optimizing for Happiness
mojombo
375
69k
Into the Great Unknown - MozCon
thekraken
29
1.4k
The Mythical Team-Month
searls
218
43k
The Invisible Side of Design
smashingmag
296
50k
Why Our Code Smells
bkeepers
PRO
334
57k
What the flash - Photography Introduction
edds
67
11k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
36
1.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Transcript
Unikernelの話
仮想マシンとは 物理コンピュータと同じ機能をソフトウェアで実現したコン ピュータのこと VM コンテナ
VMについて App1 App2 HW Hypervisor Guest OS Bins/Libs Virtual HW
Guest OS Bins/Libs Virtual HW カーネルが分離されていて、セキュリティは高い しかし、大量のリソースを使う
コンテナについて HW OS Bins/Libs App1 Bins/Libs App2 Container Engine Bins/Libs
リソースを少ししか使わず、軽量 しかし、カーネルを共有していて、セキュリティ的には不十分
軽量で高セキュリティな実行環境があればうれしい!
Unikernel Unikernelとは、アプリケーションをライブラリ OS(LibOS)の必要最小限の機能のみとリンクさせ、 単一アドレス空間で、直接ハードウェアやハイパーバイザ上で動作するようにしたマシンイメージのこと Lib OS App App App App
Lib OS App Lib OS App Lib OS App Unikernel OS App App App App App 従来のOS LibOS OSの機能をライブラリ化 したもの
Unikernelの特徴 アプリケーションの必要最小限の kernel機能をリンクするため、 イメージのサイズが小さい。( 10MB程度) 軽量
Unikernelの特徴 単一アドレスで動作することで、従来の OSのようなアドレス空間の移動の際にかかるオーバーヘッドがないた め、高速な実行が可能 ユーザ空間 カーネル空間 コンテキストスイッチ 従来のOS 単一アドレス空間 Unikernel
Unikernelの特徴 セキュリティが高い バイ ナリ バイナ リ App 機能A 機能B 機能C
LibOS App 機能A 機能D 機能E LibOS イメージサイズが小さい (Attack Surfaceが小さい) カーネル分離&カーネルごと に構成要素が異なる
Unikernelは軽量・高速・高セキュリティ!
Unikernelの課題 • Unikernelと従来のOSは異なる構成 • 必要最低限のOS機能とリンクするために、OSレイヤの知識が必要 • 従来のアプリケーションをUnikernelで動かす場合、 基本的にアプリケーションの改変が必要 Unikernelを使うは難しい&コストがかかる
Unikernelの今後 このような課題を受けて、 UnikraftやUnikernel Linux(UKL)のような技術が 開発されている
network stack liblwip.o libtcpip.o libhttp.o filisystems libvfs.o libfat.o libext3.o schedulers
libcoop.o libpreempt.o librt.o … Unikernel liblwip.o libvfs.o libcoop.o Unikraft ②ビルド時に、自動で必要なライブラリを 選択してくれる ①Unikraftがアプリケーションが使いうる機能をライブラリとして提供
UKL Linuxやglibcへパッチを当てることで、Linuxアプリをほとんど改変なしに、Unikernel として構築できる
まとめ • UnikernelはVMとコンテナの良いところを合わせた特徴を持つ • ただ、Unikernelを使うのは難しい&コストがかかる • この課題を軽減するような技術も生まれてきている