トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

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

TIPs