BSD界隈四方山話

第20回 ZFSデバイスファイルで仮想ディスクの性能アップ!

この記事を読むのに必要な時間:およそ 6 分

仮想ディスクにZFSデバイスファイルを使って性能アップ

これまで2回に渡ってFreeBSD 10で導入されたハイパーバイザbhyveの使い方を紹介してきました。今回は仮想ディスクにZFSデバイスファイルを使うことで仮想ディスクI/Oの性能を引き上げる方法を紹介します。

説明が重複するので,コマンドのオプションやネットワークインターフェースに関する説明は上記記事をご覧ください。今回はこれまでの内容を踏まえて作業内容と性能差について取り上げます。

ホスト側のセットアップ

ホスト側でbhyveを使うための設定を行います。システムを再起動しても有効にしておくために設定ファイルにも必要な設定を書き込んでおきます。

図1 ホスト側の準備

# kldload vmm
# ifconfig tap0 create
# ifconfig tap1 create
# sysctl net.link.tap.up_on_open=1
net.link.tap.up_on_open: 0 -> 1
# ifconfig bridge0 create
# ifconfig bridge0 addm bge0 addm tap0 addm tap1 up
# cat /boot/loader.conf
vmm_load="YES"
# cat /etc/rc.conf | grep bridge0
cloned_interfaces="bridge0 tap0 tap1"
ifconfig_bridge0="addm bge0 addm tap0 addm tap1"
# cat /etc/sysctl.conf
net.link.tap.up_on_open=1
# 

ここではtap0をホストのUFS上のファイルを仮想ディスクとした仮想環境(freebsd-10.2)⁠tap1をホストのZFSデバイスファイルを仮想ディスクとした仮想環境(freebsd-10.2-on-zfs)に割り当てています。

ゲスト環境の構築

FreeBSD 10.2-RELEASEのISOインストールイメージファイルを取得します。

図2 インストール用のISOイメージファイルを取得

# fetch ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/10.2/FreeBSD-10.2-RELEASE-amd64-disc1.iso.xz
FreeBSD-10.2-RELEASE-amd64-disc1.iso.xz       100% of  413 MB 5844 kBps 01m13s
# unxz FreeBSD-10.2-RELEASE-amd64-disc1.iso.xz

ホストのUFS上のファイルを仮想ディスクとする場合のインストール方法はこれまでと同じです。

図3 ホストのUFS上のファイルとして仮想ディスクを作成してゲストをインストール

# truncate -s 32G freebsd-10.2.img
# sh /usr/share/examples/bhyve/vmrun.sh -c 2 -m 2G -t tap0 -d freebsd-10.2.img -i -I FreeBSD-10.2-RELEASE-amd64-disc1.iso freeb
# bhyvectl --destroy --vm=freebsd-10.2
# sh /usr/share/examples/bhyve/vmrun.sh -c 2 -m 2G -t tap0 -d freebsd-10.2.img freebsd-10.2

ホストのZFSデバイスファイルを仮想ディスクとして使う場合には,次のように環境をセットアップします。

図4 ホストのZFSデバイスファイルを仮想ディスクとしてゲストをインストール

# zfs create -V 32G -o volmode=dev z/freebsd-10.2
# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,/dev/zvol/z/freebsd-10.2 -s 4:0,ahci-cd,./FreeBSD-10.2-RELEASE-amd64-disc1.iso -l com1,stdio -c 2 -m 2G freebsd-10.2-on-zfs
# bhyvectl --destroy --vm=freebsd-10.2-on-zfs
# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,/dev/zvol/z/freebsd-10.2 -l com1,stdio -c 2 -m 2G freebsd-10.2-on-zfs

truncate(1)コマンドでファイルを作成するのではなく,zfs(8)コマンドでデバイスファイルを作成しています。⁠z」がここで使っているプール名です。仮想ディスクとしてこのデバイスファイルと指定すると,このデバイスファイルが仮想ディスクとして使われるようになります。

コメント

コメントの記入