Live Migration on BitVisor
深井 貴明 † , 表 祐志 † , 品川 高廣 ‡†筑波大学, ‡ 東京大学

2013 年 12 月 6 日

OS のライブマイグレーション
ライブマイグレーション

▶

OS

OS

マシン1

マシン2

クラウド上でメンテナンスに用いる重要な機能あるマシン上の OS を無停止で別の物理マシン上へ移動
OS に依存しない▶ 主にデバイスを仮想化した VM 環境で実現されている▶
▶

2

Live Migration on BitVisor の利点▶

メンテナンス性を向上▶

物理マシンの機能を活かせる
仮想化のオーバヘッド削減▶ デバイスの機能をフルに使う▶

▶

OS に依存しない
利用場面: データベース処理，HPC，ベアメタルクラウド

3Live Migration on BitVisor の全体像
ライブマイグレーション
OSBitVisor

アクセス

ハードウェアOSBitVisor

アクセス

ハードウェア

同じハードウェア構成

VMM はデバイスを一切仮想化しない→ ⃝ オーバヘッド削減▶ VMM のレイヤのみで実現→ ⃝ OS に依存しない▶

4

ライブマイグレーションの処理流れ
OS

OS
ハードウェア状態
BitVisor
ハードウェア状態
ハードウェアネットワーク

BitVisor
ハードウェア状態
ハードウェアデバイス メモリデバイス メモリ

CPUCPU

移動元マシン

移動先マシン5

ライブマイグレーションの処理流れ
OS

OS
ハードウェア状態
BitVisor
ハードウェア状態

ネットワークデバイス メモリデバイス メモリ

移動元マシン

ハードウェア状態
ハードウェアハードウェアCPU

BitVisor

従来手法を利用CPU
移動先マシン5

ライブマイグレーションの処理流れ
OS

OS
ハードウェア状態
BitVisor
ハードウェア状態

ネットワークCPU
移動元マシン

ハードウェア状態
ハードウェアハードウェアデバイス メモリ

BitVisor

従来手法を利用
従来手法を利用デバイス メモリCPU
移動先マシン5

ライブマイグレーションの処理流れ
OS

OS
ハードウェア状態
BitVisor
ハードウェア状態
ハードウェアデバイス メモリCPU
移動元マシン

ネットワーク？
従来手法を利用
従来手法を利用

BitVisor
ハードウェア状態
ハードウェアデバイス メモリCPU
移動先マシン

5

VMM によるデバイス状態の取得＜従来のVMM＞＜提案手法＞
OSOS
仮想デバイス
従来VMM

デバイス状態

ハードウェア

BitVisor

デバイス状態

VMMが状態を取得 ハードウェア

6VMM によるデバイスレジスタの値取得＜従来のVMM＞＜提案手法＞

OSOS

仮想デバイス
102010

従来VMM

20

ハードウェア

レジスタ値
読み出し

10

BitVisor

20
10
ハードウェア
書き込み専用レジスタ7

I/O 監視による書き込み専用レジスタの値の取得
OS
デバイスドライバ

I/O監視
20

BitVisor

20
10

ハードウェア

書き込みI/O

書き込み専用
レジスタ8

I/O 監視による書き込み専用レジスタの値の取得
OS
デバイスドライバ

I/O監視
20

BitVisor

20
10

ハードウェア

書き込みI/O

書き込み専用レジスタ

書き込み専用レジスタへの書き込み I/O をどのように判別するか?
8

I/O の判別方法 (1/2)
以下の情報を合わせて判別
1. 宛先ポート▶

どのデバイスへの I/O か

2. I/O タイプ▶

読み込み or 書き込み

3. 書き込みデータ▶

一部の I/O は書き込みデータの特定ビットがセットされているか否かで書き込むレジスタが異なる

9

I/O の判別方法 (2/2)
4. デバイスの状態▶

他のレジスタの値によって書き込む先のレジスタが異なる

5. 直近の I/O▶

一部の I/O は直近の I/O によって書き込むレジスタが異なる．

10

I/O の判別方法 (2/2)
4. デバイスの状態▶

他のレジスタの値によって書き込む先のレジスタが異なる

5. 直近の I/O▶

一部の I/O は直近の I/O によって書き込むレジスタが異なる．

10

直近の I/O による書き込み先レジスタの違い

PortA
10PortB

デバイス①PortA 10 → ②PortB 20

PortA

PortB
20

デバイス
①PortB 20 → ②PortA 10

例: PortA と PortB に異なる順序で 1 度ずつ書き込む11直近の I/O による書き込み先レジスタの違い

10①①10PortA20PortB

PortB

デバイス
①PortA 10 → ②PortB 20PortA20デバイス①PortB 20 → ②PortA 10

例: PortA と PortB に異なる順序で 1 度ずつ書き込む11直近の I/O による書き込み先レジスタの違い

10①②②①10PortA20PortB10PortA20PortB20デバイス①PortA 10 → ②PortB 201020デバイス①PortB 20 → ②PortA 10

例: PortA と PortB に異なる順序で 1 度ずつ書き込む11直近の I/O による書き込み先レジスタの違い

10

①②②

①10PortA20PortB10PortA20PortB20デバイス①PortA 10 → ②PortB 201020デバイス①PortB 20 → ②PortA 10

書き込むレジスタが異なる

例: PortA と PortB に異なる順序で 1 度ずつ書き込む11

状態を取得するためには▶

状態は値ではなく，一連の I/O シーケンスとして記録する．
▶

▶

直近の I/O によって書き込み先レジスタが異なるため．

デバイス毎に書き込み専用レジスタへの I/O か否かを判別する処理を記述する必要がある．
▶

デバイス毎に仕様が異なるため．

以降では，デバイス状態取得の一例として PIC の初期化 I/O についての実装を述べる．

12

PIC のレジスタテーブル

13

PIC のレジスタテーブル

13

0x21 ポートに割り当てられる PIC のレジスタ
Write Only と Read/Write が混在している．

レジスタ 権限
ICW2
Write Only
ICW3
Write Only
ICW4
Write Only
OCW1
Read/Write▶

ICWx = Initialization Command Word▶

▶

PIC の初期化時に書き込まれるレジスタ

OCW1 = Operational Control Word▶

割り込みマスク14

0x21 ポートに割り当てられる PIC のレジスタ
Write Only と Read/Write が混在している．

レジスタ 権限
ICW2
Write Only
ICW3
Write Only
ICW4
Write Only
OCW1
Read/Write▶

ICWx = Initialization Command Word ← Write Only▶

▶

PIC の初期化時に書き込まれるレジスタ

OCW1 = Operational Control Word▶

割り込みマスク
14

PIC の初期化の仕様
PIC の初期化は ICW1〜ICW4 の 4 つのレジスタへの書き込む▶ ICW1 への書き込み I/O はポート 0x20 宛▶ ICW1 へ書き込む際は，書き込みデータの 4bit 目をセットする▶ ICW2〜ICW4 への書き込み I/O はポート 0x21 宛▶ ICW2〜ICW4 は ICW1 の発行直後に 0x21 へ書き込む▶

15

PIC の初期化シーケンスの I/O

16

PIC の初期化シーケンスの I/O
OUTB 0x20 0b00010001

16

PIC の初期化シーケンスの I/O
OUTB 0x20 0b00010001(0x20 への書き込み)&&(4bit 目が1)
=ICW116PIC の初期化シーケンスの I/O
OUTB 0x20 0b00010001(0x20 への書き込み)&&(4bit 目が1)
=ICW1OUTB 0x21 0b00110000
OUTB 0x21 0b00000100
OUTB 0x21 0b00000001

16PIC の初期化シーケンスの I/O
OUTB 0x20 0b00010001(0x20 への書き込み)&&(4bit 目が1)
=ICW1OUTB 0x21 0b00110000
OUTB 0x21 0b00000100

続く0x21への3回の書き込み=ICW2〜ICW4

OUTB 0x21 0b00000001

16PIC の初期化シーケンスの I/O
OUTB 0x20 0b00010001(0x20 への書き込み)&&(4bit 目が1)
=ICW1OUTB 0x21 0b00110000
OUTB 0x21 0b00000100
OUTB 0x21 0b00000001

続く0x21への3回の書き込み=ICW2〜ICW4
記録対象I/O

16

実装状況
機能を制限した Linux のライブマイグレーションが可能
OS(Linux)

BitVisor

ハードウェアネットワーク

BitVisor

ハードウェア

メモリ

PIC

メモリ

CPU

PIT

CPU

移動元マシン

PIC
PIT

移動先マシン

PIC=Programmable Interrupt Controller(割り込みコントローラ)
PIT=Programmable Interval Timer (タイマ)
17

実装状況
機能を制限した Linux のライブマイグレーションが可能
OS(Linux)
メモリ状態を転送
BitVisor

ネットワークハードウェア

BitVisor

ハードウェア

メモリ

PIC

メモリ

CPU

PIT

CPU

移動元マシン

PIC
PIT

移動先マシン

メモリのマイグレーションは Stop-and-Copy
17

実装状況
機能を制限した Linux のライブマイグレーションが可能
OS(Linux)
メモリ状態を転送
BitVisor
CPU状態を転送
ハードウェアネットワーク

BitVisor

ハードウェア

メモリ

PIC

メモリ

CPU

PIT

CPU

移動元マシン

PIC
PIT移動先マシン

17

実装状況
機能を制限した Linux のライブマイグレーションが可能
OS(Linux)

OS(Linux)
メモリ状態を転送
BitVisor
CPU状態を転送

ネットワーク

デバイス状態を転送
ハードウェア

BitVisor

ハードウェア

メモリ

PIC

メモリ

CPU

PIT

CPU

移動元マシン

PIC
PIT

移動先マシン17おまけ: ライブマイグレーション技術の応用先▶

Checkpoint▶

▶

状態の取得，復元はライブマイグレーションと同じ実行環境のクローン
転送後，止めなければよい
今回のデモも実際はクローン▶ 使い道は. . . ???
▶
▶

18

まとめ
▶

物理マシン間の OS ライブマイグレーション手法を提案▶
▶

▶

デバイスを仮想化しない VMM を利用
VMM で OS の I/O を監視し物理デバイスの状態を取得

機能を制限した Linux のライブマイグレーションを確認

19

今後の課題
1. PIC,PIT 以外のデバイスへの対応とその評価▶

NIC，ハードディスク，etc. . .

2. マイグレーション時のダウンタイムの削減▶

メモリのバックグラウンドコピーを実装

3. 脱仮想化と再仮想化の利用▶

VMM の動作によるオーバヘッドを削減

20

今後の課題
1. PIC,PIT 以外のデバイスへの対応とその評価▶

NIC，ハードディスク，etc. . .

2. マイグレーション時のダウンタイムの削減▶

メモリのバックグラウンドコピーを実装

3. 脱仮想化と再仮想化の利用▶

VMM の動作によるオーバヘッドを削減

20

脱仮想化と再仮想化の利用

OS
H/W

H/W

移行元マシン

移行先マシン21

脱仮想化と再仮想化の利用
再仮想化
OS
VMM

VMM

H/W

H/W

移行元マシン

移行先マシン21

脱仮想化と再仮想化の利用
ライブマイグレーション
OS

OS

VMM

VMM

H/W

H/W

移行元マシン

移行先マシン21

脱仮想化と再仮想化の利用
脱仮想化
OS
H/W

H/W

移行元マシン

移行先マシン21