vmm/vmd: OpenBSDの仮想環境

構成要素

資料: OpenBSD FAQ - Virtualization

特徴

シンプル。以下の制限がある。

準備

# #ハードウェアが対応しているか確認
# dmesg | egrep '(VMX/EPT|SVM/RVI)'
# #vmdを有効化
# rcctl enable vmd
# rcctl start vmd
# #ディスクイメージを作成
# vmctl create -s 4G OpenBSD78.img  # raw or qcow2

起動

(ネットワークブリッジを使用しなければ)設定ファイルなしで動く。

OSのインストール

# vmctl start -c -i 1 -L -m 2G -B cdrom -r install78.iso -d OpenBSD78.img obsd78

インストール後、起動

# vmctl start -i 1 -L -m 2G -d OpenBSD78.img obsd78

設定

vm.confの設定

設定を/etc/vm.confに記述する。

# cat /etc/vm.conf
switch "uplink" {
        interface veb0
}

vm "obsd78" {
    disable
    memory 2G
    disk "/opt/vmd/OpenBSD78.img"
    interfaces 1
    interface { switch "uplink" }
}
(他にもVMがある場合は以下同様に記述)

ネットワークの設定

前項のvm.confの設定ではVMをブリッジに接続し、外のネットワークに出られるようにしている。 これについて、ネットワークの追加設定が必要

# cat /etc/hostname.veb  # veb(4) (Virtual Ethernet Bridge)の設定
add re0
add vport0
up
# cat /etc/hostname.re0  # 実機のNICの設定
up  # 有効化するだけ
# cat /etc/hostname.vport  # vebに接続する仮想ポート。実機のアドレス設定はここで
inet autoconf              # 実H/WのNICvebを接続するとアドレスを割り振れなくなるため
inet alias 192.168.1.32 255.255.255.0
inet6 autoconf

ebug_vm_veb.png
VMが起動すると、tap(4)経由でveb0に接続される。

起動

# vmctl start obsd78
vmctl: started vm 1 successfully, tty /dev/ttyp1
# vmctl status
      ID   PID VCPUS  MAXMEM  CURMEM     TTY        OWNER    STATE NAME
       1 25809     1    516M    156M   ttyp1         root  running obsd78

/dev/ttyp1はVMのシリアルコンソール。cu(1)を使ってアクセスする。

# vmctl console obsd78

または、起動時に、

# vmctl start -c obsd78

事例

河豚板開発・ビルド環境の移行

従来環境(実機)は、{7.7,7.8}×{i386,amd64}のクアッドブート
区画OSマウントポイント用途
sd0a河豚板7.1ブートセレクタ/メンテ用
sd0bswapスワップ
sd0d河豚板の環境保存用
sd0eOpenBSD 7.8/i386/ビルド環境
sd0fOpenBSD 7.8/amd64/ビルド環境
sd0gOpenBSD 7.8/opt/build生成物
sd0kOpenBSD 7.7/i386/ビルド環境
sd0lOpenBSD 7.7/amd64/ビルド環境
sd0mOpenBSD 7.7/opt/build生成物

基盤VMID
河豚板-7.8-amd64OpenBSD 7.8/i386build32
OpenBSD 7.8/amd64build64
OpenBSD 7.8-current/amd64build64c
7.7/* (一つ前のリリース)は保持しないこととした

IoTサーバの移行

TempSensors1.pngTempSensors2.png

「開発兼予備サーバ」をVMに移行
基盤VMID
河豚板-7.8-amd64OpenBSD 7.8/i386build32
OpenBSD 7.8/amd64build64
OpenBSD 7.8-current/amd64build64c
河豚板7.1/i386tempsensor

Linuxをguestとする

実験&学習目的でLinuxを追加


Front page   New Page list Search Recent changes   Help   RSS of recent changes