6月 082009
 

ここんとこ、自宅に設置してある FreeBSD のサーバが安定しない。と、言うのはこのブログにずっと書き続けていたのだけど、一日一回 cron で shutdown -r now するようにしたら安定してくれるようになったのでしばらくそれで運用しています。

でもって FreeBSD が安定しないぜ。ベイビー。と言うのはいよいよ FreeBSD-users-jp にも流れたですねぇ。これでいきなりメジャー化するかなぁ・・。

さてと。話の本題はここからで、自宅のサーバが安定しないのでキーボードとディスプレーはずっと付けっぱなしにして、イザと言うときにただちに対応できるようにしているのだけど、ディスプレーがまぶしすぎる・・。

X が動作しているデスクトップなどは省電力機能が働いてディスプレーの電源をスリープモードなどにしてくれるのだけど、X がインストールされていないサーバなどはそれができないので夜中でもこうこうと電気が付いていて login: プロンプトが表示されているのでした。

マメにディスプレーの電源切れば良いじゃんとは言いつつも、そんな根性ないし・・。と、言うことでコンソールでも、接続されたディスプレーの電源を落とす方法は無いものか調べてみようかと思ったのだけど、どうも google での検索文字列に何を指定して良いのかいまいち解らない・・。トホホ。

で IRC で人に聞いたら green_saver.ko と言うカーネルモジュールがあるらしい。と言うのを教えて頂きました。ありがとうございます。けど、使い方がいまいち解らないなー。ヒントとして green_saver.ko と言うを教えてもらったので、これで google を再度検索したら、おー。出てきました。

jman splash などして splash(4) を見れば良いわけねー。で、この man page によると kldload green_saver.ko とした後、 vidcontrol -t 120 とコマンドを打つと、何もキー入力がないと 120 秒後にちゃんとディスプレーの電源が切れる(正確に言うと省電力機能が働いたと言うのか?)ことが確認できました。

ちなみに起動時に設定することもできるようで /boot/lorder.conf には以下のように書きます。

green_saver_load="YES"

 
そして /etc/rc.conf には以下のように書くと起動時から情報を反映してくれることでしょう。

blanktime="120"
saver="green"

 
これで夜中でもディスプレーがランランと輝いている状態からは解放されそうです。ふぅ。

それにしても最近、省電力ネタ多いかな? ついこの間 CPU ネタ書いたばっかりだけどなぁ;-)。

デスクトップで利用している FreeBSD も acpiconf -s3 でスリープしてくれると良いのだけどねぇ・・。FreeBSD や NetBSD をデスクトップ(ラップトップ含む)として使うのヤメて、MacBook 使う人が多くなったとは良く聞くけど、サスペンドしない、もしくは X が表示してくれる色がショボイ(少ない)と言う意見が大勢を占めている。と言うのもまた事実か。

そー言う僕も MacBook 使いで写真の編集などは Mac でやっているけど;-)。

5月 152009
 

HP の 1U サーバで ProLiant DL320 G5p と言うのが、今、手元に四台あるのだけど、こいつには現在、以下の OS がインストールされている。

・FreeBSD/amd64 6.4-RELEASE-p3
・FreeBSD/amd64 7.0-RELEASE-p9
・CentOS release 5.2 x86_64(後にバージョンアップして CentOS release 5.3 x86_64)
・Windows Server2003 EPE

でもって、このサーバの FreeBSD で見た場合のスペックはこんな感じ。

CPU: Intel(R) Xeon(R) CPU            3075  @ 2.66GHz (2660.01-MHz K8-class CPU)
Origin = "GenuineIntel"  Id = 0x6fb  Stepping = 11
Features=0xbfebfbff
Features2=0xe3fd
AMD Features=0x20000800
AMD Features2=0x1
Cores per package: 2
usable memory = 2132668416 (2033 MB)
avail memory  = 2058006528 (1962 MB)
ACPI APIC Table: 
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID:  0
cpu1 (AP): APIC ID:  1

 
今回は CPU のお話です。

今まで僕個人的には、これらのサーバ群は FreeBSD で利用していたので特には気にしていなかったことがあります。それは CPU クロック。FreeBSD の場合 powerd を動作させるといとも簡単に SpeedStep(正確には EIST・Enhanced Intel SpeedStep Technologyですね) が動き出すので sysctl で後は見るだけ。って感じだった。

FreeBSD で見た CPU クロック、今はこんな感じ。

dev.cpu.0.freq: 330
dev.cpu.0.freq_levels: 2647/-1 2316/-1 1985/-1 1654/-1 1323/-1 992/-1 661/-1 330/-1

 
でもって CeotOS でも SpeedStep 動かないかなぁ?とか思い格闘したのだけど、ダメみたいねぇ。
CeotOS 5.2 ではダメで 5.3 なら OK よ。ってのをみつけて yum upgrade して試したのだけど・・。

# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_conservative.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_ondemand.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_powersave.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/cpufreq_stats.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/drivers/cpufreq/freq_table.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/acpi-cpufreq.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/powernow-k8.ko
# modprobe /lib/modules/2.6.18-128.1.10.el5/kernel/arch/x86_64/kernel/cpufreq/speedstep-centrino.ko

 
関連しそうな全てのモジュールをロードしてみたけど FATAL: Module hoge not found. だそうです・・。Linux のこの辺りのこと、僕はあんまり良く解らないのだけどもね。

でもって cpufreq-selector と言うのは無いので cpufreq-info と言うのを実行してみたら以下の通り。

# cpufreq-info
cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
no or unknown cpufreq driver is active on this CPU
analyzing CPU 1:
no or unknown cpufreq driver is active on this CPU

 
なんか「Xeon には対応してねーんじゃねぇの?」とか思えて来た段階で Linux についてはしゅーりょー。だって動かないんだもの。ちなみにカーネルは 2.6.18-128.1.10.el5 の x86_64 です。CeontOS release 5.3。

続いて Windows Server2003 EPE エディション行ってみましょう。どうすれば WindowsServer で SpeedStep が有効になるんだ?とか思ったのですが、考えてみると、僕は普段から FreeBSD と AMD のプロセッサしか使ってないので Intel の Xeon なんざ今まで気にしたことも無かった。

で、ググってみたら以下の URL を発見。

http://www.intel.com/cd/channel/reseller/asmo-na/eng/203838.htm

コントロールパネルの電源管理で「ポータブル/ラップトップ」を選択すると SpeedStep が有効になるのかと思いきや全然ダメ。BIOS の設定を見ても EIST の設定なんざありゃしない。困りはてて HP のサポートに電話して聞いたら、ドキュメント番号 232907191 の P.21 を参照してみてくれ。とのことでこのドキュメントを探そうとしたけど、全然みつかんないじゃーん。と、言うことでこれまたしゅーりょー。

ちなみに Windows Server2003 EPE 上で CPU-Z を起動したキャプチャをアップしておきます。

WinServ2003.png

Core Speed って所が 0.3MHz 程度なら変動するんですが、大きく、上記の FreeBSD のようには可変にはなりません。でもって大体 2GHz のちょっと下辺りでふらついている。って感じでしょうか。

あ、あれーー?? DL320G5p って Xeon 3075 で MAX が 2.66GHz の CPU なんだけどっ!! それが 2GHz も出ていないってどーいうことーーっ!!??

さてと。そろそろ結論フェーズに持っていくことにしましょう。

CeontOS も Windows Server2003 も本当に地球環境に優しくない OS ですねぇ。FreeBSD なら OS をインストールして再起動した直後(正確には powerd を起動した直後だけど;-)から CPU 速度は抑えられて運用が始まるのになぁ。そして、何も設定せずに CPU クロックが下げられる。けど、どうして FreeBSD だけかまともに動作するんだ? OS がちゃんとしていると言うことか? Linux は NotePC メインに考えていて サーバの SpeedStep にまでまだ手が回ってないとか?(まぁ “Linux” って言ってしまうと範囲が広すぎるので “SentOS” って書いたほうが良いかな。この場合。)

あー。後、今回はワットチェッカーとか科学的な根拠に基づいては書いていません。ただ単におのおのの OS 上で動作したプログラムが示した値を基準にしています。が・・。そー考えると Linux はカーネルモジュール自体がロードできなかったので値は取れていない状態だなぁ・・。

4月 242009
 

前回は、mrtg が実質的に IPv6 に対応していないねぇ。って所で話が終わったのですが、そこから進展がちょっとあったので書いてみたいと思います。

net-snmp に対して IPv6 で接続したい人は前の記事を先に読んで 、その後でこの記事を読んでください。

さてと。物語りは前回からの続きなのですが、mrtg の config ファイルを記述した時、 Target に IPv6 を記述した場合 ifIndex でしかトラフィック情報が取得できない。と言う所で終わりました。

確かに、何度試してもダメだったので、debug オプションを有効にしてログを見つつソースコードなどを眺めていたら問題点を発見しました。最近の ports-current から mrtg をインストールするとmrtg-2.16.2,1 がインストールされるのですが、その時に /usr/local/lib/perl5/site_perl/5.8.9/Net_SNMP_util.pm も併せてインストールされます。こいつの中で Net::SNMP を呼んでいる時に -domain で udp/IPv4 しかセットしていないみたいなので udp/IPv6 をセットするようにしたら IPv6 でも一応動くようになりました。

修正分のパッチはこの辺りに置いておきます

このパッチを適用することにより、FQDN で問い合わせした時は ifDescr でも値が取れる事を確認できました。以下におさらいしてみることにしましょう。

・IPv6 で SNMP が取得できるもの

Target[dir_re1]: 2:public@taro6.running-dog.net:
Target[dir_re1]: \re1:public@taro6.running-dog.net:
Target[dir_re1]: 2:public@[2001:200:161:14cc::1:1]:161:

 
taro6.running-dog.net は DNS に IPv6 のみのアドレスが登録されています。

この設定では IPv6 では ifIndex と ifDescr でトラフィック量を取得することができました。

・取得できないもの

MAC アドレス指定(FQDN・IPv6 共に)
ifDescr 指定での IPv6 アドレスを記述した場合

とまぁ、こんな感じで ifDescr で取得できるようになったのでヨシとしておきましょう。それにしても DNS は必須になってしまうのですが・・。

後、net-snmp って –enable-ipv6 で make しても snmpwalk は IPv6 に対応していないのねぇ。DNS に IPv6 のみ登録してある FQDN を指定しても「そんなアドレス知らん。」とか言われます。/etc/hosts に書いてもダメ。snmpd が IPv6 に対応しているだけにもったいないことです・・。

さてと。ここまでは net-snmp と mrtg のお話で、前回の続きの完結編。と言う感じになります。

続きまして rrdtool に行ってみましょうか。ports 的には ports/databases/rrdtool になりますが、これをインストールすると RRDs と言う perl のモジュールをインストールしてくれて RRDs::graph と言うモジュールを使うと MRTG グラフを表示してくれます。グラフを作成する際のオプションとして IPv6 アドレスが存在した場合にどうなるのか?

正解ですが、”:” は区切り文字に使われているので DEF: の設定に IPv6 アドレスがあるとまともに動作してくれません。

ports 的な rrdtool-1.3.5 のソースを見てみると rrdtool-1.3.5/src/rrd_graph_helper.c に以下のような記述が所々にあり、”[]” で囲むとか “\:” などしても全然対処できないと言うことが解ります。

if (line[*eaten] == '\0' || line[*eaten] == ':') {
    dprintf("- no (or: empty) legend found\n");
    return 0;
}

 
と、言うことで RRDs を使う場合には IPv6 を意識しないようにしないとまずいです。では、どんな時に IPv6 を使う必然性が出てくるのかとなるのですが、僕の場合、rrdfile と PNG ファイルの保存場所に IP アドレスを利用してる感じですね。

/data/mrtg/192.168.1.1/re1.rrd
/data/mrtg/2001:200:161:14cc::1:1/re1.rrd

でもって RRDs::graph では以下のようなコーテイングをしていたらこらアカンですわなー。

:
my $rrdfile = "/data/mrtg/2001:200:161:14cc::1:1/re1.rrd";
my $pngfile = "/data/mrtg/2001:200:161:14cc::1:1/re1.png";
push (@options
    :
    ,"DEF:avein0=${rrdfile}:ds0:AVERAGE",  "CDEF:avein=avein0,8,*"
    ,"DEF:maxin0=${rrdfile}:ds0:MAX",      "CDEF:maxin=maxin0,8,*"
    :
);
my @rv = RRDs::graph( $pngfile ,@optins : );

 
なので、結局 $rrdfile =~ s/:/_/g; など言う弱いことをして問題回避したのでありました。

これで、net-snmp・mrtg・rrdtools の IPv6 対応が一応終わった感じかなぁ。10Gbps 問題も回避できたし、今の所は多分これで IPv6 な世界が来ても大丈夫なような気がします。が・・。mrtg には IPv6 対応をもう少し頑張ってもらい所ではあります。

http://oss.oetiker.ch/mrtg/doc/mrtg-ipv6.en.html

こんな所読んだって Target の所がハショッて書いてありすぎで全然ダメなんだもの・・。トホホ。

くーーっ。MacOSX Leopard の /usr/sbin/snmpd は 5.4.1 使っているのに IPv6 に対応してないじゃん。 udp6:161 のオプション、そんなのねーー。とか言いやがる・・orz。これはヒサンだ・・。

つまり、どういうことかと言うと、例えば MacOSX を leopard.running-dog.net と言う FQDN で 192.168.1.30 と 2001:200:161:14cc::1:10 の二つ RR レコードを記述していた場合、mrtg.cfg の Tagrt に FQDN を記述すれば mrtg は IPv6 で問い合わせに行くことになります。

けど、MacOSX の snmpd は IPv4 にしか答えないので mrtg はエラーとなります。そして、mrtg は「IPv6 から IPv4 にフェイルオーバーしないよ。」と言う仕様なので、MacOSX への mrtg.cfg の設定における Target は FQDN ではなく、IPv4 アドレスを記述しないと正しく情報が取得できないことになります。

いやぁ・・。奥が深い・・。まず最初に監視対象機器が DNS に A と AAAA があるか確認した後、当該機器の snmpd が IPv6 に対応しているか確認してからでないと mrtg.cfg の記述が完成しないんだー・・。

と。言うこで、このネタ。ここまでにしておきましょう・・。

4月 202009
 

さてと。久しぶりに FreeBSD ネタ;-)。

rcNG。僕は好きく無いんだけど、/usr/local/etc/rc.d/ 配下に自分で書いたスクリプトを置いて、一番最後に実行させるべく PROVIDE:・REQUIRE:・KEYWORD: などを書いても絶対に一番最後にはならない。BEFORE: bgfsck とか書いても、bgfsck が 上のほうに来てしまうし・・。

# rcorder -s nostart /etc/rc.d/* /usr/local/etc/rc.d/*

 
と、言うコマンドを叩くと実行される順番が表示されるけど、自分で実行したい順番にならない・・。
もうどうにもならないので考えた技。上記コマンドを打ったとき、一番最後に実行されるのが、/etc/rc.d/bgfsck なのでこの中からスクリプトを呼んでしまえっ。技を考え出しました;-)。修正分をパッチにするとこんな感じ。

--- /home/takachan/bgfsck       2009-04-20 16:58:23.000000000 +0900
+++ /etc/rc.d/bgfsck    2009-02-08 10:10:39.000000000 +0900
@@ -16,6 +16,11 @@
bgfsck_start () { + +# It operates at the very end. rc is started. + echo 'Starting very end RC.' + /usr/local/site/bin/rc.lastexec + if [ -z "${rc_force}" ]; then background_fsck_delay=${background_fsck_delay:=0} else

 
/etc/rc.d/bgfsck の 中から /usr/local/site/bin/rc.lastexec を呼んでいる。でもって呼び出されたこのスクリプトでは自分が一番最後に実行したいものをツラツラと書いて行けばおしまい。って状態にしています;-)。

同じようなことは他にもあるけどねぇ。例えば /etc/rc.d/LOGIN の中に上記のパッチみたく書けば、その直後に実行されるとか(本当か?試して無いけど;-)、ネットワーク系のデーモンはもっと早い時にに起動したい場合は、じゃぁ、必要なスクリプトから呼んじゃエー。みたいな。

これは FreeBSD の流儀的には美しく無いのだろうけど、思った所でバシっと動作してくれないのが困ってしまうのよ・・。rcNG は・・。はぁ。

まぁ、今の所は一番最後に起動したいのが一番多いのでそれはそれでよしとしています。xdm(僕の場合は kdm だけど)なんざ、一番最後に起動して欲しいのよねぇ。/etc/ttys 経由では無く、rc スクリプト経由で。

/etc/ttys から xdm を呼んじゃうと kill しても自動的にまた起動してしまうでしょ。あれ、好きくないのよ。今はそんなことなくなったのかな?最近のは試してないけど。

それにしてもこの技、よい子はマネしないでねぇ;-)。

3月 192009
 

自宅サーバが安定しない。」と、ずっと書き続けてきたのだけど、昨日 csup したら 7.1-STABLE が 7.2-PRERELEASE になっていたので、サーバが凍り付く前にリブートしてバージョンアップでけた。

と、言うことで最近のサーバは uptime 12days を記録し、去年の 10 月以来最高の記録となりました;-)。

ちなみに さくらインターネット が自社のサーバを 7.1-RELEASE にアップグレードするってアナウンス出したので思わずサポートに「7.1-RELEASE はフリーズしてしまうけど、サービスにおいて大丈夫ですか?安定してくれないとイヤだなぁ。」と書いたら「検証の結果、凍りつくハードウェアも確かにあったけど、サービスに利用しているハードウェアは大丈夫なのでバージョンアップします。」との事でした。でもって回避策も考えているそうな。

で、うちのサーバがどうして安定したか。と言えば OS の改修とか色々考えられるのですが、現在のうちのサーバの稼働状況を見てみると以下のような感じです。

・DNS サーバ
・ウェブサーバ(httpd-2.2.9) port:80 最大プロセスが 140 個程度
・ウェブサーバ(httpd-2.2.9) port:8080 最大プロセスが 20 個程度
・メールサーバ(sendmail)
・POP3/IMAP4 サーバ(courier-imap-4.4.1)
・自宅網内用 SAMBA サーバ
・cvsupd
・IPv6 ルータ(dtcps,dtcpc)

こんな感じでしょうか。サーバ部分とルータ部分が存在しているのですが、PPPoE はブロードバンドルータにやらせています。

さて、安定させるために行ったことは大体以下です。

・IPv6 ルータを別のマシンで行うようにする
・ダメもとでスケジューラを SCHED_ULE から SCHED_4BSD に変更
・httpd を prefork から worker に変更

こんな感じでしょうか。ただ、これらの事象がサーバの安定に貢献できたのか、さだかではありません。

httpd をプロセス起動からスレッド起動に変更したおかげで ps -ax で見た感じはかなり少なくなりました。 ps -axH | wc -l すると大体 300 近い数が存在しているので、この状態を高負荷状態と行って良いのかもイマイチ不明です。

ただ、ロードアベレージはそんなに高くは無いし、CPU クロックもいつも最高速で回っている。と言うのでもありません。この辺りの情報は MRTG で取得しています。なのでやはり、プロセスやスレッド回りで OS 的に何かあったのかなぁ?と考えてしまうのでありました。

httpd を prefork から worker に変更したのが一番大きいのかなぁ?あ、きっと OS 側に修正が入ったのでしょうねぇ。csup するたんびに kern_ とかのソースが更新されていると嬉しくなっていましたし。< 僕;-)。

3月 062009
 

最近 csup した 7.1-STABLE は powerd の挙動が変わったねぇ。僕は CPU のロードアベレージと速度を MRTG で取得していて毎日見ているのだけど、それで powerd の挙動が一目瞭然;-)。

今までとどう変わったか?と、言われれば、多分 C7i や PhenomII など Core 毎に速度が変えられるようになったのに対応したのでしょうなぁ。

MRTG のグラフを見ていたら、今までは

CPU クロック抑えつつロードアベレージがちょっと高め

だったのだけど、最近の STABLE では

CPU クロック高めでロードアベレージはちょっと抑え気味

って感じかな。まぁ、どっちでも構わないのだけど、CPU クロックを低くしていれば消費電力が抑えられるわけでして。地球環境を考えたら、僕的には今までのほうが良いなぁ。と思ってしまうわけです。サーバであっても CPU ロードアベレージが低ければクロックも低くなっていて欲しい。裏を返すと、多少ロードアベレージが高くても CPU クロックは低くても良い。みたいな感じかしら。

で、powerd で調整できないものか man みましたよー。で、オプションで CPU クロックの変動を抑制することができる;-)。

現在、AthlonX2 なサーバに設定している powerd のオプションはこんな感じ。

/usr/sbin/powerd -a adaptive -i 80 -p 750

 
Atom N330 なサーバに設定しているオプションはこんな感じ。

/usr/sbin/powerd -a adaptive -i 80 -p 500

 
まず、-a で adaptive を指定して「適切なモード」を設定します。 -i で CPU アイドルのパーセントレベルを指定して、最後に -p でポーリング時間を設定します。

経験上、ポーリング時間を変更すると細かな CPU クロックの調整ができます。大きく変えたい時は -i オプションの値を変更すれば良いかと思われます。

後は二時間位ブン回して、その間に MRTG で情報取得して更にオブションの値を細かく調整すれば良いかと思います。

それにしても、温度とか、この手の値って MRTG で取れると知ると知りたくなるんだけど、知らなくても全然問題無いのよねぇ。その気分的な問題が中々面白いんだけど;-)。

それにしても、CentOS で CPU 速度を落とそうとしても、ややこしいのねぇ。カーネルモジュールをロードしてもエラー吐いてダメだしさ。そー考えると CPU クロックを可変にするのは FreeBSD のほうが圧倒的に楽だね。GENERIC カーネルだと powerd を起動すれば良いだけだし。

そー考えると地球環境を考える人は FreeBSD 使うのかぁ?;-P。

2月 212009
 

前回「KDE-4.2良いよぉ。」と、ちろっと書いたのだけど、その上で konqueror を使っていたら「あれ?Safari と表示が一緒だぞぉ。」などと思えてきたので、今回キャプチャしたものを比較してみたいと思います。ちなみに Safari は konqueror のレンダリングエンジンである KHTML から派生した WebKit がベースで qt4+KDE4 には qt4-webkit なんて言う ports もあったりするので konqueror への期待は大いに高まったりするのです;-)。

今回のブラウザのキャプチャは以下の通り。Windows では日本語のアンチエイリアスが有効にならないので、Windows 自体は全く使う気にならない。WindowsXP 上の Firefox3 でメイリオフォントを指定した場合、どうしてあんな汚い表示なんだぁ?と驚いてしまう。 Windows ユーザは素早く IE も Firefox も捨てて Safari を使ったほうが良いのでは。と、僕個人的は思う;-P。(僕は WindowsVistaは常用していない;-)

・FreeBSD/amd64 7.1-STABLE+kde-4.2.0 の konqueror
・MacOSX Leopard 上の Firefox3.0.6
・MacOSX Leopard 上の Safari3.2.2

Firefox3 は WindowsXP と FreeBSD、そして MacOSX 上で動作しているけど、 MacOSX 上のヤツが一番きれいに表示できるのでそこからのエントリです。全てのキャプチャ画像はクリックすると大きくなります。

まずは kde-4.2.0 の konqueror から。


続いて Firefox3。


最後に Safari3。


全てのブラウザでアンチエイリアスが効いていてフォントがきれいに表示されています。まぁ、多少、フォントの誤差はありますが、その点についてはお許しください。

今回はこのサイトをキャプチャしましたが、konqueror と Safari はタイトルとブログのタイトル文字にうっすらと影があるのが見えるでしょうか?それに引き替え、Firefox3 にはその影が表示されていません。

このブログのテンプレートはもともと Mac ユーザの方が作ってくれたのを利用しているので、MacOSX に最適化され、きれいに表示してくれるようになっています。

なので、最近の僕は(写真の編集などもあるけど)ほとんどのブログの書き込みと確認は MacOSX 上で行っていたのでありました。けど、KDE-4.2 の konqueror が Safari に非常に近いデザインでコンテンツを表示してくれていると言うのに感動しました;-)。さすがは KHTML と言うか WebKit だなぁ。と。

けど、KDE-3.5 の konqueror は見るも無残な状態であったために Firefox3 をずっと使っていたのだけど、KDE-4.2 になったらその出来と言うか、コンテンツ表示のすばらしさにちょっと関心してしまいました。

後、FreeBSD 上では Firefox3 で利用する nspluginwrapper 経由の各種プラグインを konqueror が「mozilla プラグイン」として認識するので linux-flashplugin-9 も動作します。これはこれで大変嬉しいことです。

KDE-4.1.2 は plasma がしょっちゅうぶっこけて全ての KDE アプリを道連れにしていたのだけど、KDE-4.2.0 になって、まぁ、時々 plasma は落ちるけど、自己修復型で再起動してくれるので随分と楽になりました。

やっぱえぇなぁ。qt4+KDE4 は。

ただ、人に言わせると c++ はいらん。だそうです。確かに ports をコンパイルすると膨大な時間が掛かることは確かではありますが・・(^^;;。

皆さんも是非使ってみてください。ちなみに僕は JKUGスタッフです。布教活動には余念が無いであります;-)。

あ、最後にですが、MacOSX 用の KDE4 は未だ 4.1.2 のままです。早く 4.2.0 がでないかなぁ;-)。MacOSX 上で konqueror を起動してみたいものです;-)。

2月 192009
 

FreeBSD で net-snmp のデーモンを起動して、別のマシンから MRTG でデータを取得してグラフを表示させる。なんてのは google で検索するとゴマンと出てくるので、ここではもっと局所的な情報を書いてみたいと思います。

まず、net-snmpd ですが、起動時に以下のオプションを付加すると IPv6 対応になります。 以下は rc.conf.local への書き方です。udp6:161 と udp:161 で待っているよ。ってオプションを追加します。

snmpd_enable="YES"
snmpd_flags="udp6:161 udp:161"
snmpd_pidfile="/var/run/snmpd.pid"
snmpd_conffile="/usr/local/etc/snmp/snmpd.conf"

 
これで snmpd のほうは IPv6 対応になるので、まぁそこそこ簡単です。起動した時のプロセスを見るとこんな感じです。

/usr/local/sbin/snmpd -c /usr/local/etc/snmp/snmpd.conf -p /var/run/snmpd.pid udp6:161 udp:161

 
さてと。問題は MRTG のほうですが、こっちはたくさん色々あります。まず、 ports から /usr/ports/net-mgmt/mrtg をインストールするのですが IPv6 enable にしてインストールします。その時、perl モジュールとして p5-Socket6 と p5-IO-Socket-INET6 がインストールされたことを確認します。

けど、FreeBSD の ports からインストールした場合、これだけではまともに mrtg が動作しません。p5-SNMP_Session(この中の SNMP_util.pm を mrtg が利用します) も併せてインストールしてあげる必要があります。この p5-SNMP_Session は mrtg の関連性でインストールされないので明らかに mrtg の ports の問題だと思われます。 send-pr ネタです;-)。

後、mrtg の ports にはもう一個問題と言うか気になる点が有って Cisco などのルータやスイッチの 10G インターフェースをグラフに表示しようとすると桁あふれしてまともなグラフになりません。10Gbps なインターフェースは 32bit int では足りなくて 64bit int が必要と言うことですね。そんな時は p5-Math-BigInt と p5-Math-BigInt-GMP を併せてインストールしてあげます。これも mrtg の port において関連性を是非付けてもらいたいものです。
# 10G インターフェースあるルータの MRTG なんざとらねぇよ。って声が聞こえてきそうですが・・;-)。

さてと。これでようやっとインストールが完了しました。これで mrtg を起動しますが、その前に mrtg.cfg を用意して上げます。今回は cfgmaker で作成してもしなくとも良いです。mrtg.cfg はこんな感じになりました。IPv6 アドレスでアクセスしたいぜぃ。って感じです。

#############################################################################
# System: WebServer (2001:200:161:14cc::1:1) Descr: re0
#############################################################################
#Target[[2001:200:161:14cc::1:1]_re0]: \re0:nopublic@[2001:200:161:14cc::1:1]:
Target[[2001:200:161:14cc::1:1]_re0]: 1:nopublic@[2001:200:161:14cc::1:1]:
MaxBytes[[2001:200:161:14cc::1:1]_re0]: 125000000
Title[[2001:200:161:14cc::1:1]_re0]: Traffic re0
Directory[[2001:200:161:14cc::1:1]_re0]: 2001:200:161:14cc::1:1
PageTop[[2001:200:161:14cc::1:1]_re0]: 以下略

 
それにしてもすごーく大きな問題点が・・。インターフェース情報の設定において Target には ifIndex しか書けない状態となっております。ifDescr などを書くとエラーとなってしまうのです。orz。上記の場合、re0 は固定な NIC なので良いけど、gif とか gre なインターフェースみたいに動的に生えたり消えたりするインターフェースの場合、どうすんのさぁ・・。ちなみに /IP でも設定してみたけど、やはりダメ・・。困ったなぁ・・。

MRTG 2.16.2 configuration reference

この辺りを見ても全然ダメなので MRTG_lib.pm に直接手を加えるしか無いかも・・。そもそも、 “&”, “:”, “@” とか ” ” を “\” で修飾しなさい。ってんだけど、IPv6 アドレスに “:” があるのでマトモに動作しないんだろうなぁ。と勝手に思っているのですが・・。

あぁ。ちなみに nopublic@ の後に IPv6 アドレスでなく FQDN を書いた場合は無事に動作します。ただ、MRTG の仕様として IPv6->Ipv4 へのフェイルオーバーはしない。と言っているのでその点をどう考えるかですね。

後、ルータやスイッチなどのネットワーク機器は基本的に DNS へは登録しないので FQDN だと OK よ。って言われてもいまいち説得力ないですよねぇ・・。

今の段階の MRTG ではこれが限界なのかな。新しいバージョンに大いに期待することにしましょう。

この後、話は rrdtool にまで及ぶのでしょうか? 既に “:” がある IPv6 アドレスを DEF: とかに記述した段階で動いていないのですが、まだそこまで手は回っていません;-)

この記事のつづきを書きました。

2月 152009
 

ずばりっ。これを購入 。どうしてこれにしたかと言えば、安いのが一番。二番目が PCI スロットがあったから。でもってデアルコア;-)。

余った PC パーツは自宅のサーバが安定しないので交換のために買ったのがごろごろしているのでそれを流用することができるのです。 けど、必要なのはメモリと HDD だけなんだけど・・。

で、HDD は Hitachi HDP725032GLA360 GM3OA52A 320GB のやつ。これは、自宅サーバの Seagate ST3500320AS SD15 500GB をリプレスするために用意しておいた。そー。シーゲートの不良品対策のためにね。でもって HDD の中には既に FreeBSD/amd64 7.1-RELEASE がインストールされているのだけど、これをそのまま付けてブート。

あぁれぇーー。全然問題無くブートしてしまったじゃないのさ・・。と、言うことは AtomN330 は amd64 に対応していると言うことだね。でもって DualCore なんだけど HTT なので FreeBSD からは Core が 四つに見えてしまう。うーん。贅沢だぁ;-)。

ちなみに Windows は全く起動していないので知りません。FreeBSD の HDD は Athlon64 X2 でインストールしたヤツがそのまま動作しました。って感じです。

その後 7.1-STABLE にアップしました。dmesg はこんな感じ

USB 接続のカードリーダを積んでいるのだけど、これらはメティアを入れてなくともデバイス自体を FreeBSD 側で認識してしまう。 BIOS で disable にしても FeeBSD 側で認識してしまう。

後、オンボード NIC が 本当は rl0 で 100Mbps なのだけど、実際には re0 として認識される。これは、オンボード NIC が PCI-e に接続されているからですねー。考えてみると PCI-e 接続な rl0 なんて聞いたことないものねぇ。

なので、Giga NIC を PCI パスの空きスロットに刺したいがためにこのベアボーンキットを購入したのでありました;-)。

後、気づいた点としては CPU の温度が取れないですねぇ。coretemp.ko ダメでした。k8temp.ko も当然ダメでした・・。mbmon もダメでした・・。ふむー。

さてと。Core が四つもあるので使用感ですが、一応、ベンチマークを取ってみました。カーネルを make cleandepend && make depend した後に make を叩くのですが、この時の時間を計測してみました。

Atom N330 : 1600MHz : make -j4
1173.13 real      2342.58 user       158.38 sys
Athlon64 X2 4000+ : 2200MHz : make -j2
584.00 real       657.92 user        50.86 sys

 
CPU 速度がまぁ、だいぶ違うのだけど、それでも Athlon64 X2 の make -j2 のほうが圧倒的に早いよねぇ。まぁ、当然だろうけどさぁ。後、Atom 側は S-ATA が 150。これもちょっとは影響するかな。

と、言うことで Atom な CPU ではもう少し遊ぶ予定。その後は自宅の安定しないサーバのバックアップとして利用する予定。 Atom 側からサーバに対してアクティブ監視とパッシブ監視を行い、応答が無くなったら、サーバの持っていた IP アドレスを alias して Atom のバックアップ機でサービスを継続できるようにする予定。データ自体はもう既に rsync で Atom 側に送っているので、同期もばっちりb(^^)。

んー。会社のミッションクリティカルなサーバみたいだ;-)。

後は、専ら検証機として利用するかなぁ;-)。

2月 132009
 

最近の ports では KDE4 が KDE-4.1.2 から KDE-4.2.0 になった。早速バージョンアップ。実は FreeBSD で初めて KDE4 が利用できるようになったバージョンは 4.1.0 です。KDE-4.0.0 は冒険者のバージョンとして扱われていたのでありました。

で、4.1.2 を使い始めたのだけどこれがまたヒドイしろものでして・・。plasma が落ちるともうデスクトップが利用できない状態になる。emacs を起動しておいて M-x shell から X を kill して復旧していた。 plasma がよく落ちる。と言うのも問題であったのだけど、4.2.0 になったら あんまり plasma が落ちなくなって、落ちても、すぐに再起動するようになった。ちょうど、Windows で凍りついたエクスプローラを終了させて、一瞬画面がフワっとなって再度表示しなおしてくれるような感じと全く一緒。

ja-kde4-l10n は日本語テキストですが、まだ翻訳が行き届いていないですねー。色々な所に英語メッセージが残っています。後、LANG が ja_JP.eucJP だとビミョーに正しく日本語表示できない所が多々有ります。もう LANG は UTF-8 にしろ。ってことですかねぇ。ちなみに僕は KDE-4.1.0 から UTF-8 に移行しました。

ちなみに LANG の設定がばっちりになると、フォント名も日本語でフォントしてくれるようになります。例えば、僕の環境の場合 meiryo.ttc は UTF-8 の場合はフォント名が「メイリオ」となるのですが、ja_JP.eucJP の場合は GTK アプリ(例えば firefox3)と一緒で「Meiryo」と表示されます。なので、先に LANG を決定してからフォントの設定をしたほうが良いかもしれません。

dolphin (ファイルマネージャ)ですが、これは smb:// 先のサーバの日本語にも対応してくれました。今までは日本語ファイルやディレクトリをクリックすると dolphin がクラッシュしていたのですが、今度は無事に表示して、クリックもできるようになりました。

konqueror。これはっ!! そもそも、最近は WebKit が大はやりですが、WebKit はそもそも konqueror で利用していたレンダリングエンジン。その割りには konqueror と Safari の表示に差異があるなぁ。と常々思っていたのだけど、4.2.0 に搭載している konqueror は Safari と同じ表示をしてくれるようになりました。スタイルシートの読み込みが Safari に近くなって来たのかな。とも思うけど。Safari とは ルックアンドフィールや操作性は違うけど、コンテンツの表示が Safari と一緒になった。と言うのはすごいうれしー。

ただ、今のところ UTF-8 なコンテンツしか見えないんだけど・・X-(。ってのは前に書いていたねぇ(^^;;。

とまぁ、感動した点を重点的にツラツラと書いてみました。

実は 4.1.2 では plasma があまりにも頻繁に落ちるのでイヤになって KDE-3.5 を再インストールしていたのですが、4.2.0 はそれなりに安定して来たと言う感じかなぁー;-)。

つづく。かな?