[2012-09-28 18:11]

→橋本→笹塚→市ヶ谷→麹町 で予定どおりに会場着。

人のあつまりが悪いらしく5分遅れで開始。

DSC09047DSC09048DSC09029

[2012-09-28 18:35] DSC09032

概論

  • 完全仮想化: 既存OSを改造してない。VirtualBoxとか ⇔ 準仮想化
    • x86はトラップされない命令がある → 回避方法:
      • バイナリトランスレーション: 実行中にエミュレーションするコードに書き換え。HWの仮想化支援があるまえはこれが主流だった。VMware.
      • IntelVT,AMD-V: Ringとは別にハイパーバイザーモードとゲストモードが追加された。
  • VirtualBox (Oracle)
    • カーネルのなかでドライバとしてハイパーバイザーがうごいている。
    • デスクトップ向け、GPLv2
    • おおくのホストOSで動くのが特徴。
  • Xen(HVM)
    • ハイパーバイザーはHWのすぐ上に載っている。
    • デバイスの初期化はdom0(管理用のOS)がやる。UIもdom0に委託。dom0はlinuxかsolarisでしか動かない。
    • GPLv2
  • 参考: Linux KVM
    • しくみとしてはVirtualBoxに似ている。ハイパーバイザーはホストOSに統合されている。
    • サーバ用途が中心.GPLv2.
  • BHyVe
    • LinuxKVMのFreeBSD版. カーネルに統合されていてふつうのプロセスとして管理される。
    • たぶんサーバ用。Windowsが動かない。
  • 準仮想化 Xen(PVM)
    • ゲストOSを改造するのでWindowsは動かない。
    • 準仮想化の方がバイナリトランスレーションより性能が出た。
  • 準仮想化デバイス
    • 完全仮想化でデバイスをエミュレーションするのはパフォーマンス的に最適ではない。モード切り替えの回数が無駄に多い。
    • ゲスト-ハイパーバイザー間のデータやりとりに最適化されたデバイス。virtioとかはNIC,HDD,consoleをエミュレーション。BHyVeでも使える。
  • コンテナ型仮想化: jail(+VIMAGE)
    • パーティショニングとも。
    • 複数のOSを動かすのではなく、擬似的にOSの環境をつくってリソース管理を別々にやる。
    • 原理的には性能が出やすい。
    • 欠点: OSがパニックするとまきこまれるとか、複数バージョンを同時に使えないとか、

BHyVe詳細 DSC09035

  • KVM似。FreeBSD10へのマージをめざしている。まだカレントにも統合されてない。NetAppの2人くらいがほそぼそと開発している模様。
  • やっと動くようになったところ。Intel VT-x + EPT対応ので動く。
    • FreeBSDのdmesgをみてもEPTに対応してるかはわからない... arch.intel.comでみるとわかる。
  • FreeBSD8版でcontributeされた。いがいとポータブル。
  • まだゲストはFreeBSDしか動かなくて、しかも要改造...
  • NetApp的にはほかのOSが動いているらしいが、外には出してないみたい...
  • amd64でしか動かない。ゲストもホストも。
  • デバイスはまだ最低限のものしかない。準仮想化のdisk,nic,console(テキストのみ、やっつけ仕事のやつ)。それとなぜかPCIパススルーも。

BHyVe実演

  • http://youtu.be/CXoD5NQEKrM
  • VMwareの中で
  • BIOSがないのでホストOS上でローダを実行してカーネルイメージをロードする。レジスタも設定する。(この時点ではまだ実行されてない)。
  • デバイスがほとんどないすかすかなdmesg。(NetAppという文字も...)
  • VMごとにデバイス(/dev/vmm/$VMNAME)ができる。
  • ローダーのコードはもともとのコードをパチってきている。
  • メモリ仮想化
    • 指定した分をどかんと割り付ける。
    • ページ共有(dedup?)はない。
    • ちいさいVMをつくったりけしたりするとフラグメントするかも?
  • PCIパススルー
    • ビデオデバイスはできない。BIOSとか古い仕組とからんでるので難しい。
    • IOAPICエミュレーションはないのでレガシー割り込みは非サポート、MSI割り込みだけ。(MSI-Xは非サポート)。
    • ホストにゲストに割り込みをおくり込むためにstubドライバが必要。
  • make buildworldの結果はちょと遅くなるだけ。
  • ゲストカーネルの変更点:
    • カスタムコンソール、デバッグサポート → シリアルかVGAのサポートが望まれる
    • local APICはMSR経由でアクセス (メモリマップドIO非サポート) → local APIC MMIOサポートが望まれる (いまやってるかできたところぐらい)
    • 2個目以降のCPUはBIOSがないので、初期化コードがクイックハックでつっこまれている → 要BIOSサポート
  • あるといいな
    • libvirt対応: 仮想マシンの設定がGUIでできるようになるとか。 (実はゲストをシャットダウンする方法もない..)
    • ローダー(*BSDとかLinuxとかの)。

[2012-09-28 20:04]

QA:DSC09038

  • Q: FreeBSD10にコミットされる予定だがどのくらいのレベルになるのか?
  • A: わからないが、ゲストに手を入れなくてもFreeBSDが動く程度になるのではないか。
    • baseにぜんぶ入れようとしているので。linuxのローダーを入れることになるとGPL汚染のおそれが。ローダーだけはportsにする?
  • Q: ゲストOSを多重起動するときどうする? 制限はあるか?
  • A: ディスクイメージも分ければできる。制限は特にない。
  • Q: KVMだとホストのユーザ空間で走るプロセスがあるが?
  • A: BHyVeでもある。/usr/sbin/bhyve。ioctl(/dev/vmm/〜, VM_RUN)で vmm.ko で処理できないものをやる。
    • QEMUはつかっていない。BIOSもらくなんだがGPL汚染とか、コードをいじっていると不幸になるとか...

[2012-09-28 20:12]

[2012-09-28 20:13] DSC09040

FreeBSDとCloudCore VPS / KDDI 小原さん

  • 第9回にも参加したひと挙手 → 1/3くらいか?

[2012-09-28 20:17]

FreeBSD勉強会 / ONGS 佐々木さん DSC09041

  • 後藤さんが体調不調のため代理
  • 12回は佐藤先生の組み込みの話 ATNDもすでにある
  • 組み込み屋がいることは把握済!
  • 開発がいそがしくて、FreeBSD daily topicsの更新が遅れぎみ...

[2012-09-28 20:23]

BSDコンサルティング 佐藤さん

[2012-09-28 20:31]

懇親会

  • 自己紹介タイムあり

DSC09043DSC09046

[2012-09-28 22:20]

DSC09049DSC09050