2008年3月31日月曜日

OpenVZでのnfs


ホスト(HN)側からゲスト(Container)側にapacheとmysql環境を持っていくのに、ゲスト(VE)側からホスト(HW)側のファイルシステムをnfsでmountして持ってこようと思ったのだが、すんなり行かなかった。



ちょいと探すと、NFS - OpenVZ Wikiという、そのものずばりの記述があった。



とりあえず、母艦(HN)側で毎回modprobe nfsするぐらいなら、組み込んでしまえと

CONFIG_NFSD=y

でカーネルを作り直した(^^;



その後は上記Wikiの記述どおりに/etc/sysctl.confに


kernel.ve_allow_kthreads = 1

の追加と

# vzctl set 101 --features "nfs:on" --save

を行った後に、ゲスト側をリブートすると、無事に動いてくれた。




ちなみに、ゲスト側をnfsサーバにするのも、NFS server inside container - OpenVZ Wikiに書いてある方法でサックリOKでした。



初期のOpenVZにはnfs client機能はなかったのね。



ps.

HNとかHWとかVEとかContainerとか入り乱れているけど、

こちら↓を参照くださいまし。

HN - OpenVZ Wiki

Container - OpenVZ Wiki


OpenVZでのプロセスの見え方


OpenVZ メモリ割り当て変更で、「apacheが落ちるからメモリ割り当てを増やした」旨の事を書いたが、実はapacheを落としていたのは私だった(^^;;;



母艦側で動かしていたapacheとmysqlをゲスト側に持っていったので、

母艦側のpsで見つけたapacheとmysqlをkillしたのだが、

実はそのプロセスはゲスト側だったのだ。



Xenと違って、OpenVZは母艦(ホスト)側からゲスト側のプロセスが丸見えなのね。



分かっていたつもりだったけど、分かってなかった(^^;。




ちなみに、ホスト側でps -eHを実行すると、ホスト側のプロセスか、ゲスト側のプロセスか、おおよそ検討がつく。


# ps -eH
PID TTY TIME CMD
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 events/0
6 ? 00:00:00 khelper
63 ? 00:00:00 kblockd/0
66 ? 00:00:00 kacpid
67 ? 00:00:00 kacpi_notify
151 ? 00:00:00 cqueue/0
155 ? 00:00:00 ata/0
156 ? 00:00:00 ata_aux
158 ? 00:00:00 ksuspend_usbd
163 ? 00:00:00 khubd
166 ? 00:00:00 kseriod
201 ? 00:00:00 ubstatd
203 ? 00:00:00 pdflush
204 ? 00:00:00 pdflush
205 ? 00:00:00 kswapd0
270 ? 00:00:00 aio/0
939 ? 00:00:00 pccardd
953 ? 00:00:00 kpsmoused
977 ? 00:00:00 rpciod/0
2362 ? 00:00:00 scsi_eh_0
2363 ? 00:00:00 scsi_eh_1
2500 ? 00:00:00 kjournald
3771 ? 00:00:00 kmmcd
3844 ? 00:00:00 irda_sir_wq
4066 ? 00:00:00 firewire_sbp2
4208 ? 00:00:00 kjournald
4686 ? 00:00:00 kondemand/0
5441 ? 00:00:00 vzmond
1 ? 00:00:00 init
2729 ? 00:00:00 udevd
4376 ? 00:00:00 portmap
4394 ? 00:00:00 rpc.statd
4517 tty4 00:00:00 getty
4518 tty5 00:00:00 getty
4522 tty2 00:00:00 getty
4523 tty3 00:00:00 getty
4525 tty1 00:00:00 getty
4526 tty6 00:00:00 getty
4658 ? 00:00:00 acpid
4750 ? 00:00:00 syslogd
4804 ? 00:00:00 dd
4806 ? 00:00:00 klogd
4852 ? 00:00:00 dbus-daemon
4866 ? 00:00:00 system-tools-ba
4867 ? 00:00:00 dbus-daemon
4886 ? 00:00:00 hald
4887 ? 00:00:00 hald-runner
4947 ? 00:00:00 hald-addon-keyb
4953 ? 00:00:00 hald-addon-cpuf
4954 ? 00:00:00 hald-addon-acpi
4955 ? 00:00:00 hald-addon-keyb
4957 ? 00:00:00 hald-addon-keyb
4958 ? 00:00:00 hald-addon-keyb
4959 ? 00:00:00 hald-addon-keyb
4960 ? 00:00:00 hald-addon-keyb
5219 ? 00:00:00 hald-addon-keyb
4972 ? 00:00:00 gdm
4975 ? 00:00:00 gdm
4979 tty7 00:01:59 Xorg
6526 ? 00:00:00 gnome-session
6566 ? 00:00:00 scim
6575 ? 00:00:00 ssh-agent
6594 ? 00:00:03 metacity
6597 ? 00:00:03 gnome-panel
6598 ? 00:00:01 nautilus
6615 ? 00:00:00 vino-session
6616 ? 00:00:00 bluetooth-apple
6622 ? 00:00:00 update-notifier
6629 ? 00:00:00 evolution-alarm
6631 ? 00:00:00 trackerd
6634 ? 00:00:00 python
5028 ? 00:00:00 sshd
5048 ? 00:00:00 avahi-daemon
5049 ? 00:00:00 avahi-daemon
5078 ? 00:00:00 cupsd
5181 ? 00:00:00 freshclam
5213 ? 00:00:00 thinkpad-keys
5259 ? 00:00:00 netdaemon
5324 ? 00:00:00 master
5335 ? 00:00:00 pickup
5337 ? 00:00:00 qmgr
5342 ? 00:00:00 powernowd
5494 ? 00:00:00 init
6094 ? 00:00:00 portmap
6198 ? 00:00:00 syslogd
6253 ? 00:00:00 mysqld_safe
6290 ? 00:00:01 mysqld
6291 ? 00:00:00 logger
6436 ? 00:00:00 sshd
6468 ? 00:00:00 cron
6487 ? 00:00:00 apache2
6488 ? 00:00:00 apache2
6489 ? 00:00:00 apache2
6490 ? 00:00:00 apache2
6491 ? 00:00:00 apache2
6492 ? 00:00:00 apache2
6493 ? 00:00:00 apache2

5653 ? 00:00:00 console-kit-dae
5751 ? 00:00:00 atd
5765 ? 00:00:00 cron
6523 ? 00:00:00 gnome-keyring-d
6578 ? 00:00:00 gconfd-2
6579 ? 00:00:00 scim-launcher
6585 ? 00:00:00 dbus-daemon
6587 ? 00:00:00 gnome-settings-
6600 ? 00:00:00 scim-helper-man
6601 ? 00:00:02 scim-panel-gtk
6603 ? 00:00:00 scim-launcher
6609 ? 00:00:00 gnome-volume-ma
6611 ? 00:00:00 bonobo-activati
6614 ? 00:00:00 gnome-vfs-daemo
6642 ? 00:00:01 gnome-screensav
6643 ? 00:00:00 gnome-power-man
6653 ? 00:00:00 evolution-data-
6659 ? 00:00:00 evolution-excha
6689 ? 00:00:00 mapping-daemon
6699 ? 00:00:00 stickynotes_app
6706 ? 00:00:01 scim-bridge
6713 ? 00:00:00 cpufreq-applet
6716 ? 00:00:00 battstat-applet
6719 ? 00:00:01 multiload-apple
6722 ? 00:00:07 gnome-terminal
6724 ? 00:00:00 gnome-pty-helpe
6725 pts/0 00:00:00 bash
6728 pts/0 00:00:00 su
6729 pts/0 00:00:00 bash
7318 pts/0 00:00:00 ps
6767 ? 00:00:00 firefox
6770 ? 00:00:00 run-mozilla.sh
6774 ? 00:03:50 firefox-bin
7128 ? 00:00:00 scim-helper-lau

上記でPID 5494のinitがゲストOS側であり、そこから起動されているPID 6493までがゲストOSのプロセスのようだ。



もっとサックリ分かる方法はないのかな?


OpenVZ メモリ割り当て変更


とりあえず、そのままパクって(^^;


# vzcalc 1001

Resource Current(%) Promised(%) Max(%)
Memory 3.54 1.22 5.26
root@hong:/etc/vz/conf# vzcalc -v 1001
Resource Current(%) Promised(%) Max(%)
Low Mem 0.42 1.22 1.22
Total RAM 1.40 n/a n/a
Mem + Swap 0.69 0.70 n/a
Alloc. Mem 3.54 0.70 5.26
Num. Proc 0.05 n/a 0.10
--------------------------------------------
Memory 3.54 1.22 5.26





# vzctl set 1001 --vmguarpages $((256 * 128)) --save
UB limits were set successefully
Saved parameters for VE 1001
# vzctl set 1001 --privvmpages $((256 * 1024)) --save
UB limits were set successefully
Saved parameters for VE 1001
f# vzcalc -v 1001
Resource Current(%) Promised(%) Max(%)
Low Mem 0.43 1.22 1.22
Total RAM 1.42 n/a n/a
Mem + Swap 0.70 0.70 n/a
Alloc. Mem 3.57 3.26 25.31
Num. Proc 0.05 n/a 0.10
--------------------------------------------
Memory 3.57 3.26 25.31



割り当てを増やした理由は、何だかゲストOS上のapache2が落ちるから。

メモリ不足かなと思いまして。

ちなみにOpenVZ上にmysqlとapache2を動かして、
さらにその上にMTを載せてBlogのバックアップ(ミラー)サーバ替わりにして試してます。



以下さらに追記。

ゲストOSが落ちているとき↓。


# vzcalc -v 1001
Resource Current(%) Promised(%) Max(%)
Low Mem 0.00 1.22 1.22
Total RAM 0.00 n/a n/a
Mem + Swap 0.00 0.70 n/a
Alloc. Mem 0.00 3.26 25.31
Num. Proc 0.00 n/a 0.10
--------------------------------------------
Memory 0.00 3.26 25.31



ゲストOS起動直後↓。


# vzctl start 1001
Starting VE ...
VE is unmounted
VE is mounted
Adding IP address(es): 192.168.0.11
Setting CPU units: 1000
Set hostname: hopenvz
File resolv.conf was modified
VE start in progress...
# vzcalc -v 1001
Resource Current(%) Promised(%) Max(%)
Low Mem 0.35 1.22 1.22
Total RAM 1.21 n/a n/a
Mem + Swap 0.60 0.70 n/a
Alloc. Mem 3.32 3.26 25.31
Num. Proc 0.04 n/a 0.10
--------------------------------------------
Memory 3.32 3.26 25.31



Blogのcgiにアクセスしたとき↓。


# vzcalc -v 1001
Resource Current(%) Promised(%) Max(%)
Low Mem 0.43 1.22 1.22
Total RAM 2.50 n/a n/a
Mem + Swap 1.24 0.70 n/a
Alloc. Mem 4.10 3.26 25.31
Num. Proc 0.05 n/a 0.10
--------------------------------------------
Memory 4.10 3.26 25.31


2008年3月30日日曜日

OpenVZのお試し


Open Tech Press | OpenVZの実行ガイドを見ながら、手元のノートPCのUbuntu上にOpenVZを組み込んでみた。



カーネルは、Download/kernel/2.6.24/2.6.24-ovz004.1から Kernel patchをいただいて、素の2.6.24にパッチを当ててmake-kpkg --initrd binaryして作成。



以下は、冒頭のページを見ながら、ほぼそのまま。


# dpkg -i linux-image-2.6.18-openvz-18-53.5d1-686_028.53.5d1_i386.deb
# dpkg -i linux-headers-2.6.18-openvz-18-53.5d1-686_028.53.5d1_i386.deb
# vi /etc/sysctl.conf
# apt-get install vzctl

/etc/sysctl.confも冒頭のページで書かれた内容をそのまま書き加えた(^^;



ゲストOSはdebian-4.0を。


# vzctl create 1001 --ostemplate debian-4.0-i386-minimal
Creating VE private area (debian-4.0-i386-minimal)
Performing postcreate actions
VE private area was created



確認。


# ls /var/lib/vz/root/
1001

# ls /var/lib/vz/root/1001/

# ls /var/lib/vz/private/
1001

# ls /var/lib/vz/private/1001/
bin dev home lib mnt proc sbin sys usr
boot etc initrd media opt root srv tmp var

ほほー、出来てる。




最後のかんたんな設定。


# vzctl set 1001 --ipadd 192.168.0.11 --nameserver 192.168.0.250 --hostname hopenvz --save
Saved parameters for VE 1001



おもむろに動かす。


# vzctl start 1001
Starting VE ...
VE is mounted
Adding IP address(es): 192.168.0.11
vps-net_add WARNING: Function proxy_arp for eth0 is set to 0. Enable with 'sysctl -w net.ipv4.conf.eth0.proxy_arp=1'. See /usr/share/doc/vzctl/README.Debian.
Setting CPU units: 1000
Set hostname: hopenvz
File resolv.conf was modified
VE start in progress...

ちょっと怒られたので、上記コマンドラインを実行後、追加で/etc/sysctl.confを後でいじった。




# vzlist
VEID NPROC STATUS IP_ADDR HOSTNAME
1001 4 running 192.168.0.11 hopenvz

動いているっぽい。



とりあえず、確認。


# vzcalc -v 1001
Resource Current(%) Promised(%) Max(%)
Low Mem 0.07 1.22 1.22
Total RAM 0.10 n/a n/a
Mem + Swap 0.05 0.70 n/a
Alloc. Mem 0.08 0.70 5.26
Num. Proc 0.01 n/a 0.10
--------------------------------------------
Memory 0.10 1.22 5.26

ふふーん、慣れない感じの見え方だなぁ。



sshで仮想マシンに入ろうとしたら、rootのパスワード不明(^^;

どうやって入るんだろうと思っていたら、冒頭のページに書いていた。


# vzctl enter 1001
entered into VE 1001
hopenvz:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
simfs 1048576 154604 893972 15% /
tmpfs 1031872 0 1031872 0% /lib/init/rw
tmpfs 1031872 0 1031872 0% /dev/shm

simfsというのがmountされてる。




hopenvz:/# ps axww
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init [2]
320 ? Ss 0:00 /sbin/syslogd
343 ? Ss 0:00 /usr/sbin/sshd
355 ? Ss 0:00 /usr/sbin/cron
379 ? Ss 0:00 vzctl: pts/0
380 pts/0 Ss 0:00 -bash
385 pts/0 R+ 0:00 ps axww

最低限のプロセスが動いているなぁ。



おもむろに、apt-get update。


hopenvz:/# apt-get update
Get:1 http://security.debian.org etch/updates Release.gpg [189B]
Get:2 http://security.debian.org etch/updates Release [37.6kB]
Get:3 http://ftp.se.debian.org etch Release.gpg [378B]
Get:4 http://ftp.se.debian.org etch Release [58.2kB]
Ign http://security.debian.org etch/updates/main Packages/DiffIndex
Ign http://security.debian.org etch/updates/contrib Packages/DiffIndex
Get:5 http://security.debian.org etch/updates/main Packages [320kB]
Ign http://ftp.se.debian.org etch/main Packages/DiffIndex
Get:6 http://security.debian.org etch/updates/contrib Packages [8934B]
Ign http://ftp.se.debian.org etch/contrib Packages/DiffIndex
Ign http://ftp.se.debian.org etch/main Sources/DiffIndex
Ign http://ftp.se.debian.org etch/contrib Sources/DiffIndex
Get:7 http://ftp.se.debian.org etch/main Packages [5619kB]
Get:8 http://ftp.se.debian.org etch/contrib Packages [71.6kB]
Get:9 http://ftp.se.debian.org etch/main Sources [1653kB]
Get:10 http://ftp.se.debian.org etch/contrib Sources [21.0kB]
Fetched 7790kB in 17s (436kB/s)
Reading package lists... Done

なぜか、seから。



でも、そのまま、upgrade。


hopenvz:/# apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
The following packages will be upgraded:
bsdutils cpio debconf debconf-i18n debian-archive-keyring e2fslibs e2fsprogs
findutils libblkid1 libc6 libcomerr2 libkrb53 libpam-modules libpam-runtime
libpam0g libss2 libssl0.9.8 libuuid1 lsb-base mount nano perl-base tar
tzdata util-linux vim-common vim-tiny
27 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 13.8MB of archives.
After unpacking 1376kB disk space will be freed.
Do you want to continue [Y/n]?
以下略

とりあえず、あまり意識せずにそのまま使えそう。



ちなみに、母艦側で、


# cd /var/lib/vz/private/1001/tmp
# touch dada

を行った後に、仮想マシン側でどうなるか見たところ、

hopenvz:/# ls -l /tmp
total 0
-rw-r--r-- 1 root root 0 Mar 30 14:53 dada

てな感じで出来ている。

排他制御とかも出来ていないんだろうか?

調べるか...



FM福岡

3/31に某社のCMがヘビーローテーション(?)されます。

聞いてちょ(^^;

アイ・オー、W-SIMを利用してインターネット接続できるUSBアダプタ

BroadBand Watch: アイ・オー、W-SIMを利用してインターネット接続できるUSBアダプタ

待ってたよ、これ。


まだ、予約中か。


2008年3月28日金曜日

私の周りの名言(31)

「顧客と会話すればよい。会話しなければ始まらない。
 会話すれば、ヒントはいっぱいでてくる。
 それを感じ取って、徹底的にやる。」

顧客の期待を越えるのは難しい。
顧客の期待に答えることすら難しいので、尚更である。

しかし、「顧客の期待を越えるのは難しいよね。」と私がつぶやいたときに、
「そんなの簡単じゃん。」の後に、某同僚から最初に書いたような事を言われたのだ。


その会話の流れの中で、
「ただ会話すれば良いというもんじゃない。
 感じ取れなければ、ただの世間話である。」
良い意味での貪欲さというか、まさにプロ根性である。
ps.
会話するためには、『まず客先に行く』事が必要条件よね。
ね?