OpenBSDハイパーバイザvmm(4)
2015年8月、
このメールからほぼ3ヵ月後となる2015年11月22日、
- vmm(4):仮想マシンモニタサブシステム
- vmm.
conf(5):仮想マシン設定ファイル - vmmctl(8):仮想マシンモニタサブシステム制御コマンド
- vmd(8):仮想マシンデーモン
- virtio(4):VirtIOドライバ
今回コミットされた内容にはまだ修正すべき点と改善すべき点がいくつか残っていることから、
現在のvmm(4)はBIOSをエミュレートしていないため、
今回のコミットではハイパーバイザを使用するための細かい設定やコマンドの使い方などの説明は省略されています。それは近いうちに何度か実装を変更することが予想されるため、
vmm(4) 仮想マシンモニタサブシステム
ハイパーバイザの中核をなすドライバがvmm(4)です。これはCPUの提供する仮想化機能
vmm(4)は作成される仮想マシンに対して次のハードウェアリソースを割り当てます。
- 仮想CPU
- 仮想ネットワークインターフェース
- 仮想ディスクイメージ
- 仮想シリアルポート
作成される仮想マシンやホスト環境はそれぞれ独立していますが、
vmm.conf(5) 仮想マシンモニタおよび仮想マシン設定ファイル
vmm.
vmm.
# マクロ
ramdisk="/bsd.rd"
# 仮想マシンモニタ設定
vmm enable
# 仮想マシン設定
vm "vm1.example.com" {
disable
memory 512M
kernel $ramdisk
}
vm "vm2.example.com" {
enable
memory 512M
interfaces 1
disk "/var/vmm/vm2-disk.img"
kernel "/bsd"
}
# 引用
include "/etc/vm1.example.com.conf"
vm {}で囲まれた中身が仮想マシンの設定になっていて、
- enable:起動時に自動的に仮想マシンを起動
- disable:仮想マシンを無効化
- disk:ディスクイメージファイルパス
- kernel:カーネルファイルパス
- memory:メモリサイズ
- interface:割り当てるネットワークインターフェースの数
vmm.
vmmctl(8) 仮想マシンモニタおよび仮想マシン制御コマンド
vmmctl(8)は仮想マシンモニタサブシステムを制御するコマンドです。ホストで動作している仮想マシンモニタサブシステムおよび仮想マシンの制御機能を提供します。仮想マシンモニタサブシステム向けには次のサブコマンドが用意されています。
- enable 仮想マシンモニタサブシステムを有効化
- disable 仮想マシンモニタサブシステムの無効化
- load vmm.
conf(5)設定ファイルの読み込み
vmmctl(8)コマンドの主な用途は仮想マシンの制御になってくると思います。主に次の制御サブコマンドが提供されています。
- create:仮想ディスクの作成
(create path size number) - start:仮想ディスクの起動
(start name disk path kernel path memory size interfaces count) - terminate:仮想マシンの停止
- show info:動作している仮想マシン一覧の表示
今のところだいぶシンプルな制御コマンドです。
vmd(8)
ホストで仮想マシンを実行するための責務を負うデーモンがvmd(8)です。起動時に仮想マシンを起動してカーネルを実行状態に持っていく作業を担うほか、
virtio(4)
準仮想化デバイスの機能を提供するデバイスドライバがvirtio(4)です。現在のところ次の5つが用意されています。
- vio(4):ネットワークデバイス
- vioblk(4):仮想ディスクデバイス
- viomb(4):仮想メモリバルーンドライバ
- viornd(4):仮想乱数デバイス
- vioscsi(4):仮想SCSIアダプタドライバ
VirtIOはvmm(4)のために導入されたデバイスドライバではなく、
今後の発展が楽しみなハイパーバイザ
OpenBSD vmm(4)はFreeBSD bhyve(4)と比較してもさらにシンプルな印象を受けます。bhyve(4)の制御コマンドであるbhyvectl(8)はより多種多様な制御オプションを提供していますし、
一方、
OpenBSDがvmm(4)をデフォルトの機能として提供するようになると、
一般ユーザがvmm(4)の機能を使うのは、