SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
BHyVe: The BSD Hypervisor
  Takuya ASADA a.k.a @syuu1228

  28. Sep. 2012


12年10月4日木曜日
仮想化とFreeBSD




12年10月4日木曜日
仮想化とは?
                       プロセス         プロセス


              プロセス
                        OS            OS


                OS       ハイパーバイザ


              ハードウェア         ハードウェア

               従来             仮想化
  ✤   一台のコンピュータ上に複数の仮想的なコンピュータを動作させ、そ
      れぞれの上でOS・アプリケーションを実行

  ✤   複数のOSを調停するソフトウェア→ハイパーバイザ
12年10月4日木曜日
FreeBSDにおける仮想化の種類



  ✤   完全仮想化 VirtualBox, Xen(HVM), BHyVe

  ✤   準仮想化 Xen(PVM)

  ✤   コンテナ型仮想化 Jail




12年10月4日木曜日
完全仮想化
                 プロセス    プロセス



                 既存OS    既存OS


                   ハイパーバイザ


                    ハードウェア



  ✤   実ハードウェアを完全にエミュレートし、既存のOSをそのまま仮想
      マシン上で動作させる ↔ 準仮想化

  ✤   高速化の為、ゲストマシンで実行されるプログラムを直接実CPUで
      実行

12年10月4日木曜日
ゲストマシンのプログラムの直接実行

                          カーネルモード(ring0)
                            特権命令の実行を
                            ハンドル、エミュ
                            レーション実行
                                     特権命令が実行されたら
                                      カーネルモードへ遷移
                            ゲストプログラム
                             を直接実行


                          ユーザモード(ring3)

  ✤
      仮想化対象のCPUに期待される動作

      ✤
          ユーザモードでゲストマシン上のプログラムを直接実行

      ✤
          システム全体に影響を与える命令(センシティブ命令)はユーザモードから実行出来ない(=特権命令)
          →トラップが発生してカーネルモードへ遷移

      ✤
          トラップハンドラで実行しようとした特権命令に合わせてエミュレーション処理を行い、ゲストプログラムの実行に戻る


12年10月4日木曜日
x86アーキテクチャの問題点
                  カーネルモード(ring0)
                    特権命令の実行を
                    ハンドル、エミュ
                     レーション実行


                      ✕
                    ゲストプログラム
                     を直接実行


                  ユーザモード(ring3)



      ✤   特権命令ではないセンシティブ命令がある
          →権限が不足していない為トラップされない
          これの実行を回避する必要がある


12年10月4日木曜日
バイナリトランスレーション



  ✤   ゲストのプログラムを実行中に書き換え、センシティブ命令をエミュ
      レーション処理に置き換える事により実行を回避

  ✤   現在では後述のハードウェア仮想化支援が主流になったが、以前はこ
      れが主流の方式だった




12年10月4日木曜日
ハードウェア仮想化支援機能による
  仮想化(Intel VT, AMD-V)
  ✤   CPUにRingとは独立した仮想化用のモードを追
                                          ハイパーバイザ ゲストモード
      加:                                    モード
      ハイパーバイザモード、ゲストモード
                                           カーネル   カーネル
                                 ring 0     モード    モード
  ✤   ゲストモードはセンシティブ命令の実行などエ
      ミュレーションが必要な処理が発生した時点で
                                 ring 3     ユーザ    ユーザ
      中断され、ハイパーバイザモードへ復帰する                  モード    モード


  ✤   ハードウェアレベルで仮想化に対応する事によ
      り、仮想化オーバヘッドを低減しながらハイパ
      ーバイザの実装を単純化出来るようになった

12年10月4日木曜日
VirtualBox
                                   プロセス


                          プロセス
                                  ゲストOS


                       ホストOS     ハイパーバイザ


                             ハードウェア


  ✤   BHyVe以外で唯一FreeBSD上で動作するハードウェア仮想化支援対応のハイパーバイザ

  ✤   ホストカーネル上のドライバとしてハイパーバイザが動作、ゲストマシンは通常のプロセスとして
      FreeBSDが管理

  ✤   デスクトップ用途が中心

  ✤   ライセンス:GPLv2

  ✤   オラクルが開発、多くのOS上で動作

12年10月4日木曜日
Xen(HVM)
                          プロセス       プロセス



                          dom0        HVM


                                ハイパーバイザ


                                ハードウェア


  ✤   ハードウェア上で直接Xenハイパーバイザが動作

  ✤   ユーザからの操作やハードウェアへのアクセスには「dom0」と呼ばれる準仮想化された管理OSを用いる
      (FreeBSDは対応していない)

  ✤   サーバ用途が中心

  ✤   ライセンス:GPLv2

  ✤   XenハイパーバイザはXenコミュニティで開発
      各OSの準仮想化対応はそれぞれのOSのコミュニティ・開発元で開発
12年10月4日木曜日
Linux KVM(参考)
                                  プロセス


                       プロセス
                                 ゲストOS


                      ホストOS     ハイパーバイザ


                             ハードウェア


  ✤   ハイパーバイザはLinuxカーネルに統合

  ✤   ゲストマシンは通常のプロセスとしてLinuxが管理

  ✤   サーバ用途が中心

  ✤   ライセンス:GPLv2

  ✤   Linuxカーネルコミュニティで開発

12年10月4日木曜日
BHyVe
                                      プロセス


                             プロセス
                                     ゲストOS


                            ホストOS   ハイパーバイザ


                                ハードウェア


  ✤   Linux KVMのFreeBSD版!

  ✤   ハイパーバイザはFreeBSDカーネルに統合

  ✤   ゲストマシンは通常のプロセスとしてFreeBSDが管理

  ✤   サーバ用途が中心

  ✤   ライセンス:BSDL

  ✤   FreeBSDコミュニティで開発(baseへのマージを目指している)
12年10月4日木曜日
準仮想化 - Xen(PVM)
                           プロセス     プロセス



                            dom0     PVM


                              ハイパーバイザ


                               ハードウェア


  ✤   実ハードウェアを完全にエミュレートするのではなく、仮想化に都合が良い構造にゲストOSを改変
      センシティブ命令の実行やハードウェアアクセスなどハイパーバイザによるエミュレーションが必要な処理は、ゲストからハイ
      パーバイザを呼び出す「ハイパーバイザコール」に置き換え

  ✤   高速化の為、ゲストマシンで実行されるプログラムを直接実CPUで実行
      センシティブ命令の実行など実行されてはまずい処理は予め書き換えられているので、バイナリトランスレーションやハードウ
      ェア仮想化支援を必要としない

  ✤   現在ではハードウェア仮想化支援(HVM)を使う事が多くなったが、登場時はハードウェア仮想化は未だ存在しておらず、バイ
      ナリトランスレーションよりもいくつかのベンチマークで性能が高く、オーバヘッドも低かった


12年10月4日木曜日
準仮想化デバイス
  ✤   完全仮想化環境で用いられているHDDやNICなどの仮想デバイスは実デ
      バイスをエミュレートしているのでゲストOS上の既存のドライバが使え
      るが、ゲスト・ハイパーバイザ間のモード切り替え回数が無駄に多い、
      メモリコピーが発生するなど必ずしも性能が高くない

  ✤   準仮想化環境で用いられている仮想デバイスはゲスト・ハイパーバイザ
      間のデータのやり取りに最適化されている為、既存デバイスのエミュレ
      ーションよりも性能が高い

  ✤   準仮想化デバイスを完全仮想化環境にも導入しよう→ virtio
      BHyVeでも使用

12年10月4日木曜日
コンテナ型仮想化
                   プロセス     プロセス



                    コンテナ
                                OS


                      ハードウェア


  ✤   1つのOS上に擬似的に複数のOS環境を作り、OSの各種リソース情報をコンテナごと
      に別々に管理する事により、プロセスに対し別々のOSであるかのように見せかける

  ✤   オーバヘッドは最も低いが、OSは1つしか動作していないので再起動やpanicには全
      コンテナが巻き込まれる、1つのバージョンのOSにしか対応しない、異なるOSの混
      在環境は作れないなどの制約がある

12年10月4日木曜日
コンテナ型仮想化

  ✤   chroot
      あるプロセスに対して、あるディレクトリをルートディレクトリに見せる
      (ls /しても指定したディレクトリより上位ディレクトリは見えない)

  ✤   jail
      chrootに加えて、プロセス空間も独立
      (ps axを実行してもjailの外側のプロセスは見えない)

  ✤   jail + VIMAGE
      更にネットワークスタックも独立
      (netstat -nrを実行してもjailの外側のルーティングテーブルは見えない)

12年10月4日木曜日
BHyVe詳解




12年10月4日木曜日
BHyVeとは
  ✤   Linux KVMのようなFreeBSDカーネルに統合されたハイパーバイザ

  ✤   FreeBSD 10へのマージを目指して開発中

  ✤   Intel VT-x、EPT対応CPUで動作(Nehalem以降のIntel CPU)

  ✤   対応しているホストOS:FreeBSD 8.1 - 10/amd64(無変更)

  ✤   対応しているゲストOS:FreeBSD 7.2 - 10/amd64(要改造)

  ✤   対応デバイス:仮想ディスク、仮想NIC、仮想コンソール、PCIパススルー

  ✤   SMP対応(最大8コア)

12年10月4日木曜日
BHyVe実演
              自分でも試してみたい人は
              http://callfortesting.org/bhyve/
              をチェック!




12年10月4日木曜日
/boot/loader.conf

      hw.physmem="0x100000000"
      vmm_load=”YES”




  ✤   hw.physmemでホストOSのメモリサイズを制限
      (0x100000000 = 4GB)

  ✤   BHyVeのカーネルモジュールであるvmm.koをロード



12年10月4日木曜日
/usr/sbin/bhyveload
      # /usr/sbin/bhyveload -m 256 -h /usr/guest myguest
      # ls /dev/vmm
      myguest


  ✤   VMインスタンス(/dev/vmm/$VMNAME)を作成し、BSDカーネルをVMインスタ
      ンスのメモリ領域にロードして起動可能な状態を作る

  ✤   BIOSが無いのでディスクイメージのブートセクタから起動できない。代わりに、
      bhyveloadにより64bitモードでFreeBSDカーネルを実行する為の様々な初期化処理を行
      なっている

  ✤   ロードするだけで実行はしない。ブートローダが走っているように見えるのは、ホスト
      OSへ移植されたゲスト専用のブートローダが動いているだけ

12年10月4日木曜日
/usr/sbin/bhyve

      # /usr/sbin/bhyve -c 2 -m 256 -s 1,virtio-net,tap0
      -s 2,virtio-blk,/usr/guest/diskdev.img myguest


  ✤   bhyveloadが初期化したVMインスタンスを実行し、ディスク、NIC、
      コンソールなどのデバイスエミュレーション処理を行う

  ✤   VMインスタンスの状態は、プロセス内ではなく/dev/vmm/
      $VMNAMEというデバイス上、つまりカーネル内に保持される。こ
      のファイルへread(), write(), mmap()する事によりVM内のメモリ空間
      にアクセス出来る

12年10月4日木曜日
カーネルとユーザランドの役割分担
                       ハイパーバイザモード                    ゲストモード

                                                  ゲストOS
              カーネル

                     FreeBSDカーネル
                                         vmm.ko

                                 ioctl
              ユーザ




                       仮想デバイス

                     /usr/sbin/bhyve


  ✤   各デバイスのエミュレーション、仮想マシンのコンソールなどのUIはユーザ
      ランドで動作する/usr/sbin/bhyveが受け持つ

  ✤   VT-xの機能を用い、CPUをゲストモードへ切り替えるのはカーネルにロー
      ドされたvmm.koが受け持つ

12年10月4日木曜日
メモリ仮想化


  ✤   hw.physmemで制限されたメモリ領域の外側から仮想マシン起動時に
      固定的に割り付け

  ✤   仮想マシン間のページ共有無し

  ✤   オンデマンドメモリ割り付け無し

  ✤   これにより、PCIパススルー時のメモリマップが簡単になった



12年10月4日木曜日
PCIパススルー

  ✤   Intel VT-dにより物理PCIデバイスをパススルー

  ✤   IOAPICエミュレーションを持たない為、レガシ割り込みは非サポー
      ト
      MSI割り込みのみをサポート(MSI-X割り込みも非サポート)

  ✤   ホストOSで割り込みを受け取ってゲストへ送り込むため、ホストに
      stubドライバが必要


12年10月4日木曜日
virtio


  ✤   virtioの仕様に沿ったvirtio-net, virtio-blkをサポート
      http://ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf

  ✤   virtio-netは/dev/tapNを通してイーサネットフレームを送受信

  ✤   virtio-blkはホストファイルシステム上のディスクイメージを読み書き




12年10月4日木曜日
パフォーマンス
                                     make buildworld
                 1500


                 1125


                  750


                  375


                   0
                        Bare Metal       Partitioned   Virtualized


                                     build time(sec)


  ✤   /usr/srcをNFS上に/usr/objをローカルディスクにおいた時の
      make build world時の速度を比較

12年10月4日木曜日
ゲストカーネルの変更点

  ✤   カスタムコンソール&デバッグポート
      → com0 emulationかVGA emulationが必要

  ✤   Local APICはMSR経由でアクセス(MMIO非サポートの為)
      → Local APIC MMIO supportが必要

  ✤   セカンダリプロセッサを直接64bitモードで起動
      → BIOS emulationが必要(?)


12年10月4日木曜日
実装中の機能

  ✤   BIOS emulation (@syuu1228‘s Google Summer of Code 2012 project)

  ✤   Guest suspend/resume (@iorivur)

  ✤   AHCI emulation?

  ✤   MMIO local APIC?

  ✤   IOAPIC emulation?

  ✤   AMD-V support?

  ✤   Older Intel CPU support(without EPT)?

12年10月4日木曜日
やってくれる人がいるといいな



  ✤   libvirt対応

  ✤   NetBSD, OpenBSD, Linuxなどのローダ

  ✤   PCIパススルーのテスト




12年10月4日木曜日
最新情報はこちらまで



  ✤   http://bhyve.org/

  ✤   @syuu1228




12年10月4日木曜日

Mais conteúdo relacionado

Mais procurados

軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -Go Saito
 
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)株式会社サードウェア
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会Etsuji Nakai
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -zgock
 
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門VirtualTech Japan Inc.
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrantYu Ito
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)Takeshi HASEGAWA
 
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料zgock
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)Takeshi HASEGAWA
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08tokuhy
 
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)tokuhy
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presenKouhei Maeda
 
OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)Takeshi HASEGAWA
 
Unsafe Nested Virtualization on Intel CPU
Unsafe Nested Virtualization on Intel CPUUnsafe Nested Virtualization on Intel CPU
Unsafe Nested Virtualization on Intel CPUTakaaki Fukai
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute EngineRyo ONODERA
 
Eucalyptus on OpenStack
Eucalyptus on OpenStackEucalyptus on OpenStack
Eucalyptus on OpenStackirix_jp
 
An idea of bios emulation on b hy ve
An idea of bios emulation on b hy veAn idea of bios emulation on b hy ve
An idea of bios emulation on b hy veTakuya ASADA
 

Mais procurados (20)

軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
 
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrant
 
Free bsd jail入門
Free bsd jail入門Free bsd jail入門
Free bsd jail入門
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
 
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
 
LXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoyaLXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoya
 
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
Play with UEFI
Play with UEFIPlay with UEFI
Play with UEFI
 
OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)
 
Unsafe Nested Virtualization on Intel CPU
Unsafe Nested Virtualization on Intel CPUUnsafe Nested Virtualization on Intel CPU
Unsafe Nested Virtualization on Intel CPU
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute Engine
 
Eucalyptus on OpenStack
Eucalyptus on OpenStackEucalyptus on OpenStack
Eucalyptus on OpenStack
 
An idea of bios emulation on b hy ve
An idea of bios emulation on b hy veAn idea of bios emulation on b hy ve
An idea of bios emulation on b hy ve
 

Destaque

Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Takuya ASADA
 
コンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかコンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかえむ ばーど
 
今時のLinuxにおけるGPUエンコード事情
今時のLinuxにおけるGPUエンコード事情今時のLinuxにおけるGPUエンコード事情
今時のLinuxにおけるGPUエンコード事情zgock
 
しつこくXenとzfsで作る家庭内vdiサーバ2015年版
しつこくXenとzfsで作る家庭内vdiサーバ2015年版しつこくXenとzfsで作る家庭内vdiサーバ2015年版
しつこくXenとzfsで作る家庭内vdiサーバ2015年版zgock
 
Bios 275 Final Project
Bios 275 Final ProjectBios 275 Final Project
Bios 275 Final Projectguestd34413
 
Lifting Matters Issue 11 Febuary 2010
Lifting Matters Issue 11 Febuary 2010Lifting Matters Issue 11 Febuary 2010
Lifting Matters Issue 11 Febuary 2010Alan Bassett
 
R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"
R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"
R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"Randolph Preisinger-Kleine
 
Методичні рекомендації щодо викладання інформатики
Методичні рекомендації щодо викладання інформатикиМетодичні рекомендації щодо викладання інформатики
Методичні рекомендації щодо викладання інформатикиguest2f0bcd
 
H & S Reform Progress October 11
H & S Reform  Progress October 11H & S Reform  Progress October 11
H & S Reform Progress October 11Alan Bassett
 
Winslow overview june 12 2013
Winslow overview june 12 2013Winslow overview june 12 2013
Winslow overview june 12 2013vbullara
 
Uw speaking-of-design-shared
Uw speaking-of-design-sharedUw speaking-of-design-shared
Uw speaking-of-design-sharedDavid Conrad
 
Lifting Matters Issue 9 December 2009
Lifting Matters Issue 9 December 2009Lifting Matters Issue 9 December 2009
Lifting Matters Issue 9 December 2009Alan Bassett
 
Total learning: The new future of work and learning
Total learning: The new future of work and learningTotal learning: The new future of work and learning
Total learning: The new future of work and learningBrightwave Group
 
I Ovo Ce Proci
I Ovo Ce ProciI Ovo Ce Proci
I Ovo Ce Prociverka 123
 

Destaque (20)

Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
 
コンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかコンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのか
 
今時のLinuxにおけるGPUエンコード事情
今時のLinuxにおけるGPUエンコード事情今時のLinuxにおけるGPUエンコード事情
今時のLinuxにおけるGPUエンコード事情
 
しつこくXenとzfsで作る家庭内vdiサーバ2015年版
しつこくXenとzfsで作る家庭内vdiサーバ2015年版しつこくXenとzfsで作る家庭内vdiサーバ2015年版
しつこくXenとzfsで作る家庭内vdiサーバ2015年版
 
Bios 275 Final Project
Bios 275 Final ProjectBios 275 Final Project
Bios 275 Final Project
 
Lifting Matters Issue 11 Febuary 2010
Lifting Matters Issue 11 Febuary 2010Lifting Matters Issue 11 Febuary 2010
Lifting Matters Issue 11 Febuary 2010
 
R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"
R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"
R3L+ Overview of Grundtvig project "Quality Framework For Learning Regions"
 
Методичні рекомендації щодо викладання інформатики
Методичні рекомендації щодо викладання інформатикиМетодичні рекомендації щодо викладання інформатики
Методичні рекомендації щодо викладання інформатики
 
Kelly C. Ruggles
Kelly C. RugglesKelly C. Ruggles
Kelly C. Ruggles
 
H & S Reform Progress October 11
H & S Reform  Progress October 11H & S Reform  Progress October 11
H & S Reform Progress October 11
 
Evolution2
Evolution2Evolution2
Evolution2
 
Kelly C. Ruggles
Kelly C.  RugglesKelly C.  Ruggles
Kelly C. Ruggles
 
Winslow overview june 12 2013
Winslow overview june 12 2013Winslow overview june 12 2013
Winslow overview june 12 2013
 
Dg Onefashion
Dg OnefashionDg Onefashion
Dg Onefashion
 
Uw speaking-of-design-shared
Uw speaking-of-design-sharedUw speaking-of-design-shared
Uw speaking-of-design-shared
 
Backtoschool2012
Backtoschool2012Backtoschool2012
Backtoschool2012
 
Lifting Matters Issue 9 December 2009
Lifting Matters Issue 9 December 2009Lifting Matters Issue 9 December 2009
Lifting Matters Issue 9 December 2009
 
Total learning: The new future of work and learning
Total learning: The new future of work and learningTotal learning: The new future of work and learning
Total learning: The new future of work and learning
 
Casino Night 2009
Casino Night 2009Casino Night 2009
Casino Night 2009
 
I Ovo Ce Proci
I Ovo Ce ProciI Ovo Ce Proci
I Ovo Ce Proci
 

Semelhante a BHyVe: The BSD Hypervisor

Osc2009 Sendai Xen 0124
Osc2009 Sendai Xen 0124Osc2009 Sendai Xen 0124
Osc2009 Sendai Xen 0124Kazuhisa Hara
 
N110 ws12概要 osamut_公開版
N110 ws12概要 osamut_公開版N110 ws12概要 osamut_公開版
N110 ws12概要 osamut_公開版Osamu Takazoe
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
Technology Used in Virtual Machine (Jan 2008)
Technology Used in Virtual Machine (Jan 2008)Technology Used in Virtual Machine (Jan 2008)
Technology Used in Virtual Machine (Jan 2008)Kuniyasu Suzaki
 
20120822_dstn技術交流会_仮想化について
20120822_dstn技術交流会_仮想化について20120822_dstn技術交流会_仮想化について
20120822_dstn技術交流会_仮想化についてdstn
 
ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化Toru Tamaki
 
仮想化技術の基本の基本
仮想化技術の基本の基本仮想化技術の基本の基本
仮想化技術の基本の基本terada
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティKuniyasu Suzaki
 
20120609 cod ws2012概要
20120609 cod ws2012概要20120609 cod ws2012概要
20120609 cod ws2012概要Osamu Takazoe
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようTakashi Makino
 
2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウム2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウムTakahiro Shinagawa
 
Windows Server 2012 R2 Hyper-V と Windows Azure 勘所
Windows Server 2012 R2 Hyper-V と Windows Azure 勘所Windows Server 2012 R2 Hyper-V と Windows Azure 勘所
Windows Server 2012 R2 Hyper-V と Windows Azure 勘所Keiji Kamebuchi
 
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoyaインフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 NagoyaSatoshi Shimazaki
 
Windows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたWindows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたTakashi Kanai
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点Kuniyasu Suzaki
 
2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)
2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)
2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)Takahiro Shinagawa
 
Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208Manabu Ori
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装Takuya ASADA
 

Semelhante a BHyVe: The BSD Hypervisor (20)

Osc2009 Sendai Xen 0124
Osc2009 Sendai Xen 0124Osc2009 Sendai Xen 0124
Osc2009 Sendai Xen 0124
 
N110 ws12概要 osamut_公開版
N110 ws12概要 osamut_公開版N110 ws12概要 osamut_公開版
N110 ws12概要 osamut_公開版
 
Osc2009 Do Xen Hara
Osc2009 Do Xen HaraOsc2009 Do Xen Hara
Osc2009 Do Xen Hara
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
Technology Used in Virtual Machine (Jan 2008)
Technology Used in Virtual Machine (Jan 2008)Technology Used in Virtual Machine (Jan 2008)
Technology Used in Virtual Machine (Jan 2008)
 
20120822_dstn技術交流会_仮想化について
20120822_dstn技術交流会_仮想化について20120822_dstn技術交流会_仮想化について
20120822_dstn技術交流会_仮想化について
 
ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化
 
仮想化技術の基本の基本
仮想化技術の基本の基本仮想化技術の基本の基本
仮想化技術の基本の基本
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
 
20120609 cod ws2012概要
20120609 cod ws2012概要20120609 cod ws2012概要
20120609 cod ws2012概要
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウム2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウム
 
Windows Server 2012 R2 Hyper-V と Windows Azure 勘所
Windows Server 2012 R2 Hyper-V と Windows Azure 勘所Windows Server 2012 R2 Hyper-V と Windows Azure 勘所
Windows Server 2012 R2 Hyper-V と Windows Azure 勘所
 
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoyaインフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
インフラエンジニアなら知っておきたいストレージのはなし@OSC 2012 Nagoya
 
Windows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたWindows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみた
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
 
2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)
2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)
2010-11-02 第1回クラウドコンピューティング基盤シンポジウム(品川)
 
Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208Kernel vm#9 powerkvm-dist-20131208
Kernel vm#9 powerkvm-dist-20131208
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 

Mais de Takuya ASADA

Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークTakuya ASADA
 
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」Takuya ASADA
 
ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜Takuya ASADA
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingTakuya ASADA
 
OSvパンフレット v3
OSvパンフレット v3OSvパンフレット v3
OSvパンフレット v3Takuya ASADA
 
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallTakuya ASADA
 
Linux network stack
Linux network stackLinux network stack
Linux network stackTakuya ASADA
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminalTakuya ASADA
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがないTakuya ASADA
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
OSvパンフレット
OSvパンフレットOSvパンフレット
OSvパンフレットTakuya ASADA
 
「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2Takuya ASADA
 
「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1Takuya ASADA
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD HypervisorImplements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD HypervisorTakuya ASADA
 
仮想化環境での利用者公平性
仮想化環境での利用者公平性仮想化環境での利用者公平性
仮想化環境での利用者公平性Takuya ASADA
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディングTakuya ASADA
 
マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法Takuya ASADA
 

Mais de Takuya ASADA (20)

Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
 
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」
 
ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meeting
 
OSvパンフレット v3
OSvパンフレット v3OSvパンフレット v3
OSvパンフレット v3
 
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/Fall
 
OSv噺
OSv噺OSv噺
OSv噺
 
Linux network stack
Linux network stackLinux network stack
Linux network stack
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
OSvパンフレット
OSvパンフレットOSvパンフレット
OSvパンフレット
 
「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2
 
「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD HypervisorImplements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
 
仮想化環境での利用者公平性
仮想化環境での利用者公平性仮想化環境での利用者公平性
仮想化環境での利用者公平性
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法
 

BHyVe: The BSD Hypervisor

  • 1. BHyVe: The BSD Hypervisor Takuya ASADA a.k.a @syuu1228 28. Sep. 2012 12年10月4日木曜日
  • 3. 仮想化とは? プロセス プロセス プロセス OS OS OS ハイパーバイザ ハードウェア ハードウェア 従来 仮想化 ✤ 一台のコンピュータ上に複数の仮想的なコンピュータを動作させ、そ れぞれの上でOS・アプリケーションを実行 ✤ 複数のOSを調停するソフトウェア→ハイパーバイザ 12年10月4日木曜日
  • 4. FreeBSDにおける仮想化の種類 ✤ 完全仮想化 VirtualBox, Xen(HVM), BHyVe ✤ 準仮想化 Xen(PVM) ✤ コンテナ型仮想化 Jail 12年10月4日木曜日
  • 5. 完全仮想化 プロセス プロセス 既存OS 既存OS ハイパーバイザ ハードウェア ✤ 実ハードウェアを完全にエミュレートし、既存のOSをそのまま仮想 マシン上で動作させる ↔ 準仮想化 ✤ 高速化の為、ゲストマシンで実行されるプログラムを直接実CPUで 実行 12年10月4日木曜日
  • 6. ゲストマシンのプログラムの直接実行 カーネルモード(ring0) 特権命令の実行を ハンドル、エミュ レーション実行 特権命令が実行されたら カーネルモードへ遷移 ゲストプログラム を直接実行 ユーザモード(ring3) ✤ 仮想化対象のCPUに期待される動作 ✤ ユーザモードでゲストマシン上のプログラムを直接実行 ✤ システム全体に影響を与える命令(センシティブ命令)はユーザモードから実行出来ない(=特権命令) →トラップが発生してカーネルモードへ遷移 ✤ トラップハンドラで実行しようとした特権命令に合わせてエミュレーション処理を行い、ゲストプログラムの実行に戻る 12年10月4日木曜日
  • 7. x86アーキテクチャの問題点 カーネルモード(ring0) 特権命令の実行を ハンドル、エミュ レーション実行 ✕ ゲストプログラム を直接実行 ユーザモード(ring3) ✤ 特権命令ではないセンシティブ命令がある →権限が不足していない為トラップされない これの実行を回避する必要がある 12年10月4日木曜日
  • 8. バイナリトランスレーション ✤ ゲストのプログラムを実行中に書き換え、センシティブ命令をエミュ レーション処理に置き換える事により実行を回避 ✤ 現在では後述のハードウェア仮想化支援が主流になったが、以前はこ れが主流の方式だった 12年10月4日木曜日
  • 9. ハードウェア仮想化支援機能による 仮想化(Intel VT, AMD-V) ✤ CPUにRingとは独立した仮想化用のモードを追 ハイパーバイザ ゲストモード 加: モード ハイパーバイザモード、ゲストモード カーネル カーネル ring 0 モード モード ✤ ゲストモードはセンシティブ命令の実行などエ ミュレーションが必要な処理が発生した時点で ring 3 ユーザ ユーザ 中断され、ハイパーバイザモードへ復帰する モード モード ✤ ハードウェアレベルで仮想化に対応する事によ り、仮想化オーバヘッドを低減しながらハイパ ーバイザの実装を単純化出来るようになった 12年10月4日木曜日
  • 10. VirtualBox プロセス プロセス ゲストOS ホストOS ハイパーバイザ ハードウェア ✤ BHyVe以外で唯一FreeBSD上で動作するハードウェア仮想化支援対応のハイパーバイザ ✤ ホストカーネル上のドライバとしてハイパーバイザが動作、ゲストマシンは通常のプロセスとして FreeBSDが管理 ✤ デスクトップ用途が中心 ✤ ライセンス:GPLv2 ✤ オラクルが開発、多くのOS上で動作 12年10月4日木曜日
  • 11. Xen(HVM) プロセス プロセス dom0 HVM ハイパーバイザ ハードウェア ✤ ハードウェア上で直接Xenハイパーバイザが動作 ✤ ユーザからの操作やハードウェアへのアクセスには「dom0」と呼ばれる準仮想化された管理OSを用いる (FreeBSDは対応していない) ✤ サーバ用途が中心 ✤ ライセンス:GPLv2 ✤ XenハイパーバイザはXenコミュニティで開発 各OSの準仮想化対応はそれぞれのOSのコミュニティ・開発元で開発 12年10月4日木曜日
  • 12. Linux KVM(参考) プロセス プロセス ゲストOS ホストOS ハイパーバイザ ハードウェア ✤ ハイパーバイザはLinuxカーネルに統合 ✤ ゲストマシンは通常のプロセスとしてLinuxが管理 ✤ サーバ用途が中心 ✤ ライセンス:GPLv2 ✤ Linuxカーネルコミュニティで開発 12年10月4日木曜日
  • 13. BHyVe プロセス プロセス ゲストOS ホストOS ハイパーバイザ ハードウェア ✤ Linux KVMのFreeBSD版! ✤ ハイパーバイザはFreeBSDカーネルに統合 ✤ ゲストマシンは通常のプロセスとしてFreeBSDが管理 ✤ サーバ用途が中心 ✤ ライセンス:BSDL ✤ FreeBSDコミュニティで開発(baseへのマージを目指している) 12年10月4日木曜日
  • 14. 準仮想化 - Xen(PVM) プロセス プロセス dom0 PVM ハイパーバイザ ハードウェア ✤ 実ハードウェアを完全にエミュレートするのではなく、仮想化に都合が良い構造にゲストOSを改変 センシティブ命令の実行やハードウェアアクセスなどハイパーバイザによるエミュレーションが必要な処理は、ゲストからハイ パーバイザを呼び出す「ハイパーバイザコール」に置き換え ✤ 高速化の為、ゲストマシンで実行されるプログラムを直接実CPUで実行 センシティブ命令の実行など実行されてはまずい処理は予め書き換えられているので、バイナリトランスレーションやハードウ ェア仮想化支援を必要としない ✤ 現在ではハードウェア仮想化支援(HVM)を使う事が多くなったが、登場時はハードウェア仮想化は未だ存在しておらず、バイ ナリトランスレーションよりもいくつかのベンチマークで性能が高く、オーバヘッドも低かった 12年10月4日木曜日
  • 15. 準仮想化デバイス ✤ 完全仮想化環境で用いられているHDDやNICなどの仮想デバイスは実デ バイスをエミュレートしているのでゲストOS上の既存のドライバが使え るが、ゲスト・ハイパーバイザ間のモード切り替え回数が無駄に多い、 メモリコピーが発生するなど必ずしも性能が高くない ✤ 準仮想化環境で用いられている仮想デバイスはゲスト・ハイパーバイザ 間のデータのやり取りに最適化されている為、既存デバイスのエミュレ ーションよりも性能が高い ✤ 準仮想化デバイスを完全仮想化環境にも導入しよう→ virtio BHyVeでも使用 12年10月4日木曜日
  • 16. コンテナ型仮想化 プロセス プロセス コンテナ OS ハードウェア ✤ 1つのOS上に擬似的に複数のOS環境を作り、OSの各種リソース情報をコンテナごと に別々に管理する事により、プロセスに対し別々のOSであるかのように見せかける ✤ オーバヘッドは最も低いが、OSは1つしか動作していないので再起動やpanicには全 コンテナが巻き込まれる、1つのバージョンのOSにしか対応しない、異なるOSの混 在環境は作れないなどの制約がある 12年10月4日木曜日
  • 17. コンテナ型仮想化 ✤ chroot あるプロセスに対して、あるディレクトリをルートディレクトリに見せる (ls /しても指定したディレクトリより上位ディレクトリは見えない) ✤ jail chrootに加えて、プロセス空間も独立 (ps axを実行してもjailの外側のプロセスは見えない) ✤ jail + VIMAGE 更にネットワークスタックも独立 (netstat -nrを実行してもjailの外側のルーティングテーブルは見えない) 12年10月4日木曜日
  • 19. BHyVeとは ✤ Linux KVMのようなFreeBSDカーネルに統合されたハイパーバイザ ✤ FreeBSD 10へのマージを目指して開発中 ✤ Intel VT-x、EPT対応CPUで動作(Nehalem以降のIntel CPU) ✤ 対応しているホストOS:FreeBSD 8.1 - 10/amd64(無変更) ✤ 対応しているゲストOS:FreeBSD 7.2 - 10/amd64(要改造) ✤ 対応デバイス:仮想ディスク、仮想NIC、仮想コンソール、PCIパススルー ✤ SMP対応(最大8コア) 12年10月4日木曜日
  • 20. BHyVe実演 自分でも試してみたい人は http://callfortesting.org/bhyve/ をチェック! 12年10月4日木曜日
  • 21. /boot/loader.conf hw.physmem="0x100000000" vmm_load=”YES” ✤ hw.physmemでホストOSのメモリサイズを制限 (0x100000000 = 4GB) ✤ BHyVeのカーネルモジュールであるvmm.koをロード 12年10月4日木曜日
  • 22. /usr/sbin/bhyveload # /usr/sbin/bhyveload -m 256 -h /usr/guest myguest # ls /dev/vmm myguest ✤ VMインスタンス(/dev/vmm/$VMNAME)を作成し、BSDカーネルをVMインスタ ンスのメモリ領域にロードして起動可能な状態を作る ✤ BIOSが無いのでディスクイメージのブートセクタから起動できない。代わりに、 bhyveloadにより64bitモードでFreeBSDカーネルを実行する為の様々な初期化処理を行 なっている ✤ ロードするだけで実行はしない。ブートローダが走っているように見えるのは、ホスト OSへ移植されたゲスト専用のブートローダが動いているだけ 12年10月4日木曜日
  • 23. /usr/sbin/bhyve # /usr/sbin/bhyve -c 2 -m 256 -s 1,virtio-net,tap0 -s 2,virtio-blk,/usr/guest/diskdev.img myguest ✤ bhyveloadが初期化したVMインスタンスを実行し、ディスク、NIC、 コンソールなどのデバイスエミュレーション処理を行う ✤ VMインスタンスの状態は、プロセス内ではなく/dev/vmm/ $VMNAMEというデバイス上、つまりカーネル内に保持される。こ のファイルへread(), write(), mmap()する事によりVM内のメモリ空間 にアクセス出来る 12年10月4日木曜日
  • 24. カーネルとユーザランドの役割分担 ハイパーバイザモード ゲストモード ゲストOS カーネル FreeBSDカーネル vmm.ko ioctl ユーザ 仮想デバイス /usr/sbin/bhyve ✤ 各デバイスのエミュレーション、仮想マシンのコンソールなどのUIはユーザ ランドで動作する/usr/sbin/bhyveが受け持つ ✤ VT-xの機能を用い、CPUをゲストモードへ切り替えるのはカーネルにロー ドされたvmm.koが受け持つ 12年10月4日木曜日
  • 25. メモリ仮想化 ✤ hw.physmemで制限されたメモリ領域の外側から仮想マシン起動時に 固定的に割り付け ✤ 仮想マシン間のページ共有無し ✤ オンデマンドメモリ割り付け無し ✤ これにより、PCIパススルー時のメモリマップが簡単になった 12年10月4日木曜日
  • 26. PCIパススルー ✤ Intel VT-dにより物理PCIデバイスをパススルー ✤ IOAPICエミュレーションを持たない為、レガシ割り込みは非サポー ト MSI割り込みのみをサポート(MSI-X割り込みも非サポート) ✤ ホストOSで割り込みを受け取ってゲストへ送り込むため、ホストに stubドライバが必要 12年10月4日木曜日
  • 27. virtio ✤ virtioの仕様に沿ったvirtio-net, virtio-blkをサポート http://ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf ✤ virtio-netは/dev/tapNを通してイーサネットフレームを送受信 ✤ virtio-blkはホストファイルシステム上のディスクイメージを読み書き 12年10月4日木曜日
  • 28. パフォーマンス make buildworld 1500 1125 750 375 0 Bare Metal Partitioned Virtualized build time(sec) ✤ /usr/srcをNFS上に/usr/objをローカルディスクにおいた時の make build world時の速度を比較 12年10月4日木曜日
  • 29. ゲストカーネルの変更点 ✤ カスタムコンソール&デバッグポート → com0 emulationかVGA emulationが必要 ✤ Local APICはMSR経由でアクセス(MMIO非サポートの為) → Local APIC MMIO supportが必要 ✤ セカンダリプロセッサを直接64bitモードで起動 → BIOS emulationが必要(?) 12年10月4日木曜日
  • 30. 実装中の機能 ✤ BIOS emulation (@syuu1228‘s Google Summer of Code 2012 project) ✤ Guest suspend/resume (@iorivur) ✤ AHCI emulation? ✤ MMIO local APIC? ✤ IOAPIC emulation? ✤ AMD-V support? ✤ Older Intel CPU support(without EPT)? 12年10月4日木曜日
  • 31. やってくれる人がいるといいな ✤ libvirt対応 ✤ NetBSD, OpenBSD, Linuxなどのローダ ✤ PCIパススルーのテスト 12年10月4日木曜日
  • 32. 最新情報はこちらまで ✤ http://bhyve.org/ ✤ @syuu1228 12年10月4日木曜日