SlideShare a Scribd company logo
Bhyve Management Daemon
Version 3.0
2024 年 6 月 13 日
(株)創夢 内藤 祐一郎
bmd とは
bmd
設定ファイル
bhyveload /
grub-bhyve bhyve
読み込み
ロード
ブート
リブートなら
繰り返す
終了
●
bmdctl コマンドで仮想マシンを制御します
– 仮想マシンの起動・停止・状態取得
– コンソールへの接続
bmd とは
bmdctl bmd
Unix domain socket
bhyve
nmdm device
bmd とは
●
プラグインにより機能を拡張できます
bmd plugin-hookcmd
plugin-avahi
plugin-qemu
コマンド起動
avahi-publish
qemu
※plugin-qemu で arm64 仮想マシンを作成可能
バージョン毎の変遷
●
1.0
– 初回リリース
●
2.0
– plugin 拡張パラメータを比較し設定の更新を検出する
機能を追加した
– bmd console で ~D, ~Z, ~Y をサポートした
バージョン毎の変遷
●
2.1
– owner が group に入っていることを確認する
– bmd -v でバージョンを表示する
●
2.2
– template に引数を追加した
– $((-1 + $ID)) など負の数、負の変数に対応した
– $(( )) 内に 0 がある時のバグを修正した
– “$(( ))” のケースに対応した
バージョン毎の変遷
●
2.3
– .include マクロを一般ユーザの設定ファイルで許可した
– bhyve_env, bhyveload_env, bhyveload_loader パラメータを
追加した
●
2.4
– cpu topology に対応した(例: cpu=1:4:2 )
– cpu pinning に対応した(例: cpu_pin=0:2,1:4 )
– bmdctl list にソートオプション追加
バージョン毎の変遷
●
2.5
– err_logfile が動いていないバグを修正した
– tpm パススルーに対応した
– cmd_socket_mode をマニュアル通りにデフォル
ト’ 0600’ のパーミッションに変更した。
バージョン 3.0
1.loader プラグインを作成可能
2.prestart / poststop コマンドを作成可能
3.bridge に割り当てない tap インタフェースの作成
4.vale(4) のサポート
loader プラグイン
●
loader 用に load メソッドと cleanup メソッドを用意
●
bmd 側はこれらを呼び出すことでロードを行う
●
既存のプラグイン同様にパラメータの追加も可能
●
全てのローダ( bhyveload, grub2-bhyve, uefi )は内部的
にプラグインになった
●
将来的には grub2-bhyve の依存関係を bmd から切り離せ
る
prestart / poststop
bmd
bhyveload /
grub-bhyve bhyve
ロード
ブート
終了
prestart
起動
poststop
起動
待ち合わせ
待ち合わせ
再起動
リソース解放
既存の hookcmd
bmd
bhyveload /
grub-bhyve bhyve
ロード
ブート
終了
hookcmd
呼び出し
再起動
呼び出し
呼び出し
nmdm blocking
bmd nmdm bhyveload prestart
bmdctl
start -c
起動
open
待ち合わせ
load
open
open 成功
fd 通知
終了
block!!
nmdm opener process
bmd nmdm bhyveload prestart
bmdctl
start -c
起動
open
待ち合わせ
load
open
open 成功
fd 通知
終了
opener
fd 通知
fork
VM 設定を環境変数へ
●
prestart / poststop / hookcmd は shell script を想定
●
VM 用の nat, routing, firewall を設定することを想定
●
少なくとも VM がどの tap インタフェースを使っているの
かを shell script で分かるようにしたい
●
VM の設定を環境変数へエクスポートする
●
例: VM_NETWORK1_TAP=tap3
prestart / poststop の注意事項
●
全ての prestart プラグインが成功を返した場合に VM の
ロード・起動を行う
●
poststop プラグインは成否を問わない
●
prestart / poststop コマンドは root 所有の場合にのみ実行
する
bridge に割り当てない tap
●
network=none; で tap のみを作成
●
前述の prestart で nat するなどして外部と通信する
●
$VM_ID があるので $(($offset + $VM_ID * 100 + $n)) とす
ると VM 毎に重ならないルール番号を作成できる
vale(4) サポート
●
netmap を利用した仮想スイッチ
●
valectl -h vale1:em0 などで予め vale スイッチを作成する
●
この例では em0 は netmap での利用になるため host OS
から使うことはできない
●
network=vale1; で tap ではなく vale(4) ポートを bhyve に
割り当てる
●
ポート名は vm${ID}p${port_id} ( port_id は 0 〜)
まとめ
●
3.0 でプラグインインタフェースが大きく変わります
●
既存のプラグイン全てが更新されます
●
prestart / poststop で VM 環境構築の自由度が上がります

More Related Content

Similar to Bhyve Management Daemon Version 3.0 on FreBSD

Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)
Hidenori Goto
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute Engine
Ryo ONODERA
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
Shougo
 
WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
Tomoyuki Obi
 
Windows 7 オプショナルツール 一挙紹介
Windows 7 オプショナルツール 一挙紹介Windows 7 オプショナルツール 一挙紹介
Windows 7 オプショナルツール 一挙紹介
shigeya
 
SubversionServer設置
SubversionServer設置SubversionServer設置
SubversionServer設置
Kuniaki Igarashi
 
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
 

Similar to Bhyve Management Daemon Version 3.0 on FreBSD (9)

Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)Symfony2 Behat/BDD (#Symfony2study 4)
Symfony2 Behat/BDD (#Symfony2study 4)
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute Engine
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
 
KVM+cgroup
KVM+cgroupKVM+cgroup
KVM+cgroup
 
Windows 7 オプショナルツール 一挙紹介
Windows 7 オプショナルツール 一挙紹介Windows 7 オプショナルツール 一挙紹介
Windows 7 オプショナルツール 一挙紹介
 
Linuxにおける開発環境
Linuxにおける開発環境Linuxにおける開発環境
Linuxにおける開発環境
 
SubversionServer設置
SubversionServer設置SubversionServer設置
SubversionServer設置
 
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
 

More from Yuichiro Naito

Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSDReporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Yuichiro Naito
 
WireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernelWireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernel
Yuichiro Naito
 
FreeBSD Capsicum
FreeBSD CapsicumFreeBSD Capsicum
FreeBSD Capsicum
Yuichiro Naito
 
Xrdp
XrdpXrdp
Bhyve debug-server
Bhyve debug-serverBhyve debug-server
Bhyve debug-server
Yuichiro Naito
 
Tramp mode
Tramp modeTramp mode
Tramp mode
Yuichiro Naito
 
HandBrake with QSV
HandBrake with QSVHandBrake with QSV
HandBrake with QSV
Yuichiro Naito
 
FreeBSD 12.1 RELESE
FreeBSD 12.1 RELESEFreeBSD 12.1 RELESE
FreeBSD 12.1 RELESE
Yuichiro Naito
 
Modern fonts
Modern fontsModern fonts
Modern fonts
Yuichiro Naito
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
Yuichiro Naito
 
Psql & proctitle
Psql & proctitlePsql & proctitle
Psql & proctitle
Yuichiro Naito
 
Iocage
IocageIocage
FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!
Yuichiro Naito
 
How to use PTI & IBRS patch
How to use PTI & IBRS patchHow to use PTI & IBRS patch
How to use PTI & IBRS patch
Yuichiro Naito
 
FreeBSD Desktop
FreeBSD DesktopFreeBSD Desktop
FreeBSD Desktop
Yuichiro Naito
 
FreeBSD Ports Flavors
FreeBSD Ports Flavors FreeBSD Ports Flavors
FreeBSD Ports Flavors
Yuichiro Naito
 
Bsdtw repo
Bsdtw repoBsdtw repo
Bsdtw repo
Yuichiro Naito
 
How to use blacklistd
How to use blacklistdHow to use blacklistd
How to use blacklistd
Yuichiro Naito
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
Yuichiro Naito
 
Ruby build
Ruby buildRuby build
Ruby build
Yuichiro Naito
 

More from Yuichiro Naito (20)

Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSDReporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
 
WireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernelWireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernel
 
FreeBSD Capsicum
FreeBSD CapsicumFreeBSD Capsicum
FreeBSD Capsicum
 
Xrdp
XrdpXrdp
Xrdp
 
Bhyve debug-server
Bhyve debug-serverBhyve debug-server
Bhyve debug-server
 
Tramp mode
Tramp modeTramp mode
Tramp mode
 
HandBrake with QSV
HandBrake with QSVHandBrake with QSV
HandBrake with QSV
 
FreeBSD 12.1 RELESE
FreeBSD 12.1 RELESEFreeBSD 12.1 RELESE
FreeBSD 12.1 RELESE
 
Modern fonts
Modern fontsModern fonts
Modern fonts
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
 
Psql & proctitle
Psql & proctitlePsql & proctitle
Psql & proctitle
 
Iocage
IocageIocage
Iocage
 
FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!
 
How to use PTI & IBRS patch
How to use PTI & IBRS patchHow to use PTI & IBRS patch
How to use PTI & IBRS patch
 
FreeBSD Desktop
FreeBSD DesktopFreeBSD Desktop
FreeBSD Desktop
 
FreeBSD Ports Flavors
FreeBSD Ports Flavors FreeBSD Ports Flavors
FreeBSD Ports Flavors
 
Bsdtw repo
Bsdtw repoBsdtw repo
Bsdtw repo
 
How to use blacklistd
How to use blacklistdHow to use blacklistd
How to use blacklistd
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 
Ruby build
Ruby buildRuby build
Ruby build
 

Bhyve Management Daemon Version 3.0 on FreBSD