LN-kvm-setup
OpenSuse11.4 で KVM
いつもの事ながらパッケージが嫌なので make してみる。。 ( 手抜き版 .. 基本のパッケージは opensuse を使う .. ) 参考: http://www.howtoforge.com/virtualization-with-kvm-on-an-opensuse-11.4-server http://www.atmarkit.co.jp/flinux/rensai/kvm01/kvm01b.html
kernel の確認
yast2 で kernel の種類を確認 kernel-desktop では動かないので(後述)kernel-default が入っていることを確認。。 ## egrep '(vmx|svm)' --color=always /proc/cpuinfo ## にて // flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm dts tpr_shadow vnmi flexpriority ept vpid ## と言うような行がでることを確認 (複数でる場合がある。。)
kvm モジュールのロード
> lsmod | grep kvm kvm_intel 52582 3 kvm 368118 1 kvm_intel kvm のモジュールがカーネルに読み込まれている事を確認。。 ( kernel-desktop では kvm_intelが読み込まない。。ので kernel-default を使う事 ) ## kvm_intel の 読み込ませ方 # (AMDの場合には kvm_amd ) #modprobe kvm_intel #modprobe kvm_amd
kvm のコンパイル
最新もしくは目的のファイルをダウンロードする。 http://www.linux-kvm.org/page/Main_Page http://sourceforge.net/projects/kvm/files/ kernel-devel zlib-devel pciutils-devel libcap-devel libattr-devel libvirt-devel bridge-utils libvirt # Source ## git clone git://git.kernel.org/pub/scm/virt/kvm/kvm.git ## git clone git://git.qemu-project.org/qemu.git ## git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git # QEMU source # https://github.com/qemu/qemu
# yast2 -i kernel-devel # yast2 -i zlib-devel # yast2 -i pciutils-devel # yast2 -i bridge-utils
> tar xvfz ./qemu-kvm-1.2.0-rc2.tar.gz > cd qemu-kvm-1.2.0-rc2 > configure --prefix=/usr/opt ( --enable-virtfs ) : メッセージがでる。。 > make > make install
kvm のパスを作る。。
make の際に /usr/opt にインストールしたので。。 kvm の起動用の shell のパスを追加したいので > vi setenv_kvm LD_LIBRARY_PATH=/usr/opt/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH PATH=/usr/opt/bin:/usr/opt/libexec:$HOME/opt/sbin:$PATH export PATH を作成
ネットワーク起動用の
yast2 で bridge-utils をインストール # yast2 -i bridge-utils bridge 接続にする為
eth0 の変更 # ifcfg-eth0 BOOTPROTO='static' BROADCAST='' ETHTOOL_OPTIONS='' # IPADDR='172.16.70.99/24' IPADDR='0.0.0.0' MTU='' NAME='NetXtreme GREEN 10G Ethernet PCIe' NETMASK='' NETWORK='' REMOTE_IPADDR='' STARTMODE='nfsroot' USERCONTROL='no'
BR0 の作成 # ifcfg-br0 STARTMODE='auto' BOOTPROTO='static' IPADDR='172.16.70.99/24' MTU='' NETMASK='' NETWORK='' BROADCAST='' USERCONTROL=no NAME='Bridge 0' NM_CONTROLLED=no BRIDGE='yes' BRIDGE_PORTS='eth0' BRIDGE_AGEINGTIME='300' BRIDGE_FORWARDDELAY='0' BRIDGE_HELLOTIME='2' BRIDGE_MAXAGE='20' BRIDGE_PATHCOSTS='19' BRIDGE_PORTPRIORITIES= BRIDGE_PRIORITY= BRIDGE_STP='on'
# qemu-ifup を作っておく #!/bin/sh /sbin/ifconfig $1 up /sbin/brctl addif br0 $1 # cmmod 755 qemu-ifup # cp qemu-ifup /etc /usr/opt /usr/opt/etc
ゲストOSのインストール
ディスクスペースの確保 # qemu-img create -f raw vm00.img 10G ただし::次の方法も確認する。。qcow2 フォーマット 。。どちらがアクセスが早いか確認の事。。 > qemu-img create -f qcow2 vm00.img 10G スナップショットでバックアップ > qemu-img snapshot -c backup001 ./vm00.img ## 5番目に ロールバック > qemu-img snapshot -a 5 ./vm00.img
インストール時の 起動シェル #!/bin/sh qemu-system-x86_64 vm00.img -m 512 \ -monitor telnet::8444,server,nowait -vnc :0 \ -daemonize \ -net nic,macaddr=xx:xx:xx:xx:xx:xx \ -net tap,ifname=tap0 \ # -cdrom FreeBSD-9.1-RELEASE-i386-dvd1.iso -boot d # 1st ## -monitor telnet::8445,server,nowait -vnc :1 -daemonize \ # -net nic,macaddr=yy:yy:yy:yy:yy:yy \ # -net tap,ifname=tap1 \ # 2nd ## -monitor telnet::8446,server,nowait -vnc :2 -daemonize \ # -net nic,macaddr=zz:zz:zz:zz:zz:zz \ # -net tap,ifname=tap2 \ # 3rd ## -monitor telnet::8447,server,nowait -vnc :3 -daemonize \ # -net nic,macaddr=ii:ii:ii:ii:ii:ii \ # -net tap,ifname=tap3 \ # 4th ## -monitor telnet::8448,server,nowait -vnc :4 -daemonize \ # -net nic,macaddr=jj:jj:jj:jj:jj:jj \ # -net tap,ifname=tap4 \ ## ※ MACアドレスは設定する事。。外部から接続時にネットワークが混乱する。。 ## MACアドレスは 52:54:XXXXXXXX でないと上手く動作しない。。 ## http://www.atmarkit.co.jp/flinux/rensai/kvm02/kvm02b.html
アクセス方法
> vncviewer 172.16.70.2 :0
停止方法
> telnet localhost 8444 [qemu] system_powerdown
Diskの追加
## # qemu-img create -f qcow2 vm02.img 300G ## でディスクイメージを作る > /sbin/gpart create -s MBR vtbd1 > /sbin/gpart add -t freebsd -s 30G vtbd1 > /sbin/gpart set -a active -i 1 vtbd1 > /sbin/gpart create -s BSD -n 20 vtbd1s1 > /sbin/gpart add -t freebsd-ufs -s 25G vtbd1s1 > /sbin/gpart add -t freebsd-swap -s 4G vtbd1s1 ## ## /sbin/gpart add -s 512M -t freebsd-ufs da0 ## /sbin/gpart add -s 15G -t freebsd-ufs -a 4k da0 ## ## /sbin/gpart show vtbd1 ## /sbin/gpart show vtbd1s1 ## /sbin/gpart delete -i 2 vtbd1s1 > > newfs vtbd1s1a ## Edit /etc/fstab
ディスクの追加2
## # qemu-img create -f qcow2 vm02.img 300G ## でディスクイメージを作る root@foo:~ # gpart create -s GPT /dev/vtbd1 vtbd1 created root@foo:~ # gpart show /dev/vtbd1 => 40 629145520 vtbd1 GPT (300G) 40 629145520 - free - (300G) root@foo:~ # gpart add -t freebsd-ufs /dev/vtbd1 vtbd1p1 added root@foo:~ # gpart show /dev/vtbd1 => 40 629145520 vtbd1 GPT (300G) 40 629145520 1 freebsd-ufs (300G) > newfs vtbd1p1 ## Edit /etc/fstab
make world の時間
FreeBSD の make world が 約2時間かかる。。 実機では 25分程度だったはずだ。。VMだと 124分と言う事は。。約5倍のコスト。。と言う事だ。。設定を見直すか?? virtio が良いようだ。。( GUEST 側には /usr/ports/emulators/virtio-kmod が必要) http://d.hatena.ne.jp/kakurasan/20080512/p1 ## 参考 http://kaworu.jpn.org/kaworu/2012-04-09-1.php ## 結論 ## buildworld は ディスクの早さよりCPUの個数とメモリの多さ!!
ディスクのパフォーマンス
テスト1 (方法) > bonnie++ -d ./ddd -s 3096 -r 256 -u hoge
format_version | bonnie_version | name | file_size | io_chunk_size | putc | putc_cpu | put_block | put_block_cpu | rewrite | rewrite_cpu | getc | getc_cpu | get_block | get_block_cpu | seeks | seeks_cpu | num_files | max_size | min_size | num_dirs | file_chunk_size | seq_create | seq_create_cpu | seq_stat | seq_stat_cpu | seq_del | seq_del_cpu | ran_create | ran_create_cpu | ran_stat | ran_stat_cpu | ran_del | ran_del_cpu | putc_latency | put_block_latency | rewrite_latency | getc_latency | get_block_latency | seeks_latency | seq_create_latency | seq_stat_latency | seq_del_latency | ran_create_latency | ran_stat_latency | ran_del_latency | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Version | Version | Machine | Concurrency | Size | SequentialOutput | K/sec | %CP | K/sec | %CP | K/sec | %CP | K/sec | %CP | K/sec | %CP | /sec | %CP | ||||||||||||||||||||||||||||||
1.96 | 1.96 | rvm002 | 1 | 1346711081 | 2G | 508 | 99 | 37748 | 31 | 38920 | 32 | 1026 | 96 | 65601 | 41 | 791.9 | 58 | 16 | 3047 | 15 | 32490 | 99 | 12319 | 44 | 6463 | 35 | +++++ | +++ | 13987 | 50 | 17218us | 2527ms | 1225ms | 96225us | 350ms | 1783ms | 3579ms | 391us | 247us | 322ms | 106us | 336us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346711362 | 3096M | 513 | 99 | 36562 | 29 | 34752 | 28 | 980 | 93 | 60314 | 38 | 237.2 | 20 | 16 | 2366 | 12 | 32579 | 99 | 14763 | 52 | 8250 | 43 | 32411 | 99 | 14958 | 54 | 19263us | 2413ms | 608ms | 256ms | 478ms | 1700ms | 5087ms | 116us | 144us | 234ms | 388us | 330us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346714052 | 3096M | 514 | 99 | 40766 | 34 | 34884 | 29 | 1033 | 95 | 61173 | 38 | 226.6 | 20 | 16 | 3227 | 16 | 32463 | 99 | 14138 | 50 | 7448 | 39 | +++++ | +++ | 13394 | 47 | 17009us | 2147ms | 647ms | 118ms | 242ms | 1579ms | 3280ms | 150us | 114us | 324ms | 132us | 225us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346714052 | 3096M | 510 | 99 | 50992 | 43 | 32258 | 26 | 1036 | 98 | 57938 | 36 | 239.7 | 21 | 16 | 12857 | 74 | 32112 | 99 | 21777 | 77 | 11096 | 60 | 29542 | 99 | 24898 | 96 | 17170us | 2413ms | 613ms | 54651us | 565ms | 1602ms | 160ms | 2060us | 154us | 157ms | 109us | 529us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346714052 | 3096M | 514 | 99 | 51574 | 44 | 31318 | 25 | 1063 | 99 | 59525 | 38 | 221.9 | 21 | 16 | 12977 | 69 | 32267 | 99 | 24654 | 87 | 11623 | 63 | +++++ | +++ | 25121 | 89 | 17118us | 1074ms | 639ms | 66733us | 1021ms | 1595ms | 197ms | 209us | 109us | 208ms | 127us | 434us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346714052 | 3096M | 511 | 99 | 51164 | 42 | 29255 | 23 | 1045 | 99 | 59442 | 37 | 238.2 | 20 | 16 | 13174 | 70 | 31493 | 99 | 23488 | 92 | 12200 | 66 | +++++ | +++ | 27532 | 97 | 24080us | 1040ms | 924ms | 107ms | 641ms | 1523ms | 130ms | 1110us | 118us | 79669us | 221us | 172us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346714052 | 3096M | 511 | 99 | 46038 | 38 | 26899 | 21 | 1037 | 98 | 62681 | 39 | 230.5 | 20 | 16 | 13351 | 70 | 31924 | 99 | 27177 | 96 | 12261 | 64 | +++++ | +++ | 28128 | 99 | 37154us | 925ms | 1494ms | 132ms | 740ms | 1641ms | 137ms | 149us | 396us | 134ms | 293us | 1249us | |||||
1.96 | 1.96 | fb4a2 | 1 | 1346683642 | 3096M | 503 | 99 | 65856 | 36 | 34670 | 18 | 1057 | 93 | 106731 | 47 | 901.3 | 36 | 16 | 12158 | 63 | 25462 | 99 | 22541 | 95 | 14175 | 74 | 28747 | 99 | 24971 | 98 | 20376us | 5143ms | 1787ms | 108ms | 177ms | 8701ms | 256ms | 494us | 1106us | 98624us | 86us | 490us | |||||
1.96 | 1.96 | rvm002/x | 1 | 1346710079 | 3096M | 530 | 99 | 87395 | 40 | 39399 | 19 | 1064 | 96 | 129445 | 52 | 4264 | 129 | 16 | 3071 | 22 | 30384 | 99 | 5379 | 29 | 3217 | 23 | 30583 | 99 | 5598 | 30 | 18074us | 848ms | 1448ms | 83932us | 136ms | 914ms | 77942us | 128us | 509us | 4610us | 379us | 6870us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346711891 | 4G | 524 | 99 | 54414 | 37 | 41416 | 28 | 1045 | 97 | 78330 | 41 | 154.2 | 13 | 16 | 2613 | 21 | +++++ | +++ | 5080 | 28 | 2671 | 21 | 30758 | 99 | 5055 | 28 | 19045us | 1227ms | 698ms | 109ms | 383ms | 1140ms | 44053us | 92us | 6338us | 4824us | 121us | 66195us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346711891 | 4G | 525 | 99 | 66342 | 44 | 39013 | 26 | 1040 | 97 | 78082 | 41 | 159.3 | 13 | 16 | 2585 | 20 | 30576 | 99 | 4776 | 29 | 2655 | 21 | 30905 | 99 | 4930 | 28 | 16460us | 1483ms | 720ms | 113ms | 888ms | 1505ms | 84858us | 104us | 904us | 8905us | 120us | 8788us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346711891 | 4G | 515 | 98 | 68415 | 45 | 39446 | 27 | 1067 | 97 | 78949 | 42 | 160.7 | 13 | 16 | 2574 | 20 | +++++ | +++ | 4553 | 27 | 2726 | 21 | +++++ | +++ | 5029 | 29 | 19186us | 537ms | 541ms | 71668us | 267ms | 1168ms | 83497us | 123us | 8360us | 4695us | 123us | 75357us | |||||
1.96 | 1.96 | rvm002 | 1 | 1346711891 | 4G | 526 | 99 | 65174 | 44 | 38903 | 26 | 1045 | 97 | 81364 | 43 | 167.0 | 14 | 16 | 1805 | 14 | +++++ | +++ | 5080 | 28 | 2710 | 21 | 30846 | 99 | 5140 | 30 | 16453us | 711ms | 625ms | 87363us | 207ms | 1649ms | 575ms | 148us | 569us | 14038us | 106us | 459us |
PORT のアップデート
###/etc/make.conf を変更 ### NO_PROFILE=true USA_RESIDENT=NO PORTSNAP_UPDATE=yes DEPENDS_TARGET="package" PACKAGE_BUILDING="YES" NO_GAMES=true NO_DOCS=true MASTER_SITE_BACKUP?=http://ftp.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ MASTER_SITE_OVERRIDE?=http://ftp.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ .if ${.CURDIR:M/usr/src*} != "" SUP_UPDATE?= yes # SUP= /usr/local/bin/cvsup SUP= /usr/bin/csup SUPFLAGS?= -g -L 2 SUPHOST?= cvsup.jp.FreeBSD.org SUPFILE?= /usr/share/examples/cvsup/stable-supfile .endif PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile ###
# DHCP を使うhttp://d.hatena.ne.jp/mopemope/20120823から
#!/bin/sh /sbin/brctl addbr br0 /usr/sbin/tunctl -t tap0 /sbin/brctl addif br0 tap0 /sbin/ip addr add 192.168.2.200 dev br0 /sbin/ip link set br0 up /bin/echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp /bin/echo 1 > /proc/sys/net/ipv4/conf/br0/proxy_arp /bin/echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp /usr/sbin/parprouted wlan0 br0 /usr/sbin/bcrelay -d -i br0 -o wlan0