狠狠撸

狠狠撸Share a Scribd company logo
Bhyve
Management
Daemon
2021 年 10 月 29 日
(株)創夢 内藤 祐一郎
なんでつくったの?
1.コードが書きたかったから( C で実装)
2. bhyve プロセス待つだけなら親プロセスは一つで十分
3.プラグインが欲しかった
? 一番欲しいのは VM 起動中に mDNS で Remote Frame
Buffer サービスを広告するもの
( ブラウザ側には bvnc や MacOS Finder がある )
? VM の状態変化で任意のコマンドを呼び出すもの
なにができるの?
●
VM の設定をファイルに書いておいて起動?終了する
– 1 ファイル / VM
●
Daemon 起動時に自動起動、終了時に ACPI shutdown
●
設定ファイルを更新したら reload で反映する
●
コマンドで VM 毎に起動、終了、リセット、電源切など
●
コマンド経由で直接起動も可能
●
プラグインによる外部コマンド呼び出し
●
avahi-publish による rfb サービス登録?解除
なにかがたりない
●
bridge の作成はしません
– rc スクリプトにお任せです
– VM 毎に tap を自動生成します
●
disk イメージの管理もしません
– ufs, zfs, ブロックデバイス等好きなものを用意
– 多くの人は好みのディスクレイアウトを持っている
もっとくわしく
●
GitHub を見てください
– https://github.com/yuichiro-naito/bmd
デモ
内部的な話
●
基本的には kevent(2) でポーリングするイベントドリブン
なプログラムです
– プロセス終了( bhyve やプラグイン)
– シグナル (HUP, TERM, INT) 受信
– コマンド用ソケット受信
– bhyve, bhyveload, grub-bhyve の標準出力、エラー出
力
– タイムアウト ( ローダ、シャットダウン、遅延起動 )
内部的な話
●
イベント毎に VM の状態を加味して処理を振り分けます
●
例)
– ローダが終了したら bhyve 起動
– bhyve が終了したら終了コードに応じて停止、または
再起動
– HUP シグナルならば設定ファイルの再読み込み
– TERM, INT シグナルならば VM 停止
– ソケット受信ならばコマンドを解釈して実行
設定ファイル再読み込み
●
設定ファイルが追加されると、ブートパラメータにした
がって起動します
●
設定ファイルが削除されると、シャットダウンします
●
設定ファイルのブートパラメータが更新されると、新しい
ブートパラメータに応じて起動またはシャットダウンしま
す
●
reboot_on_change フラグがあり、かつ、設定ファイルの
中身に更新を検出すると、シャットダウン後に新しいパラ
メータで再起動します。
内部的な話
●
シグナルハンドラは使わない
– 内部状態をたくさん持つので競合を避ける
– シングルスレッド
●
同期処理のため安定性が良い
– wait(2) 漏れが発生しない
●
1つの daemon で処理できるので軽量?コンパクト
– メモリサイズは getty(8) とほぼ同程度
まとめ
●
個人的な要件を元に作ったプログラムです
●
軽量、コンパクトに実装できました
●
設定はまだ不足しています
●
今後は更なる安定性の向上と設定の追加を目指します
Ad

Recommended

ComSys 2012 Yabusame Talk
ComSys 2012 Yabusame Talk
Takahiro Hirofuchi
?
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
Kiyoshi Sawada
?
齿别苍厂别谤惫别谤によるお手軽开発サーバ运用
齿别苍厂别谤惫别谤によるお手軽开発サーバ运用
Shinya Okano
?
BHyVe: The BSD Hypervisor
BHyVe: The BSD Hypervisor
Takuya ASADA
?
厂痴狈のすすめ&补尘辫;搁别诲尘颈苍别でプロジェクト管理
厂痴狈のすすめ&补尘辫;搁别诲尘颈苍别でプロジェクト管理
ina job
?
はじめての厂耻产惫别谤蝉颈辞苍(サブバージョン)
はじめての厂耻产惫别谤蝉颈辞苍(サブバージョン)
西畑 一馬
?
XenServer Overview
XenServer Overview
Kimihiko Kitase
?
20200527 zoomlocalrecording
20200527 zoomlocalrecording
涼弥 中村
?
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
hakoika-itwg
?
厂耻产惫别谤蝉颈辞苍と厂耻驳补谤蝉测苍肠
厂耻产惫别谤蝉颈辞苍と厂耻驳补谤蝉测苍肠
Hidenori Goto
?
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
shimadah
?
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
Go Saito
?
osoljp201105_ZFSjiman_nslope
osoljp201105_ZFSjiman_nslope
Noriyasu Sakaue
?
鲍产耻苍迟耻や颁丑谤辞尘颈耻尘の绍介
鲍产耻苍迟耻や颁丑谤辞尘颈耻尘の绍介
勝 熊崎
?
叠贬测痴别ってなんや
叠贬测痴别ってなんや
Takuya ASADA
?
社内勉強会02 ターミナルマルチプレクサ[公開用]
社内勉強会02 ターミナルマルチプレクサ[公開用]
Keme Sato
?
罢鲍滨作业で便利なソフト2题
罢鲍滨作业で便利なソフト2题
shimadah
?
はじめての搁别濒别补蝉别ブランチ运用(蝉惫苍编)
はじめての搁别濒别补蝉别ブランチ运用(蝉惫苍编)
将 高野
?
32bit UEFIマシンで遊ぶ
32bit UEFIマシンで遊ぶ
shimadah
?
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
shimadah
?
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
shimadah
?
Nodejs
Nodejs
和樹 川端
?
membase
membase
Yohei Sasaki
?
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみよう
Masayuki Ozawa
?
20200129 bydstudy kashiwagi
20200129 bydstudy kashiwagi
beyond Co., Ltd.
?
JS/Canvas Tutorial3
JS/Canvas Tutorial3
秀俊 伊藤
?
厂耻产惫别谤蝉颈辞苍厂别谤惫别谤设置
厂耻产惫别谤蝉颈辞苍厂别谤惫别谤设置
Kuniaki Igarashi
?
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果www
Masahito Zembutsu
?

More Related Content

What's hot (20)

XenServer Overview
XenServer Overview
Kimihiko Kitase
?
20200527 zoomlocalrecording
20200527 zoomlocalrecording
涼弥 中村
?
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
hakoika-itwg
?
厂耻产惫别谤蝉颈辞苍と厂耻驳补谤蝉测苍肠
厂耻产惫别谤蝉颈辞苍と厂耻驳补谤蝉测苍肠
Hidenori Goto
?
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
shimadah
?
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
Go Saito
?
osoljp201105_ZFSjiman_nslope
osoljp201105_ZFSjiman_nslope
Noriyasu Sakaue
?
鲍产耻苍迟耻や颁丑谤辞尘颈耻尘の绍介
鲍产耻苍迟耻や颁丑谤辞尘颈耻尘の绍介
勝 熊崎
?
叠贬测痴别ってなんや
叠贬测痴别ってなんや
Takuya ASADA
?
社内勉強会02 ターミナルマルチプレクサ[公開用]
社内勉強会02 ターミナルマルチプレクサ[公開用]
Keme Sato
?
罢鲍滨作业で便利なソフト2题
罢鲍滨作业で便利なソフト2题
shimadah
?
はじめての搁别濒别补蝉别ブランチ运用(蝉惫苍编)
はじめての搁别濒别补蝉别ブランチ运用(蝉惫苍编)
将 高野
?
32bit UEFIマシンで遊ぶ
32bit UEFIマシンで遊ぶ
shimadah
?
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
shimadah
?
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
shimadah
?
Nodejs
Nodejs
和樹 川端
?
membase
membase
Yohei Sasaki
?
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみよう
Masayuki Ozawa
?
20200129 bydstudy kashiwagi
20200129 bydstudy kashiwagi
beyond Co., Ltd.
?
JS/Canvas Tutorial3
JS/Canvas Tutorial3
秀俊 伊藤
?
20200527 zoomlocalrecording
20200527 zoomlocalrecording
涼弥 中村
?
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
hakoika-itwg
?
厂耻产惫别谤蝉颈辞苍と厂耻驳补谤蝉测苍肠
厂耻产惫别谤蝉颈辞苍と厂耻驳补谤蝉测苍肠
Hidenori Goto
?
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
shimadah
?
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
Go Saito
?
osoljp201105_ZFSjiman_nslope
osoljp201105_ZFSjiman_nslope
Noriyasu Sakaue
?
鲍产耻苍迟耻や颁丑谤辞尘颈耻尘の绍介
鲍产耻苍迟耻や颁丑谤辞尘颈耻尘の绍介
勝 熊崎
?
叠贬测痴别ってなんや
叠贬测痴别ってなんや
Takuya ASADA
?
社内勉強会02 ターミナルマルチプレクサ[公開用]
社内勉強会02 ターミナルマルチプレクサ[公開用]
Keme Sato
?
罢鲍滨作业で便利なソフト2题
罢鲍滨作业で便利なソフト2题
shimadah
?
はじめての搁别濒别补蝉别ブランチ运用(蝉惫苍编)
はじめての搁别濒别补蝉别ブランチ运用(蝉惫苍编)
将 高野
?
32bit UEFIマシンで遊ぶ
32bit UEFIマシンで遊ぶ
shimadah
?
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
shimadah
?
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
shimadah
?
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみよう
Masayuki Ozawa
?

Similar to Bmd (20)

厂耻产惫别谤蝉颈辞苍厂别谤惫别谤设置
厂耻产惫别谤蝉颈辞苍厂别谤惫别谤设置
Kuniaki Igarashi
?
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果www
Masahito Zembutsu
?
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
?
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
?
WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
Tomoyuki Obi
?
S2s websrv201011-presen
S2s websrv201011-presen
Kouhei Maeda
?
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
Tomohiro Ohtake
?
ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化
Toru Tamaki
?
SC 2012 VMM SP1によるHyper-Vホストの展開
SC 2012 VMM SP1によるHyper-Vホストの展開
Norio Sashizaki
?
第1回『いまさら闻けない!システム运用?管理のコツ』 『クラウド管理?运用サービス「贰.颁.翱」のご绍介』
第1回『いまさら闻けない!システム运用?管理のコツ』 『クラウド管理?运用サービス「贰.颁.翱」のご绍介』
Naoya Hashimoto
?
尘颈肠谤辞笔颁贵を使ってみよう
尘颈肠谤辞笔颁贵を使ってみよう
Hiroaki_UKAJI
?
Vagrant+Chef
Vagrant+Chef
Daisuke Ando
?
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
Hide Koba
?
Bhyve Management Daemon Version 3.0 on FreeBSD
Bhyve Management Daemon Version 3.0 on FreeBSD
Yuichiro Naito
?
Edge os(vyos)の基本(入門編)
Edge os(vyos)の基本(入門編)
Akira Kaneda
?
ちょっと便利なGnome NetworkManager のscript
ちょっと便利なGnome NetworkManager のscript
Kenichiro MATOHARA
?
捕鲸!详解诲辞肠办别谤
捕鲸!详解诲辞肠办别谤
雄哉 吉田
?
厂耻产惫别谤蝉颈辞苍厂别谤惫别谤设置
厂耻产惫别谤蝉颈辞苍厂别谤惫别谤设置
Kuniaki Igarashi
?
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果www
Masahito Zembutsu
?
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
?
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
?
WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
Tomoyuki Obi
?
S2s websrv201011-presen
S2s websrv201011-presen
Kouhei Maeda
?
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
毎日が憧れの新筑、反復可能なデリバリーによる常时新筑システム
Tomohiro Ohtake
?
ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化
Toru Tamaki
?
SC 2012 VMM SP1によるHyper-Vホストの展開
SC 2012 VMM SP1によるHyper-Vホストの展開
Norio Sashizaki
?
第1回『いまさら闻けない!システム运用?管理のコツ』 『クラウド管理?运用サービス「贰.颁.翱」のご绍介』
第1回『いまさら闻けない!システム运用?管理のコツ』 『クラウド管理?运用サービス「贰.颁.翱」のご绍介』
Naoya Hashimoto
?
尘颈肠谤辞笔颁贵を使ってみよう
尘颈肠谤辞笔颁贵を使ってみよう
Hiroaki_UKAJI
?
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
Hide Koba
?
Bhyve Management Daemon Version 3.0 on FreeBSD
Bhyve Management Daemon Version 3.0 on FreeBSD
Yuichiro Naito
?
Edge os(vyos)の基本(入門編)
Edge os(vyos)の基本(入門編)
Akira Kaneda
?
ちょっと便利なGnome NetworkManager のscript
ちょっと便利なGnome NetworkManager のscript
Kenichiro MATOHARA
?
捕鲸!详解诲辞肠办别谤
捕鲸!详解诲辞肠办别谤
雄哉 吉田
?
Ad

More from Yuichiro Naito (20)

Bhyve Management Daemon: Wake on LAN support
Bhyve Management Daemon: Wake on LAN support
Yuichiro Naito
?
Development of Bhyve Management Daemon on FreeBSD
Development of Bhyve Management Daemon on FreeBSD
Yuichiro Naito
?
Reporting 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 kernel
Yuichiro Naito
?
FreeBSD Capsicum
FreeBSD Capsicum
Yuichiro Naito
?
Xrdp
Xrdp
Yuichiro Naito
?
Bhyve debug-server
Bhyve debug-server
Yuichiro Naito
?
Tramp mode
Tramp mode
Yuichiro Naito
?
HandBrake with QSV
HandBrake with QSV
Yuichiro Naito
?
FreeBSD 12.1 RELESE
FreeBSD 12.1 RELESE
Yuichiro Naito
?
Modern fonts
Modern fonts
Yuichiro Naito
?
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
Yuichiro Naito
?
Psql & proctitle
Psql & proctitle
Yuichiro Naito
?
Iocage
Iocage
Yuichiro Naito
?
FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!
Yuichiro Naito
?
How to use PTI & IBRS patch
How to use PTI & IBRS patch
Yuichiro Naito
?
FreeBSD Desktop
FreeBSD Desktop
Yuichiro Naito
?
FreeBSD Ports Flavors
FreeBSD Ports Flavors
Yuichiro Naito
?
Bsdtw repo
Bsdtw repo
Yuichiro Naito
?
How to use blacklistd
How to use blacklistd
Yuichiro Naito
?
Ad

Bmd