Skip to content

Instantly share code, notes, and snippets.

@ryosan-470
Created March 10, 2017 00:59
Show Gist options
  • Save ryosan-470/163f1460cdb56cfd4ceb1604f44c48e6 to your computer and use it in GitHub Desktop.
Save ryosan-470/163f1460cdb56cfd4ceb1604f44c48e6 to your computer and use it in GitHub Desktop.
PPL2017 ライブ仮想マシン移送の実現技術と最新動向について

ライブ仮想マシン移送の実現技術と最新動向についてライブ仮想マシン

ライブ仮想マシン移送とは (Live migration): 仮想マシンを稼働させたまま,別の物理ホストへ移動させる技術

  • Xen
  • QEMU + KVM
  • VirtualBox
  • VMWare

などなどで利用できる.

嬉しいこと

  • VMの動的な再配置が簡単になる.

  • 恩恵を受けるシナリオ

    • 物理マシンのメンテナンス
    • 負荷分散
    • 消費電力の削減

(発表者が思う)ライブVM移送のいいところ

  • Googleのデータセンタ等で既に利用されていること.
  • ソフトウェア階層が深いが故に様々なアプローチが考えられる
  • 発展途上

Agenda

  • 仮想化技術について
    • ハイパーバイザとその簡単な役割
  • ライブVM移送の基礎
  • ライブVM移送の実現手法の最新動向
  • アプリとの関係

仮想化技術

  • 仮想マシンモニタ(VMM, ハイパーバイザ)と呼ばれるソフトウェアがVMを作り出す.
  • クラウド環境を中心に利用されている.
    • AWS EC2: Xenをベースとした仮想環境
    • GCP (GCE): KVM

CPUの仮想化

各VMの仮想CPUをハイパーバイザが実CPUにディスパッチ

メモリの仮想化

  • ハイパーバイザが実メモリへのマッピングを管理する
    • ゲストOS: 仮想アドレス(VA) - ゲスト物理アドレス(gPA)の対応を保持.
  • ソフトウェアとハードウェア仮想化支援を活用する方法がある
    • shadow paging
    • extended pt (intel) nested pt (amd)

VMの移送を考えたときにVMの仮想ハードウェア状態を他の物理ホストにコピーすれば移送ができそう.

ライブ移送は難しい

  • メモリ移送に時間がたってしまう
    • VMは稼働しているためVCPUやメモリの状態は転送中に変化してしまい,同じVMの状態を移送先で作ることは出来ない

ライブVM移送の種類

  • 3種類の代表的な移送方法
    • Pre-Copy Post-Copy Hybrid (Pre + Post)
  • 仮定:仮想ディスクは共有ストレージにあるとする

オーソドックス (Pre Copy)

まずはメモリをコピーしメモリコピーが終わったら他の状態等をコピーする.

2段階のメモリコピー

  • Iteration Phase
    • 前回の移送時にdirtyとなったメモリページを転送する
      • VMの全メモリを移送時に転送
      • 転送後に更新のあったページを転送する

Dirty Page Tracking

  • 更新のあったメモリページを検出する.

Pre-Copyの問題点

  • Write-intensive なアプリが稼働すると移送時間が長期化しがち

Post-Copy

  • 移送先でVMを開始して,順次メモリを転送する

Hybrid: Pre-Copy + Post-Copy

両者のいいところどりしたようなメモリ転送技術

Java-Aware VM Migration

JVMの知識を利用してメモリ転送を効率化する手法

ライブVM移送とアプリ

まとめ

Q & A

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment