仮想マシン技術とその展開 - 電子情報通信学会 (IEICE)

Report
仮想マシン技術とその展開
慶應義塾大学 理工学部
河野 健二
アウトライン

仮想マシン技術の概要


計算機を “仮想化” するには何が必要か?
計算機の “仮想化” はどうやって実現されたか?



ブレイクスルーとしての VMware Workstation
– 血と汗と涙の実装技術
誰でも (?) 作れるようになった VMM としての KVM
仮想マシン技術とクラウド

クラウドのための要素技術の紹介



Live migration
Remus
Kaleidoscope
仮想マシン技術とは?

一台の計算機を複数台の計算機として使う技術


複数の OS を “同時” に動かすことができる技術
仮想マシン:



仮想的に作り出された計算機ハードウェアのこと
仮想マシンが動く実計算機のコピーのようなもの
仮想マシン上で OS が(多くの場合)無修正で動作する
ホスト計算機
のコピー
仮想マシン
仮想マシン
仮想マシン
仮想マシン技術によって
ホスト計算機のコピーである
複数の仮想マシンを生み出す
ホスト計算機
(仮想マシンが動く実計算機)
仮想マシンモニタとは?

仮想マシンを作り出すソフトウェアのこと

仮想マシン ≠ 仮想マシンモニタ



仮想マシンのことを virtual machine や VM ともいう
仮想マシンモニタのことを virtual machine monitor や VMM ともいう
VM 上で動くソフトウェアをゲスト (guest) という

特に,VVM 上で動く OS をゲスト OS という
ホスト計算機
のコピー
仮想マシン
仮想マシン
仮想マシン
仮想マシンモニタ
ホスト計算機
(仮想マシンが動く実計算機)
仮想マシンモニタという
ソフトウェアが仮想マシン
というコピーを作り出す
Type I VMM と Type II VMM

VMM が動作するレイヤの違いによる分類
VM
ゲストアプリ
VM
VM
ゲストアプリ
ゲスト OS
ゲストアプリ
ゲスト OS
ゲスト OS
ホストアプリ
VMM
VMM
ホスト OS
ホスト計算機
ホスト計算機
Type I VMM:
VMM が裸の計算機 (ホスト計
算機) 上で直接動作する方式
Type II VMM:
VMM がホスト計算機の OS の
上で動作する方式
仮想化の方式の分類

完全仮想化 (full virtualization)


準仮想化 (para-virtualization)


仮想化のための修正を加えたゲスト OS を対象とする
ソフトウェア仮想化 (software virtualization)



無修正のゲスト OS が動作するように仮想化すること
ソフトウェアのみで仮想化を行うこと
ハードウェアによる仮想化支援機構を前提としない
ハードウェア仮想化 (hardware virtualization)

ハードウェアによる仮想化支援を用いて仮想化すること
資源の仮想化 ー CPU

安全にゲストの命令列を実行できるようにすること



「安全に」 とは VMM や他の VM を阻害しないこと
ゲストの命令列には特権命令も含むことに注意
CPU 時間をそのまま VM に与えてしまうと・・・

ゲスト OS が特権命令を実行してしまう

ゲスト OS はホスト計算機を占有していると思い込んでいるため
他の VM や VMM の状態を壊してしまう
De-Privileging

ゲスト OS を非特権モードで実行すること


ゲスト OS の特権命令により,VMS の整合性が破壊され
るのを防ぐため
特権命令を実行しようとすると保護例外が発生する


VMM では特権命令をエミュレートする


VMM に制御が移る (VMM は特権レベルで動作している)
ゲスト OS は特権命令が期待通りに実行できたと勘違いする
特権命令のエミュレート例:



ある VM が cli (割込禁止命令) を実行
保護例外が発生し,VMM に制御が移る
割込禁止の VM 宛ての割り込みは配信待ちにする


実 CPU の割り込みが禁止されるわけではない
なぜなら,他の VM では割り込みを待っているかもしれないから
センシティブな命令

特権命令の実行だけを防止すればいいのではない


正確にはセンシティブ命令の実行を防止しなければならない
センシティブ (sensitive) 命令:

ゲスト OS が直接実行してはまずい命令のこと




直接実行すると VMM やホスト OS と干渉する恐れがある
例: I/O 命令
センシティブではない普通の命令を innocuous 命令という
センシティブ命令と特権命令の関係
特権命令
センシティブ命令
すべての命令
センシティブ命令の例

システムの状態を参照する命令

例: プロセッサの動作モードを参照する命令


ゲスト OS に次のようなコードが含まれるとまずい
m ← プロセッサの動作モード;
if (m != priviledged) {
/* 何かおかしい */
panic();
}
例:プロセッサの動作モードにより処理内容が異なる命令


Intel x86 の POPF
スタック上の値をフラグレジスタに読み込む命令
» フラグのひとつは割込許可フラグ
POPF を使って割込許可フラグを変更しようとすると・・・
– 特権モードでは,割込許可フラグが変更できる
– 非特権モードでは,割込許可フラグの変更は無視される
» 無視されるだけで保護例外は発生しない
(古典的な意味での)仮想化可能な
CPU

CPU が仮想化可能 (virtualizable) であるとは,
センシティブ命令が特権命令の部分集合であること
すべての命令
特権命令
センシティブ命令

上記の包含関係が成立していれば・・・


ゲスト OS は非特権モードで動作しているため,
ゲスト OS はセンシティブ命令を直接実行できない
センシティブ命令を実行すると保護例外が発生する
資源の仮想化 ー メモリ

各 VM は物理メモリを独占していると思っている



物理メモリは 0 番地から始まる
物理メモリは連続している
実際には?

ホスト計算機の物理メモリを分け合って使っている



物理メモリは 0 番地から始まるとは限らない
物理メモリは連続しているとは限らない
にもかかわらず・・・

各 VM には 0 番地から始まる連続したメモリがあると思わ
せたい
2 段階のアドレス変換???

メモリを仮想化するには 2 段階のアドレス変換が必要

一段階目のアドレス変換:


二段目のアドレス変換:


ゲスト物理アドレス → ホスト物理アドレス
– VMM が両者の対応を管理している
用語:

仮想アドレス (guest virtual addr; gVA):



VM 上の仮想アドレス
ゲスト物理アドレス (guest physical addr; gPA):

VM 上の物理アドレス
ホスト物理アドレス (host physical addr; hPA):


仮想アドレス → ゲスト物理アドレス
– ゲスト OS が両者の対応を管理している
ホスト計算機上の物理アドレス
通常の MMU では 2 段階のアドレス変換はできない

通常の MMU を使って 2 段階変換を実現する方法は?
資源の仮想化 ー I/O

ゲストOSは I/O デバイスを独占していると思っている


I/O デバイスを多重化してゲスト OS に見せる必要がある
ゲストOSの見ているデバイスを仮想デバイスという
Virtual
Device
Virtual
Device
・ ・ ・ ・
I/O Virtualization
Device
Driver
Device
Virtual
Device
ソフトウェアによる完全仮想化:
VMware Workstation を題材に
Commodity PC の仮想化

VMware WS の成し遂げたこと

広く普及した PC プラットフォームの仮想化


古典的な仮想化技術をそのまま使うのは難しい
– trap & emulate, VMM による全デバイスの管理・・・
仮想化への障壁

仮想化できないプロセッサ:


PC ハードウェアの多様性:



Intel x86 には sensitive but unprivileged 命令がある
膨大な種類の PC 用デバイスが存在する
VMM がすべてのデバイスドライバを持つことは不可能
プレインストールされたソフトウェア資産:


PC には OS やアプリケーションがインストール済み
インストール済みのソフトウェアを使い続けられる方式が必要
VMware's Hosted Architecture

ホスト OS と共存できる構成

Type I と Type II のハイブリッド型





ホスト上の OS とアプリはそ
のまま
I/O デバイスへのアクセスは
ホスト OS 任せ
VM Monitor
 CPU とメモリの仮想化
VM Driver
 Host OS と VMM
の通信
VM App
 I/O 処理をホストに
丸投げ
VMware WS における CPU 仮想化

BT (Binary Translation)


Innocuous 命令は直接実行する
Sensitive (either privileged or unprivileged) 命令はエミュレート


エミュレータ呼び出しに置き換える
多くの場合,インライン展開してしまう
mov
mov
popf
cmp
・
・
%ecx, %edi
%esi, $2
%esi, %ecx
・
・
実行したいゲストのコード
Binary
Translation
・
・
mov
%ecx, %edi
mov
%esi, $2
《call emulator》
cmp
%esi, %ecx
・
・
実際に実行するコード
BT で除去できない Sensitive 命令

ページテーブル,割り込みベクタ等へのアクセス


通常の mov 命令でアクセスされるため,
BT で削除するのは難しい
どうやってページテーブル等へのアクセスだと知るの
か?

VMM のほうでメモリ保護しておく

trap が頻発するならエミュレータ呼び出しに切り替える



trap の頻度によって,
エミュレータ呼び出しを使う場合と mov 命令を使う場合とを
適応的に切り替える
メモリの仮想化
ゲストの仮想ページ
仮想 CR3
(virtual)
page table
gVA → gPA
ゲストの物理ページ
CR3
ホストの物理ページ
page table
二段階のマッピングをどうやって実現するの?
gPA (?) → hPA
Shadow Page Table

ハードウェアによるアドレス変換に使われるページテーブル

Shadow Page Table に gVA → hPA の対応を格納する
ゲストの仮想ページ
仮想 CR3
(virtual)
page table
gVA → gPA
ゲストの物理ページ
CR3
ホストの物理ページ
shadow
page table
gVA → hPA
HW はこちらを使う
I/O の仮想化

I/O の仮想化は鬼門



性能への影響が大きい
多種・多様なデバイスに対応するため,
開発コストがかさむ危険がある
VMware Workstation のアプローチ

VMM 自身はデバイスドライバを持たない



VMware hosted architecture の採用
I/O デバイスへのアクセスはすべてホスト OS に丸投げ
仮想化するデバイスを絞り込む

標準的な PC デバイスのみを仮想化する
– PS/2 キーボード,PS/2 マウス,フロッピー,IDE/ATA
– ATAPI CD-ROM, AMD PCNet Ethernet などなど
VMware WS における I/O 処理

ポートを通じて I/O 操作を行う


IN 命令: 指定した I/O ポートからデータを読み込む
OUT 命令: 指定した I/O ポートにデータを書き込む


いずれも特権命令
IN/OUT 命令を VMM で trap & emulate する


基本的に VMApp に処理を丸投げする
VMApp はホスト OS の機能を使って I/O 処理を行う


例: ディスクブロックの読み出しであれば,
仮想ディスクを読み出す read() を行う
仮想化対象のデバイスを絞り込むことで・・・


仮想化する必要のある I/O ポートが少なくてすむ
デバイスに対応するための VMApp 上のコードが少なくて済む
パケットの受信
VMApp
3. ask packet
transfer
2. select()
returns
VMNet Driver
Guest OS
5. copy packet &
raise virtual IRQ
Virtual NIC
VMDriver
4. World
Switch
Host Ethernet Driver
Host OS
6. IN/OUT to I/O port
7. VMApp の呼び出し
VMM
1.Device Interrupt
Ethernet H/W
VMM World で割込を受け取ると,
Host World にスイッチしてから,
Host OS でパケットを受信する
オーバーヘッドの削減

理想的な仮想デバイス・インターフェスを用意する

例: 単一の OUT 命令でパケット送信可能な NIC


IN/OUT 命令のエミュレートに必要な World Switch が減る
ゲスト OS には理想デバイス用のドライバを入れる

仮想化のオーバーヘッドを軽減するため,
ゲスト OS 側で少し仮想化に対応してもらう

準仮想化 (paravirtualization) の考え方
仮想化のためのハードウェア支援と
KVM
ハードウェアによる仮想化支援

ソフトウェア仮想化は大変

特に x86 は仮想化との相性が悪い




Sensitive but unprivileged 命令
Hardware-walk のページテーブル
– ソフトウェア TLB であればまだ楽
完全仮想化は地獄.VMware はたいしたもの
ハードウェアで仮想化を支援しましょう

仮想化を実現するソフトウェアがシンプルにできる


必ずしも性能が向上するわけではない
当然の流れ

Intel VT, AMD-V, などなど他にもたくさん
Intel VT とは?


Intel Virtualization Technology の略称
仮想化支援のための一連の新機能

CPU の仮想化のための



I/O の仮想化ための VT-d


IA-32 用の VT-x
IA-64 用の VT-i
Virtualization Technology for Directed I/O
今回の対象は,VT-x と VT-d

AMD の仮想化支援はだいたい同じ

細かいところが違うが,概念的には(近似的には)同じ
VMX モード

リング保護とは直交した新たな保護モード


VMX root モード: VMM が動作するためのモード
VMX non-root モード: ゲストが動作するためのモード
アプリケーション
VM Exit
ゲストOS
VMM
VM Entry
VMX non-root
VMX root
VMX root/non-root モード

VMX root モード


従来のプロセッサとほぼ同じ動きをするモード
相違点


VMX 命令が使えること
VMX non-root モード


仮想化を容易にするための支援がなされているモード
仮想化に影響する命令やイベントはVM Exitを引き起こす
例: センシティブな命令を実行
1. VM exit が発生する
2. VMX root モードで動作する VMM に制御が移る
3. VMM では VM exit の理由を調べ,適切な処理を行う
4. VMX non-root モードに復帰する
モードの遷移
VMX root モード
(VMM)
通常モード
VMX non-root モード
(VM)
VMXON
VM Entry
VM Exit
VM Entry
VM Exit
VMXOFF
Event Injection

ゲスト OS にイベントを送り込む仕組み

VM entry 時に,指定したイベントを配信することができる


ゲスト OS から見ると



イベント = interrupt or exception
VM entry 直後に指定されたイベントが起きたように見える
したがって,ゲスト OS の IDT を使ってハンドラが起動される
VMM で補足したイベントの再送に便利

イベントの再送メカニズムをエミュレートする必要がない
EPT: メモリの仮想化支援

Extended Page Table (EPT)



guest virtual addr → host physical addr への変換を行う
ハードウェアで勝手に
guest physical addr → host physical addr
の変換を行う
ゲストOSから見ると・・・

0 番地から始まる連続した物理メモリという幻想を抱いている


CR3 はゲストOSのページテーブルを指す
– Shadow page table は不要
にもかかわらず,ゲストOSのページテーブルでは,
guest virtual addr → guest physical addr
の変換を行う
Extended Page Table の仕組み

Extended Page Table という別のテーブルを持つ

guest physical addr → host physical addr の対応表
EPT Ptr
Extended Page Table の注意点

TLB にエントリがあればオーバーヘッドはなし



通常のアドレス変換と全く同じように動作する
TLB には,
guest virtual address → host physical address
が入っている
TLB ミスのオーバーヘッドが数倍のコストになる

ページテーブルが使用するアドレスは gPA である点に注意


ページテーブルを参照するために gPA → hPA への変換が必要
TLB fill のために EPT を頻繁に参照する


CR3 → PD, PD → PT, PT → hPA の 3 回
64 bit アーキテクチャでは 4 段階のページテーブル
– 全部で 5 回 EPT を参照する
KVM の基本アーキテクチャ

KVM における仮想マシン

ホストカーネル上のひとつのプロセスと
して動作



KVM モジュール



ホストカーネル内で動作
kvm プロセスは/dev/kvm を通じて
KVM モジュールとやりとりする
QUEM プロセス


仮想マシンごとに kvm プロセスが作ら
れる
仮想マシンに割り当てられた仮想 CPU
の個数に応じてスレッドが作られる
仮想デバイスのエミュレーションを行う
動作モード

ゲストカーネル:



ゲスト上のプロセス:


VMX non-root/RING3
ホストカーネル:


VMX non-root/RING0
sensitive な処理を行うと,
VM exit が発生する
VMX root/RING0
ホスト上のプロセス:

VMX root/RING3
デバイスへのアクセスとメモリ管理

デバイスの仮想化

QUEM によるデバイスエミュレーションを利用する



ゲスト OS がデバイスにアクセスすると・・・
– VM exit が発生し KVM モジュールに処理が移る
KVM モジュールは必要に応じて QEMU を呼び出す
メモリ管理


Extended Page Table を使う
Extended Page Table が
サポートされていなければ,
Shadow Page Table を
使う
Intel VT-d: I/O の仮想化支援

I/O デバイスを多重化するためのハードウェア支援



DMA Remapping (IOMMU)
Interrupt Remapping
デバイスの Direct Assignment を目指す

ゲスト OS が直接デバイスを制御する



各 VM 専用の I/O デバイスが存在するイメージ
– マルチキュー NIC などの利用を想定
I/O エミュレーションのオーバーヘッドがない
ゲスト OS のデバイスドライバがそのまま利用できる
– VMM を小さくすることができ VMM の信頼性が向上する
– デバイス特有の機能を最大限に活用できる
DMA Remapping


ゲストOSが占有するデバイスのDMAを安全に行う
解決したいこと:

DMAではデータの転送先アドレスを物理アドレスで指定する


VMMでチェックすればいいのでは?




ゲストOSが物理アドレスの設定を間違えると致命的
– 他のゲストOSやVMM自身のメモリが破壊される可能性がある
ゲストOSからのDMA要求を横取りし,VMMでチェックする
– 安全性は保証できる
VMMでデバイスドライバを持つ必要が出てくる
Direct Assignment の考え方に反する
VMMでチェックせずに安全性を保証したい!
IOMMU

デバイスアドレスから物理アドレスの変換機構

デバイスアドレス:

I/O デバイスが見ている仮想アドレスのこと
Main Memory
Physical Address
IOMMU
Device Address
Device
MMU
Virtual Address
CPU
IOMMU の拡張による DMA Remap

デバイスごとに別々のデバイスアドレス空間を持つ

デバイスごとに別々のアドレス変換表を持つ



プロセスごとに別々のページテーブルを持つのと同じ
ゲストOSが指定した gPA に書き込まれることを強制できる
デバイスアドレス変換表では,
guest physical addr → host physical addr
の変換を行う
Address Translation Table
PCI requester ID
Device
mapping
structure
仮想マシン技術とクラウド
仮想マシン技術のもたらすもの

計算機そのもののカプセル化


計算機を物理的なハードウェアから分離できる
計算機を 「電子的に」 移動・複製が可能になる


カプセル化の手順


VM のスナップショット機能により,計算機を “カプセル化”
“カプセル化” した計算機を複製・移動する



計算機をいつでもどこでも好きなところで好きな数だけ実行できる
スナップショットはただのデータ.複製も移動も容易
スナップショットを編集することも容易
カプセル化の仕方を少し変えると・・・



VM cloning: 計算機のコピーを on demand に素早く作る技術
Live migration: 計算機を止めずに移動する技術
Remus: 待機系の計算機をうまく作る技術
仮想化とクラウド

クラウドコンピューティングが広く利用されている

特長の一つとして,リソースの伸縮性(Elasticity)がある


メモリや CPU など,リソースの増減を自在に行える性質の
ことで,負荷状況に合ったリソース量を維持できる
負荷増加時には,新たに VM を生成してリソースを追加する
現行のクラウドサービス(例:Amazon EC2)
VM 1
負荷が大きく,
処理仕切れない
VM 2
インターネット
VM 3
ロードバランサ
新たな VM を生成
(= インスタンスの追加)
VM Cloning
稼働中の VM のコピーを作る技術
1.
リソース追加に時間がかかり,突発的な負荷増加
に素早く対処できない

VM の起動は,時間を要する処理であるため

2.
メモリの無駄遣いが生じる

3.
Amazon EC2 では VM の起動に約 2 分かかる
一時的に少しだけリソースを増やしたい場合でも,
フルサイズのメモリを割り当ててしまうため
VM 起動直後のパフォーマンスが低い

起動直後はキャッシュが存在しないため
Previous Work

Live VM Cloning with SnowFlock [Lagar-Cavilla et.al. ’09]
 負荷増加時に,VM のクローンを迅速に作成する手法


親 VM の最低限の情報からクローンを作成し,稼働させる
子 VM のメモリ内容は,オンデマンドにコピーしていく
クローンを作成
へアクセスしたい
へアクセスしたい
親 VM
子 VM 1
子 VM 2
メモリ
メモリ
メモリ
オンデマンドにコピーする

子 VM 生成直後のパフォーマンスが著しく低下する

負荷が長期間にわたって増加する場合は大きな問題に
ならないが,短期的な負荷増加の場合は問題となる
提案:Kaleidoscope

クローン VM 作成に要する時間を短く抑えつつ,VM
起動直後のパフォーマンスを保つクローニング手法

提案手法の特長



負荷増加時,クローン VM を迅速に生成できる
クローン VM 起動直後のパフォーマンス低下が小さい
ユーザのニーズに応じたメモリ割り当てにより,無駄がない
負荷増加時の挙動
Amazon EC2
SnowFlock
新 VM 作成時間
新 VM 稼働
クローン VM 稼働(パフォーマンス低下)
time
time
クローン VM 作成時間
Kaleidoscope
クローン VM 稼働
time
アプローチ

二つのメカニズムを用いて,クローン VM 起動後の
パフォーマンス低下を防ぎ,無駄なくメモリを使用する

VM state coloring

クローン VM が起動後に必要としそうなデータを
起動前にプリフェッチする or VM 間で共有する
クローン VM 起動後のパフォーマンス低下を防ぐことができる

Fractional allocation


VM state coloring によってプリフェッチされたメモリ領域以外
にはメモリを割り当てない
プリフェッチされた領域以外にアクセスされた場合は,メモリを割り当
てて親 VM からオンデマンドにメモリ内容をコピーする
クローン VM に対するメモリの無駄遣いをなくすことができる
実環境でのパフォーマンス評価

CPU 使用率の制限を変化させながら,要求を満たせなかった
時間の累計を測定した

Kaleidoscope は従来の Elastic Cloud よりも,要求を満たせ
なかった時間が短く,高いパフォーマンスを出すことができた

Kaleidoscope はスレッショルドが 90 % の場合でも,Elastic Cloud
の
スレッショルド 50 % 時よりも高いパフォーマンスを出せた
低パフォーマンス
VM Creation Threshold = 90 (%) とは,
システム全体としての CPU 使用率が 70 ~
90 %
になるように,リソースの増減を行うことを表す.
VM Creation Threshold = 60 (%) ならば,40 ~
60 %
マシンに無理強いする環境
Live Migration

VMを稼働させたまま別の物理マシンに移送する技術


移送時のシステムのダウンタイムを最小化し、システムの
移送による影響を隠す


HWのメンテナンスやアップグレードを容易にする
サーバを落とすことは大きい損害に繋がる
ディスクの移送は行わない

データセンタ環境を想定し、各VMはネットワークストレージに接
続していることを仮定
Live Migration
VM1
VM2
VM2
仮想マシン1
稼働
中
VM3
仮想マシン2
反復的ダーティページ転送

Push Phase


最初は全てのページを転送
ダーティページが一定以下に
なるまで反復的に繰り返す
最初のメモリコピー:
全てのメモリページを転送
ダーティページの反復的転送
ダーティページが一定以下に下がるまで反復

Stop-and-copy Phase


VMを停止させ、残っているダ
ーティページ、CPUレジスタを
転送し、制御を移す
システムがダウンしているた
め、ダーティページが発生しな
い
VMを停止させ、残りダーティページ
と仮想CPUの情報を転送
移送先のVMでコントロール再開
VM稼働
VM停止
実験 ウェブサーバ移送時のスループット

テスト環境




Dell PE-2650 サーバー(2Ghz Dual Processor with 2GBメモリ)
一つの512KBファイルを100クライアントに続けてHTTPで転送
2回のダーティページコピーの後、Stop-and-copy段階に入る
サーバーのダウンタイムは165ms
スループット(Mbit/sec)
時間の流れ(sec)
Remus


サービス提供マシンとバックアップマシン(待機系)を利用
Live Migration のメモリコピー手法を利用しHW故障から
、サービスを保護する


同期の負担を軽くし、サービスへの影響を小さくする
クライアントに気付かれることなく制御を切り替える

サーバの状態(例:コネクション)を保持する
サーバ
ハードウェア
故障発生
同
期
待機系
同
期
同
期
最新の同期点から実行再開
Remusの動作

メモリのコピーに live migration のメモリコピー手法使用



ハードウェア故障が発生した場合チェックポイントまで戻る
送信パケットをバッファに入れ,チェックポイント取得後解放する


(A)のStop-and-copy Phaseが終わった時点をチェックポイントとして保存
バッファリングせず送信すると、チェックポイントに戻った時に同じメッセージを送信してしまう
待機系のディスク書き込み作業を非同期に処理する


ディスクアクセスの遅延を隠蔽
チェックポイント後待機系のディスクに書き込み作業を実行
移送元
移送先
Buffer
まとめ

仮想マシン技術

どのようにして計算機を仮想しているのか?


VMware Workstation と KVM を題材に
仮想マシン技術とクラウド


仮想マシン技術はクラウドと相性がよい
動的に計算機を



作り (cloning)
移動 (migration) し
待機 (standby) させることができる

similar documents