Embed presentation
Downloaded 58 times
OpenIndiana+KVM による仮想マシン OSC 2012 Tokyo/Fall みやざきさとる 日本 OpenSolaris ユーザグループ
自己紹介 とあるIT企業の Solaris 使い Twitter: s_miyaza ストレージとかも触ってます Solaris なのは趣味です 最近 Solaris のお仕事がありません... ( ́ ・ ω ・` ) OpenIndiana+KVMによる仮想マシン pg 2
OpenIndiana ってなんですか? OpenSolaris ベースの ディストリビューション コミュニティーベースで開発 Illumos を採用 Illumos は OpenSolaris 内のクローズドバイナ リを置き換えるプロジェクト http://openindiana.org/ OpenIndiana+KVMによる仮想マシン pg 3
OpenIndiana で KVM って? Joyent 社が OpenSolaris をベースに SmartOS を作成 SmartOS で KVM を移植 oi_151a へ成果を反映 OpenIndiana+KVMによる仮想マシン pg 4
OpenIndiana をインストールしてみよう デスクトップ版とサーバ版の2種類 メディアも2種類 ISO イメージ USB イメージ USB の作成方法 OpenSolaris なら usbcopy Linux なら dd Windows なら LiveUSBCreater http://wiki.openindiana.org/oi/Installing+OpenIn diana OpenIndiana+KVMによる仮想マシン pg 5
OI+KVM のサポート CPU Nehalem 以降の IntelCPU Intel-VTi Intel-VTd EPT AMD はノーサポート OpenIndiana+KVMによる仮想マシン pg 6
OI への KVM インストール方法 用意するモノ OpenIndiana がインストールされたマシン ネットワーク環境 KVM の pkg インストール # pkg install driver/i86pc/kvm system/qemu/kvm qemu-kvm と kvm ドライバの確認 # qemu-kvm --version QEMU emulator version 0.14.1 (qemu-kvm-devel), Copyright (c) 2003-2008 Fabrice Bellard # ls -ld /dev/kvm lrwxrwxrwx 1 root root 27 2012年07月11日 00:48 /dev/kvm -> ../devices/pseudo/kvm@0:kvm OpenIndiana+KVMによる仮想マシン pg 7
OI+KVM の制限事項 libvirt/virsh などは使えません pkg 自体はありますが、Xen 用です GUI も用意されてません SPICE は使えません VNC は使えます virtio を使えます ただし、OS がサポートしていれば ide や e1000/rtl8139 などのハードウェアエ ミュレートも使えます OpenIndiana+KVMによる仮想マシン pg 8
仮想ディスクイメージの作成 OpenSolaris と言えば ZFS ZFS でサイズ指定でボリュームを作成 # zfs create -p -s -G 10G rpool/kvm/guest/centos6/m01 -p は親のデータセットも作成 mkdir -p 的なオプション -s を付けると疎ボリュームになる OpenIndiana+KVMによる仮想マシン pg 9
ZFS のおさらい データセット ファイルシステムとボリュームの2種類 ファイルシステムは、UFS などの既存のファ イルシステムのようなインタフェース Path を指定して作成 ボリュームは HDD のデバイスと同様に扱える Path とサイズを指定して作成 疎ボリューム (Sparse Volume) は、 サイズの予約をするだけで、実際に領域を使っ た分だけサイズを確保する → Thin Provisioning として知られる方法 OpenIndiana+KVMによる仮想マシン pg 10
KVM 仮想ディスクイメージの補足 qemu-img も使用可能 raw/qcow2 でフォーマット可能 でもあまり使う意味ないでしょ? virtio を使用可能 ゲスト OS に virtio ドライバが用意されて いる必要がある ide 接続エミュレート OS に virtio ドライバが用意されてないときは ide エミュレートを使用できる OpenIndiana+KVMによる仮想マシン pg 11
NIC の用意 Project clossbow( =ネットワークの仮想化 ) を活用する dladm で仮想 NIC を用意する # dladm create-vnic -l rge0 m01 m01 が仮想 NIC 名 -l で仮想 NIC を接続する物理 NIC を指定 物理 NIC 以外に以下のデバイスを指定出来る link-aggrigation(IEEE802.3ad) etherstub(= 仮想スイッチ ) VLAN 指定デバイス OpenIndiana+KVMによる仮想マシン pg 12
NIC の仮想化おさらい 仮想 NIC(VNIC) 物理 NIC もしくは仮想 switch と接続 仮想 switch(etherstub) 仮想 NIC 同士を接続する、仮想的なswitch Global-Zone Internet Zone VNIC etherstub VNIC NIC VNIC Zone VNIC VNIC Zone/ KVM OpenIndiana+KVMによる仮想マシン pg 13
KVM ゲストの実行 以下のコマンドを root で実行 /usr/bin/qemu-kvm -daemonaize -pidfile /var/run/m01.pid -boot cd -enable-kvm -vnc 0.0.0.0:1 -vga std -k en-us -smp 1 -m 1024 -localtime -usbdevice tablet -drive file=/dev/zvol/rdsk/rpool/kvm/guest/centos6/m01,if=virtio,index=0 -drive file=/rpool/kvm/image/CentOS-6.3-x86_64-bin- DVD1.iso,media=cdrom,if=ide,index=2 -net nic,vlan=0,name=net0,model=virtio -net vnic,vlan=0,name=net0,ifname=m01,macaddr=$MAC OpenIndiana+KVMによる仮想マシン pg 14
qemu-kvm オプション (1) -daemonize qemu-kvm を daemon モードで起動 -pidfile /var/run/m01.pid pid ファイル名を指定 -boot cd boot するデバイスを指定 複数指定で、ブート順を指定出来る a,b: 1,2 番目のフロッピーデバイス c: 1 番目の IDE d: 1 番目の CD ドライブ n-p: ネットワークデバイス OpenIndiana+KVMによる仮想マシン pg 15
qemu-kvm オプション (2) -enable-kvm KVM の仮想化サポートを使用する -vnc 0.0.0.0:1 VNC で bind するアドレスとポートを指定 指定したアドレスの 5900+ 指定ポート数 /tcp が使用される -vga=std -k en-us キーボードを指定 日本語の場合は jp を指定する OpenIndiana+KVMによる仮想マシン pg 16
qemu-kvm オプション (3) -smp 1 使用する CPU 数を指定 -m 1024 使用メモリ量を MB 単位で指定 -localtime 時刻を localtime にする 指定しない場合は UTC -usbdevice tablet USB デバイスとしてタブレットを指定 X を使用するとき、マウスカーソルがずれる 問題を解消する TIPS OpenIndiana+KVMによる仮想マシン pg 17
qemu-kvm オプション (4) -drive file=/dev/zvol/rdsk/ ボリューム名 , if=virtio,index=0 ハードディスクの指定 デバイスとして ZFS volume を指定 /dev/zvol/rdsk/rpool/kvm/guest/centos6/m01 if=virtio インターフェース (virtio/ide) を指定 index=0 何番目のデバイスかを指定 OpenIndiana+KVMによる仮想マシン pg 18
qemu-kvm オプション (5) -drive file=ISO ファイル名 , media=cdrom,if=ide,index=2 CDROM を指定 file=ISO ファイル名 指定した ISO ファイルを CD として使用 if=ide インタフェース (virtio/ide) を指定 index=2 何番目のデバイスかを指定 OpenIndiana+KVMによる仮想マシン pg 19
qemu-kvm オプション (6) -net nic,vlan=0,name=net0,model=virtio ネットワークデバイスの指定 vlan=0 VLANID の指定 name=0 NIC 名 model=virtio NIC の種類 virtio e1000 rtl8139( デフォルト ) OpenIndiana+KVMによる仮想マシン pg 20
qemu-kvm オプション (7) -net vnic,vlan=0,name=net0,ifname=m01,macaddr=$MAC VNIC の指定 vlan=0 VLANID の指定 name=0 NIC 名 ifname=m01 KVM サーバ側の NIC を指定 macaddr=$MAC MAC アドレスを指定 OpenIndiana+KVMによる仮想マシン pg 21
仮想 NIC と MAC アドレスの取得 指定した仮想 NIC の MAC アドレスは 作成時に自動的に振られる MAC アドレスを取得するときは dladm コマンドを使用する # dladm show-vnic -po macaddress VNIC 名 bash だと、以下のように指定出来る -net vnic,macaddr=$(dladm show-vnic -po macaddress m01) OpenIndiana+KVMによる仮想マシン pg 22
KVM ゲストを簡単デプロイ KVM ゲストは OS インストールの必要がある 一度インストールしてしまえば ZFS volume をクローンして、簡単デプロイ # zfs snapshot /dev/zvol/rdsk/rpool/kvm/guest/centos6/m01@snap # zfs snapshot /dev/zvol/rdsk/rpool/kvm/guest/centos6/m01@snap /dev/zvol/rdsk/rpool/kvm/guest/centos6/m02 # qemu-kvm ( 中略 ) -drive=/dev/zvol/rdsk//dev/zvol/rdsk/rpool/kvm/guest/c entos6/m02,if=virtio,index=0 ( 後略 ) OpenIndiana+KVMによる仮想マシン pg 23
ZFS clone でデプロイするときの注意 IP アドレスの重複に注意 同じディスクイメージを使用するため 回避策 OS によって異なる 起動してから書き換える DHCP を使用する 別 KVM ゲストに接続して書き換え ネットブートして書き換え template ホストを用意して、template は起動し ない →起動してから書き換え OpenIndiana+KVMによる仮想マシン pg 24
パフォーマンスを測ってみよう CPU 、 disk 、network のパフォーマンスをみる 本体、KVM ゲスト (virtio とエミュレート ) 、 zone のパフォーマンスの違いを見る このベンチマークは、きちんと検証していない ので、ご参考程度にしてください OpenIndiana+KVMによる仮想マシン pg 25
CPU のパフォーマンスは? sysbench で CPU 測定 実行時間を比較 (10000event 実行 ) スレッド数 1, 2, 4, 8 で測定 KVM サーバ、ゲスト(CPU1, 2, 4) 、 Zone で計測 ホストの CPU は Intel Core i5-2400S 4core/4threads ゲスト OS は CentOS6.3(1CPU) OpenIndiana+KVMによる仮想マシン pg 26
CPU 測定結果 CPU performance guest(1CPU) guest(2CPU) guest(4CPU) host zone 16 14 12 10.17 10.14 10.11 10.18 10.17 9.97 10 *10ms 8 6 5.27 5.25 5.24 5.2 4 3.2 3.18 2 0 0 1 2 3 4 5 6 7 8 9 threads OpenIndiana+KVMによる仮想マシン pg 27
CPU パフォーマンスの考察 本体と zone は、パフォーマンスに差異がない thread 数が CPU 数と同じになったときに制限 に達する パフォーマンスは落ちていない それどころか、良くなっているように見える OpenIndiana+KVMによる仮想マシン pg 28
disk のパフォーマンスは? fio で測定 シーケンシャル R/W fio --bs=1m --size=1G --numjobs=2 --runtime=10 --group_reporting -rw=rw --name=file1 ランダム R/W fio --bs=1m --size=1G --numjobs=2 --runtime=10 --group_reporting -rw=randrw --name=file1 KVM サーバ、ゲスト (virtio/ide) 、Zone で計測 SSD(Crucial m4 CT256M4SSD2) を使用 OpenIndiana+KVMによる仮想マシン pg 29
disk io 測定結果 disk io(KB/s) randw(KB/s) randw(KB/s) seqr(KB/s) seqw(KB/s) 350000 330587 332992 324010 316681 300000 288025 274413 270159 273761 250000 200000 KB/s 150000 109036 105681 100000 53458 48822 50000 30565 28548 28781 24870 0 guest+ide guest+virtio server zone disk io(IOPS) randr(IOPS) randr(IOPS) seqr(IOPS) seqw(IOPS) 350 309 322 316 325 300 264 267 281 267 250 200 IOPS 150 103 106 100 52 47 50 29 27 24 28 0 guest+ide guest+virtio server zone OpenIndiana+KVMによる仮想マシン pg 30
disk パフォーマンス考察 virtio と ide では、シーケンシャルR/W の場合 に性能差がある 本体に比べればシーケンシャル R/W で 1/3 程度 OpenIndiana+KVMによる仮想マシン pg 31
network パフォーマンスは ? iperf で測定 サーバ側 iperf -s -p 12345 -w 65536 -i 5 クライアント側 iperf -c <server> -w 65536 -p 12345 -t 60 クライアントーホスト間は、1G で MTU1500 KVM サーバ、ゲスト(virtio/e1000) 、Zone で計測 (3 回計測の平均 ) KVM ゲストは CentOS6.3 OpenIndiana+KVMによる仮想マシン pg 32
network 測定結果 network パフォーマンス guest(virtio) guest(e1000) server zone 1000 934.33 935 900 800 700 600 MBits/sec 500 400 353.67 300 198 200 100 0 OpenIndiana+KVMによる仮想マシン pg 33
network パフォーマンス考察 本体と zone の性能は差異なし virtio は、本体の4割弱の性能 e1000 は、本体の2 割弱の性能 virtio 比でも半分程度 virtio を使う方がパフォーマンスは高いが、 本体に比べるとかなり低い OpenIndiana+KVMによる仮想マシン pg 34
OI+KVM のメリットって? OI 上で動くサービスなら、Zone を使うべき Linux のサービスはほとんど OI でも動かせる コンパイルすれば... Linux 独自の仕組みを使うときに、 KVM を使用する Windows を動かすときは、KVM を使用する OI の別バージョン、OracleSolaris11 が KVM で使用出来る →ただし、virtio ドライバがないので遅い OpenIndiana+KVMによる仮想マシン pg 35
Linux+KVM と比較したメリット ZFS を使用することによる運用性 snapshot を利用したバックアップ clone を使用したデプロイ crossbow による仮想 NIC 簡単にブリッジ接続 仮想スイッチを使用したクローズネットワーク ポート、IP 、NIC を指定した帯域制御 OpenIndiana+KVMによる仮想マシン pg 36
Linux+KVM と比較したデメリット 低いパフォーマンス libvirt/oVirt などのサポートなし GUI による制御未サポート 他ツール (OpenStack/CloudStack など ) との 連携できない SPICE に未対応 ハードウェアを選ぶ AMD 未対応 OpenIndiana+KVMによる仮想マシン pg 37
総評 SmartOS などではサービスで使用しているが、 まだまだ未成熟 性能面、機能面での不具合 ただし、 ZFS や Crossbow を利用出来るのは かなりおいしい Joyent 社などを中心にサービス使用を目指し ているので、今後に期待 →いま、サービスに使用するのはリスキー OpenIndiana+KVMによる仮想マシン pg 38
OpenIndiana+KVM による仮想マシン ご静聴ありがとうございました。 OpenIndiana+KVMによる仮想マシン pg 39