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
86
Unikernelの話
funera1
August 23, 2023
Tweet
Share
More Decks by funera1
See All by funera1
Mercari Summer Intern 2022
funera1
0
28
Featured
See All Featured
Fireside Chat
paigeccino
40
3.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
980
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Being A Developer After 40
akosma
91
590k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
490
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Automating Front-end Workflow
addyosmani
1371
200k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
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を使うのは難しい&コストがかかる • この課題を軽減するような技術も生まれてきている