5. 仮想化とは(Informal)
• Wikipediaの定義
“In computing, virtualization (or virtualisation) is
the creation of a virtual (rather than actual) version
of something, such as a hardware platform, operating
system (OS), storage device, or network resources.”
※virtualization: アメリカ英語
virtualisation: イギリス英語
• ウィキペディアの定義
「仮想化(英語: virtualization)とは、コンピュータのリソースを
抽象化することである。」
チュートリアル「仮想化技術最前線」
2012/8/24 5
Single-VM Virtualization
7. 仮想化の概念(1)
“the creation of a virtual version of something”
仮想化後 仮想化前
Subject Subject
Virtual version of Real version of
something something
(Object) (Object)
チュートリアル「仮想化技術最前線」
2012/8/24 7
Single-VM Virtualization
8. 仮想化の概念(2)
“the creation of a virtual version of something”
仮想化後 仮想化の実体 仮想化前
Subject Subject Subject
Interface v Interface v Interface r
Virtualizing
System
Virtual Interface r Real
version of version of
something Real something
version of
something
チュートリアル「仮想化技術最前線」
2012/8/24 8
Single-VM Virtualization
9. 仮想化の構成要素
• Subject(主体)
誰がアクセスするか? Subject
• Interface v (virtual)
仮想 Object がどのように見えるか?
Interface v
• Virtualizing System(仮想化システム) Virtualizing
どのようにしてインターフェイスを変換するか? System
• Interface r (real) Interface r
実際の Object がどのように見えるか
• Object(対象) Object
仮想化される対象は何か?
チュートリアル「仮想化技術最前線」
2012/8/24 9
Single-VM Virtualization
11. 仮想化と抽象化
仮想化
抽象度低下 抽象度不変 抽象度増加
Subject Subject Subject
Interface A Interface B Interface C
Virtualizing Virtualizing
Object
System System
Interface X Interface X Interface X
Object Object Object
チュートリアル「仮想化技術最前線」
2012/8/24 11
Single-VM Virtualization
16. マシンの仮想化とは(Formal)
[Popek et al. 1974] Gerald J. Popek and Robert P. Goldberg. Formal
Requirements for Virtualizable Third Generation Architectures. Communications
of the ACM 17, 7 (July 1974), 412-421.
チュートリアル「仮想化技術最前線」
2012/8/24 16
Single-VM Virtualization
17. A Virtual Machine Map
Virtualization is the construction of an isomorphism
between a virtual machine and a real machine;
𝑒 ′ ∘ 𝑓 𝑆 𝑖 = 𝑓 ∘ 𝑒 𝑖 (𝑆 𝑖 )
𝑖 [Popek et al. 1974]
𝑒 ′ (𝑆 ′ )
𝑖 𝑖
Virtual
𝑆′
𝑖 𝑆 𝑗′
𝐶𝑣
𝑓(𝑆 𝑖 ) 𝑓(𝑆 𝑗 )
𝑒 𝑖 (𝑆 𝑖 )
Real
𝑆𝑖 𝑆𝑗
𝐶𝑟
S: a machine state, C: the collection of machine states, 𝑆 ∈ 𝐶
e: an instruction sequence (a unary operator), I: the set of all the instruction sequences of finite length, 𝑒 ∈ 𝐼
チュートリアル「仮想化技術最前線」
2012/8/24 17
Single-VM Virtualization
18. VM (Virtual Machine)
Software
Interface v
Virtual Machine
チュートリアル「仮想化技術最前線」
2012/8/24 18
Single-VM Virtualization
19. Real Machine
Software
Interface r
Real
Machine
チュートリアル「仮想化技術最前線」
2012/8/24 19
Single-VM Virtualization
20. 「Machine」のインターフェイス
Application Software
System Call
Operating System
ISA (Instruction Set Architecture)
Hardware
チュートリアル「仮想化技術最前線」
2012/8/24 20
Single-VM Virtualization
21. VMのインターフェイス1
Application Software
System Call
Operating System
System ISA User ISA
Hardware
チュートリアル「仮想化技術最前線」
2012/8/24 21
Single-VM Virtualization
22. VMのインターフェイス2
Application Software
System Call
Operating System
System ISA User ISA ABI
Hardware
ABI = Application Binary Interface
チュートリアル「仮想化技術最前線」
2012/8/24 22
Single-VM Virtualization
23. VM (Virtual Machine) の分類
• Process VM
Interface v は ABI Process
Subject は Process
ABI
Process VMを実現するソフトウェアの例
Digital FX!32(IA-32⇒Alpha)
Cygwin(UNIX→Win), Wine(Win→UNIX) Virtual Machine
Java, Ruby, .NET framework, ...
o 抽象度高,現実度低
• System VM Software (App/OS)
Interface v は ISA ISA
Subject はアプリケーションとOS
System VMを実現するソフトウェアの例 Virtual Machine
VMWare, Xen, VirtualBox, QEMU
チュートリアル「仮想化技術最前線」
2012/8/24 23
Single-VM Virtualization
24. System VM の実現
仮想化後 仮想化の実体
App/OS App/OS
ISA ISA
Virtualizing
Software
Virtual Interface r
Machine
Real
Machine
チュートリアル「仮想化技術最前線」
2012/8/24 24
Single-VM Virtualization
25. System VM の応用例
Emulation Replication
App/OS App/OS
App/OS
1 2
ISA 2 ISA 1 ISA 1
Virtualizing Virtualizing
Software Software
ISA 1 ISA 1
Real Real
Machine Machine
チュートリアル「仮想化技術最前線」
2012/8/24 25
Single-VM Virtualization
26. Question 2
VMWare は VM か?
JavaVM は VM か?
チュートリアル「仮想化技術最前線」
2012/8/24 26
Single-VM Virtualization
27. VM と VMM の違い
System VM Process VM
App/OS 1 App/OS 2 Process
ISA 1 ISA 1 ABI
VM 1: VM 2: Virtual
Virtual Machine 1 Virtual Machine 2 Machine
≒
VMM: Virtual Machine Monitor Virtualizing
(Virtualizing Software) Software
ISA 1 Interface
Real Real
Machine Machine
チュートリアル「仮想化技術最前線」
2012/8/24 27
Single-VM Virtualization
28. TypeⅠと TypeⅡの VMM
TypeⅠ TypeⅡ
Guest OS Guest OS
ISA ISA
VM VM
VMM
VMM
ABI+α
(Hypervisor)
Host OS
ISA ISA
Real Real
Machine Machine
チュートリアル「仮想化技術最前線」
2012/8/24 28
Single-VM Virtualization
29. TypeⅠと TypeⅡの定義
Robert P. Goldberg. Architectural Principles for Virtual Computer
Systems. ESD-TR-73-105, Harvard University, pp. 22–26, Feb, 1973.
チュートリアル「仮想化技術最前線」
2012/8/24 29
Single-VM Virtualization
31. Characteristics of a VMM
• Equivalence
“Any program run under the VMM should exhibit an effect
identical with that demonstrated if the program had been run
on the original machine directly, with the possible exception
of differences caused by the availability of system resources
and differences caused by timing dependencies.” [Popek et al. 1974]
• Efficiency
“It demands that a statistically dominant subset of the virtual
processor's instructions be executed directly by the real
processor, with no software intervention by the VMM.”
• Resource Control
(1) it is not possible for a program running under it in the
created environment to access any resource not explicitly
allocated to it
(2) it is possible under certain circumstances for the VMM
to regain control of resources already allocated.
チュートリアル「仮想化技術最前線」
2012/8/24 31
Single-VM Virtualization
33. VMM と Emulator
VMM Emulator
App/OS App/OS
Subset of ISA ISA 2
Virtualizing Virtualizing
Software Software
ISA ISA 1
Real Real
Machine Machine
チュートリアル「仮想化技術最前線」
2012/8/24 33
Single-VM Virtualization
34. Single-VM v.s. Multi-VM
Single-VM VMM Multi-VM VMM
Guest OS Guest OS Guest OS
ISA ISA ISA
VM VM VM
VMM VMM
ISA ISA
Real Real
Machine Machine
チュートリアル「仮想化技術最前線」
2012/8/24 34
Single-VM Virtualization
36. Single-VM VMM の意義
• 透過性
ゲスト OS に依存せずに機能追加できる Guest OS
• 効率性 ISA
VMMの介在によるオーバーヘッドが少ない VM
VMM
• セキュリティ
ゲストOSから保護された環境を利用できる ISA
Real
• シンプル Machine
VMMを小さくできる
セキュリティ上も有利
チュートリアル「仮想化技術最前線」
2012/8/24 36
Single-VM Virtualization
37. 仮想化技術の分類のまとめ
Virtualization
Resource Machine Desktop Object = Machine
Subject = OS/App
Process VM System VM
Interface v = ISA
VMM Emulation Interface v ≒ Interface r
(Virtualizing Software)
Type I Type II Interface r = ISA ≠ ABI
Multi-VM Single-VM Interface v = Interface r
チュートリアル「仮想化技術最前線」
2012/8/24 37
Single-VM Virtualization
41. Processor の仮想化の要件
THEOREM 1. For any conventional third generation
computer, a virtual machine monitor may be constructed
if the set of sensitive instructions for that computer is a
subset of the set of privileged instructions. [Popek et al. 1974]
定理1 「sensitive」な命令が全て特権命令に含まれて
いればVMMが構成できる.
Instructions
Privileged
User
Sensitive
チュートリアル「仮想化技術最前線」
2012/8/24 41
Single-VM Virtualization
42. 「sensitive」な命令
• VMMの実行に影響を与える命令
Control sensitive
システムのリソース設定を変更する命令
o 物理メモリの割り当て状態,システムのモード,I/Oなど
Behavior sensitive
実行時の挙動や結果がシステムのリソース設定に影響される命令
o システムレジスタの値やシステムのモードなど
Instructions
Control Behavior Innocuous
Sensitive Sensitive (無害な)
チュートリアル「仮想化技術最前線」
2012/8/24 42
Single-VM Virtualization
44. Intel CPU(旧)での仮想化
• ゲストOSをユーザレベルで動作させる
特権命令は VMM でトラップできる
• 特権命令を VMM でエミュレーションする
ゲストOSも特権モードで動いているようにふるまう
Application
(Guest)
Application Kernel
(Guest) (Guest)
Ring 3 Ring 3
Ring 0 Ring 0
Kernel
VMM
(Guest)
チュートリアル「仮想化技術最前線」
2012/8/24 44
Single-VM Virtualization
45. Intel CPU(旧)の仮想化可能性
• 17個の命令が sensitive だが non-privileged
Sensitive Register Instructions
システムレジスタを読み込む命令
o SGDT, SIDT, SLDT, SMSW, PUSHF (S: Store, F: Flag)
システムレジスタを書き換えるがトラップされない命令
o POPF
Protection System References
システムレジスタの内容を参照する命令
o LAR, LSL, STR, VERR, VERW (L: Load from system registers, V: Verify)
セグメントの特権レベルを参照する命令
o POP, PUSH, CALL, JMP, INT n, RET
John Scott Robin and Cynthia E. Irvine. Analysis of the Intel Pentium's Ability to Support a Secure Virtual
Machine Monitor. In Proceedings of the 9th conference on USENIX Security Symposium, 2000.
チュートリアル「仮想化技術最前線」
2012/8/24 45
Single-VM Virtualization
47. Intel VT による仮想化
VMX non-root mode VMX root mode
Application
(Guest)
Ring 3 Ring 3
Ring 0 VM Entry Ring 0
Kernel
VMM
(Guest)
VM Exit
VMCS
Guest State
Host State
Control Field
チュートリアル「仮想化技術最前線」
2012/8/24 47
Single-VM Virtualization
73. セキュアVM(実現)
• I/Oを暗号化する
ゲストOS
Device Driver セキュアVM
ストレージI/Oを捕捉・暗号化 ATA NIC USB
ATA/ATAPI 及び USB1.1/2.0を捕捉
AES-XTSで暗号化 VMM
拡張機能
Device Mediator
ネットワークI/Oを捕捉・暗号化 ストレージ管理
NIC(Intel PRO 100/1000)を捕捉 ATA NIC USB
ネットワーク管理
IPSecでVPN接続 ID管理
ICカードで鍵管理・認証 Device
ハードウェア
USB接続のカードリーダにアクセス ATA NIC USB
PC/SC, CCIDプロトコル
チュートリアル「仮想化技術最前線」
2012/8/24 73
Single-VM Virtualization
74. システムファイル保護
• Rootkit からの保護
システムファイルの書き込み
を禁止する
OSの重要なファイル
o カーネル,デバイスドライバ,…
セキュリティソフトウェア
o アンチウィルス,…
カーネルレベルでも書けない
再起動すれば元に戻る
最終ラインでのディフェンス
Y. Chubachi, T, Shinagawa, K. Kato. Hypervisor-based Prevention of Persistent Rootkits. In Proc. 25th ACM
Symposium On Applied Computing (ACM SAC 2010), pp. 214-220, Mar. 2010. doi:10.1145/1774088.1774131
チュートリアル「仮想化技術最前線」
2012/8/24 74
Single-VM Virtualization
75. システムファイル保護(実現)
• ストレージへの書き込み
を監視する ゲストOS
Device Driver VM
ATA NIC USB
システムファイルの書き換え
を検出 VMM
o ファイルのデータ領域 拡張機能
o メタデータ領域 Device Mediator
保護モジュール
o ディレクトリ構造
ATA 保護ポリシー
ファイルとセクタのマッピング
を管理 Device
ハードウェア
o セマンティックギャップを克服 ATA NIC USB
o 低オーバーヘッドで実現
チュートリアル「仮想化技術最前線」
2012/8/24 75
Single-VM Virtualization
77. 透過的ネットワークブート(実現)
• ディスクアクセスを
ネットワークへ転送する ゲストOS
Device Driver VM
ATA NIC USB
ATAのインターフェイスを提供 VMM
ローカルディスクと同じアクセス方法 拡張機能
o MS-DOSでも起動する Device
ATA監視
Mediator
ATA ATA-AoE変換
ATAアクセスをAoEに変換 NIC
NICアクセス
ATA over Ethernet
Device
ハードウェア
パケットをネットワークへ転送 ATA NIC USB
ディスクイメージをサーバで集中管理
チュートリアル「仮想化技術最前線」
2012/8/24 77
Single-VM Virtualization
78. 透過的VPN切り替え
データセンター(クラウド)
• クラウド接続の可用性を 専用線
確保する
ネットワーク/サーバ障害対応 VPN
× VPN
×
ルータ1 ルータ2
インターネット層での経路障害 Internet
VPNサーバ故障
OS/ユーザは意識しない
基盤として高可用性を実現
ユーザ・管理者に負担をかけない クライアント
Y. Matsuhashi, T. Shinagawa, Y. Ishii, N. Hirooka, K. Kato. Transparent VPN Failure Recovery with Virtualization.
Future Generation Computer Systems, Elsevier, Vol. 28, No. 1, pp. 78-84, Jan. 2012. doi:10.1016/j.future.2011.05.020
チュートリアル「仮想化技術最前線」
2012/8/24 78
Single-VM Virtualization
79. 透過的VPN切り替え(実現)
• VPN接続を切り替える
ゲストOS
Device Driver セキュアVM
定期的にネットワーク到達性を ATA NIC USB
チェック
VMM
VMMからサーバにPingを送る
拡張機能
Device Mediator
VPN切断・再接続を実施 VPNクライアント
利用可能なサーバの選択 NIC
IPsecでのコネクションを確立 ID管理
IPアドレスの不整合などを吸収 Device
ハードウェア
ATA NIC USB
TCP接続が切れない
切り替え時間は3秒程度
チュートリアル「仮想化技術最前線」
2012/8/24 79
Single-VM Virtualization
80. ボランティアコンピューティング
• 計算コードをVMM内実行 ゲストOS
計算コードをユーザから保護 Device Driver
ATA NIC USB
VM
計算結果の改ざん防止
計算結果の漏洩防止 VMM
計算コードからユーザを保護 拡張機能
計算コードによる不正アクセスを防止 Device Mediator
保護ドメイン
計算コード
NIC (ELF)
• VMMでELFコードを受信
VMM内の保護ドメインで実行
ユーザは存在を感知しない Device
ハードウェア
ATA NIC USB
チュートリアル「仮想化技術最前線」
2012/8/24 80
Single-VM Virtualization