FreeBSD 8.0-RELEASEでのvge(4)ドライバ不具合
先だってFreeBSDの8.0がリリースされた。
そこで、7.2-RELEASEから8.0-RELEASEへアップグレードした所、ネットワーク通信において、いくつかの不具合が見られた。
sshでのログイン等の通常の通信は問題無いが、Apacheにおけるブラウズ、cvsupによるアップデートが正常に通信出来ないと言うものである。
どうもネットワークの送信側に問題がありそうである。
FreeBSD-users-jpへ投げてみたが、反応が無かった為、send-prした所、最新のvge(4)ドライバを試して欲しいとの返答。
早速最新のHEADブランチのソースを入手し、カーネルをコンパイルした所、あっさり解決した。
本家では、更なるテストを行なった後、MFCされるとの事である。
そこで、7.2-RELEASEから8.0-RELEASEへアップグレードした所、ネットワーク通信において、いくつかの不具合が見られた。
sshでのログイン等の通常の通信は問題無いが、Apacheにおけるブラウズ、cvsupによるアップデートが正常に通信出来ないと言うものである。
- Apacheの場合、軽いページでは問題無いが、PHPやスタイルシート、画像の多い重いページを開くと、ブラウザの表示が不規則に乱れる。
- cvsupの場合、以下の様な表示が出力されてアップデート出来ない。cvsupを行なう時間や、サーバを変えても同じ。
# cvsup /usr/local/etc/cvsup/standard-supfile
Connected to cvsup2.jp.freebsd.org
Updating collection src-all/cvs
TreeList failed: Network write failure: Connection closed
Will retry at 07:23:30
Connected to cvsup2.jp.freebsd.org
Updating collection src-all/cvs
TreeList failed: Network write failure: Connection closed
Will retry at 07:23:30
どうもネットワークの送信側に問題がありそうである。
FreeBSD-users-jpへ投げてみたが、反応が無かった為、send-prした所、最新のvge(4)ドライバを試して欲しいとの返答。
早速最新のHEADブランチのソースを入手し、カーネルをコンパイルした所、あっさり解決した。
本家では、更なるテストを行なった後、MFCされるとの事である。
時計がずれる(その2)
以前
、メールの読み書きに使用しているPCの時計がずれる件について書いたが、解決策が見つかったので記述する。
解決策としては、以下の2点がある。
設定できるタイマーの一覧は、kern.timecounter.choiceに記述されている。
上記の例では、設定できるタイマーとして、TSCおよびi8254が設定できる事を示す。
タイマーをi8254に設定するには、以下のコマンドを実行する。
今回は、タイマーを変更するのではなく、タイマー自体を調節する方法を選択した。
解決策としては、以下の2点がある。
- 別のタイマーに変更する。
- タイマー自体を調節する。
設定できるタイマーの一覧は、kern.timecounter.choiceに記述されている。
$ sysctl kern.timecounter.choice
kern.timecounter.choice: TSC(800) i8254(0) dummy(-1000000)
kern.timecounter.choice: TSC(800) i8254(0) dummy(-1000000)
上記の例では、設定できるタイマーとして、TSCおよびi8254が設定できる事を示す。
タイマーをi8254に設定するには、以下のコマンドを実行する。
# sysctl kern.timecounter.hardware=i8254
kern.timecounter.hardware: TSC -> i8254
kern.timecounter.hardware: TSC -> i8254
今回は、タイマーを変更するのではなく、タイマー自体を調節する方法を選択した。
百度の検索クローラーBaiduspiderの拒否
このブログのアクセス解析を行なってみると、Baiduspiderと呼ばれるクローラーからのアクセスが大量にある事が判明した。
このBaiduspiderを調べた所、中国の百度と呼ばれる検索サイトのクローラーなのだが、悪質で数秒に1回のペースでアクセスし続けている。
これはたまらないと言う事で、robots.txtに以下の記述を行なった。
フト、サーバのMRTGを見てみると、以下のような状況だった。


平均10%程度、CPUが喰われ続けていた事になる。
驚きだったのは、Baiduspiderからの大量アクセスがなくなると、CPUの使用率が下がると共に、CPUの温度も共に下がっている事である。
数秒に1回のアクセスとは言え、馬鹿に出来ない量だったと言える。
このBaiduspiderを調べた所、中国の百度と呼ばれる検索サイトのクローラーなのだが、悪質で数秒に1回のペースでアクセスし続けている。
これはたまらないと言う事で、robots.txtに以下の記述を行なった。
User-agent: baiduspider Disallow: /設定から数日後、Baiduspiderの大量アクセスは無くなった。
フト、サーバのMRTGを見てみると、以下のような状況だった。


平均10%程度、CPUが喰われ続けていた事になる。
驚きだったのは、Baiduspiderからの大量アクセスがなくなると、CPUの使用率が下がると共に、CPUの温度も共に下がっている事である。
数秒に1回のアクセスとは言え、馬鹿に出来ない量だったと言える。
時計がずれる
自宅でのメールの読み書きには、ずっと前に現役を引退した超々初期のLet'sNoteである CF-M1VAを使用している。
参考
emacs+mewで読み書きしているので、それ程苦労も無く使用していたのだが、先日時計が大きくずれていることに気がついた。
NTPで時刻合わせをしているはずなのだか。。。と思いつつ調べてみると、以下のようなメッセージが大量に出力されていた。
何とかしたいと、あれこれ調べてみると、Linuxの世界では、システムクロックを調節するadjtimexというコマンドがあるらしい。
カーネルのシステムクロックを調整するシステムコールを呼び出す様だが、このシステムコールはFreeBSDには見当たらない。
adjtime(2)というシステムコールはあったが、どうも違うようだ。
FreeBSDでシステムクロックを調節するにはどうすれば良いのか、ご存知の方が居られたら是非ともご教授願いたい。
emacs+mewで読み書きしているので、それ程苦労も無く使用していたのだが、先日時計が大きくずれていることに気がついた。
NTPで時刻合わせをしているはずなのだか。。。と思いつつ調べてみると、以下のようなメッセージが大量に出力されていた。
Aug 19 19:58:41機体が古い事もあり、内蔵クロックがおかしくなっているようである。foo ntpd[6862]: time reset +2.149452 s Aug 19 20:22:21 foo ntpd[6862]: time reset +2.162954 s Aug 19 20:46:54 foo ntpd[6862]: time reset +2.441240 s Aug 19 21:10:29 foo ntpd[6862]: time reset +2.253030 s Aug 19 21:34:00 foo ntpd[6862]: time reset +1.761721 s Aug 19 21:58:40 foo ntpd[6862]: time reset +2.249165 s Aug 19 22:34:03 foo ntpd[6862]: time reset +2.656851 s Aug 19 22:43:44 foo ntpd[6862]: time reset +1.560978 s Aug 19 23:08:18 foo ntpd[6862]: time reset +2.445085 s
何とかしたいと、あれこれ調べてみると、Linuxの世界では、システムクロックを調節するadjtimexというコマンドがあるらしい。
カーネルのシステムクロックを調整するシステムコールを呼び出す様だが、このシステムコールはFreeBSDには見当たらない。
adjtime(2)というシステムコールはあったが、どうも違うようだ。
FreeBSDでシステムクロックを調節するにはどうすれば良いのか、ご存知の方が居られたら是非ともご教授願いたい。
本番機をFreeBSD 6.2-RELEASEへアップグレード
portsで採用されているXが7.XBASEに変更された頃から、portupgradeを実行すると、以下のメッセージが出力されるようになった。
メッセージの通り、/etc/make.confにX11BASEを記述していたのだが、いい加減もうOS自体をアップグレードしても良いだろうと言う事で、6.2-RELEASEへアップグレードした。
マイナーバージョンアップなので、特に問題も無くアップグレードできているようである。
On FreeBSD before 6.2 ports system unfortunately can not set default X11BASE by itself so please help it a bit by setting
X11BASE=${LOCALBASE} in make.conf.
On the other hand, if you do wish to use non-default X11BASE, please set variable USE_NONDEFAULT_X11BASE.
On the other hand, if you do wish to use non-default X11BASE, please set variable USE_NONDEFAULT_X11BASE.
メッセージの通り、/etc/make.confにX11BASEを記述していたのだが、いい加減もうOS自体をアップグレードしても良いだろうと言う事で、6.2-RELEASEへアップグレードした。
マイナーバージョンアップなので、特に問題も無くアップグレードできているようである。
実験機のXを7.xBaseにアップグレード
実験機のXを6.xから7.xにアップグレードした。
と言っても、この頃はXを使わないので、余り関係の無いのだが、取り敢えず最新版に追従しておく意味も含めてアップグレードを行なった。
しかし困ったのが、ソースを取り寄せる際の転送速度の遅い事、遅い事。
仕方が無いので、ファイル名から検索して手動で取り寄せていたが、Xともなるとソースファイルの数が尋常ではなく、とても手に負えない。
何か手はないかと考えた所、portsのサイト一覧を記述しているbsd.sites.mkに以下の記述を発見した。
サイト一覧の冒頭、変数への代入は「+=」で行なわれている。
もしかして、先に値を代入しておけば、素早くソースが取り寄せられるのではないか?
物は試し、以下のように環境変数を宣言してみた。
案の定、宣言したサイトが優先され、ソースの取り寄せる速度が改善された。
と言っても、この頃はXを使わないので、余り関係の無いのだが、取り敢えず最新版に追従しておく意味も含めてアップグレードを行なった。
しかし困ったのが、ソースを取り寄せる際の転送速度の遅い事、遅い事。
仕方が無いので、ファイル名から検索して手動で取り寄せていたが、Xともなるとソースファイルの数が尋常ではなく、とても手に負えない。
何か手はないかと考えた所、portsのサイト一覧を記述しているbsd.sites.mkに以下の記述を発見した。
.if !defined(IGNORE_MASTER_SITE_XORG)
MASTER_SITE_XORG+= \
ftp://ftp.gwdg.de/pub/x11/x.org/pub/%SUBDIR%/ \ ←ここが遅い!!!
ftp://ftp.cica.es/pub/X/pub/%SUBDIR%/ \
ftp://ftp.cs.cuhk.edu.hk/pub/X11/%SUBDIR%/ \
ftp://ftp.unicamp.br/pub/X11/releases/%SUBDIR%/ \
ftp://ftp.ntua.gr/pub/X11/X.org/%SUBDIR%/ \
ftp://ftp.task.gda.pl/mirror/ftp.x.org/pub/%SUBDIR%/ \
ftp://ftp.sunet.se/pub/X11/ftp.x.org/%SUBDIR%/ \
ftp://ftp.mirrorservice.org/sites/ftp.x.org/pub/%SUBDIR%/ \
ftp://sunsite.uio.no/pub/X11/%SUBDIR%/ \ ←この辺速い
http://xorg.freedesktop.org/%SUBDIR%/ \ ←あっ
ftp://ftp.x.org/pub/%SUBDIR%/
.endif
MASTER_SITE_XORG+= \
ftp://ftp.gwdg.de/pub/x11/x.org/pub/%SUBDIR%/ \ ←ここが遅い!!!
ftp://ftp.cica.es/pub/X/pub/%SUBDIR%/ \
ftp://ftp.cs.cuhk.edu.hk/pub/X11/%SUBDIR%/ \
ftp://ftp.unicamp.br/pub/X11/releases/%SUBDIR%/ \
ftp://ftp.ntua.gr/pub/X11/X.org/%SUBDIR%/ \
ftp://ftp.task.gda.pl/mirror/ftp.x.org/pub/%SUBDIR%/ \
ftp://ftp.sunet.se/pub/X11/ftp.x.org/%SUBDIR%/ \
ftp://ftp.mirrorservice.org/sites/ftp.x.org/pub/%SUBDIR%/ \
ftp://sunsite.uio.no/pub/X11/%SUBDIR%/ \ ←この辺速い
http://xorg.freedesktop.org/%SUBDIR%/ \ ←あっ
ftp://ftp.x.org/pub/%SUBDIR%/
.endif
サイト一覧の冒頭、変数への代入は「+=」で行なわれている。
もしかして、先に値を代入しておけば、素早くソースが取り寄せられるのではないか?
物は試し、以下のように環境変数を宣言してみた。
export MASTER_SITE_XORG=http://xorg.freedesktop.org/releases/%SUBDIR%/
portupgrade -F
portupgrade -F
案の定、宣言したサイトが優先され、ソースの取り寄せる速度が改善された。
停電後の復旧について
ついぞ先日、停電に襲われたらしい。
らしいと言うのは、私自身は睡眠中だったので、朝になってから事態を把握した次第である。
サーバ類をチェックした所、メインマシンは問題無く動作しているが、実験機の方は、ダウンしたままになっていた。
どういう事かと言うと、メインマシンはATX電源にAT電源変換ケーブルをつないで稼動させている為、電源は機械式のスイッチによって制御されている。
何の事は無い、機械スイッチがONのままだったので、復電後、そのまま起動したのだ。
実験機の方はと言うと、通常のATX電源の為、復電しても、スイッチを入れない限り、起動しないわけである。
サーバの復旧の点から考えると、いちいち手動で復旧させなければならないATX電源は、困り者。
変換コネクタの接続を調べて、電源スイッチを外に出しておいた方が良いのかも知れない。
らしいと言うのは、私自身は睡眠中だったので、朝になってから事態を把握した次第である。
サーバ類をチェックした所、メインマシンは問題無く動作しているが、実験機の方は、ダウンしたままになっていた。
どういう事かと言うと、メインマシンはATX電源にAT電源変換ケーブルをつないで稼動させている為、電源は機械式のスイッチによって制御されている。
何の事は無い、機械スイッチがONのままだったので、復電後、そのまま起動したのだ。
実験機の方はと言うと、通常のATX電源の為、復電しても、スイッチを入れない限り、起動しないわけである。
サーバの復旧の点から考えると、いちいち手動で復旧させなければならないATX電源は、困り者。
変換コネクタの接続を調べて、電源スイッチを外に出しておいた方が良いのかも知れない。
HDD障害発生
サーバマシンはgmirrorによるRAID1を構築している。
デフォルトではOFFになっているが、 /etc/periodic.confに以下の記述を行なう事により毎日のDailyメールにgmirrorの状況がレポートされる。
レポート内容は、単にgmirror statusの実行結果だったりするが、無いよりはマシと言う事で有効にしていた。
ある日、フト、レポートメールを見るとRAID1の構成に障害が発生している事に気がついた。
これは一大事と言う事で、対応を行なった。
デフォルトではOFFになっているが、 /etc/periodic.confに以下の記述を行なう事により毎日のDailyメールにgmirrorの状況がレポートされる。
#!/bin/sh
# 406.status-gmirror
daily_status_gmirror_enable="YES" # Check gmirror(8)
# 406.status-gmirror
daily_status_gmirror_enable="YES" # Check gmirror(8)
レポート内容は、単にgmirror statusの実行結果だったりするが、無いよりはマシと言う事で有効にしていた。
ある日、フト、レポートメールを見るとRAID1の構成に障害が発生している事に気がついた。
Name Status Components
mirror/gm0 DEGRADED ad0
これは一大事と言う事で、対応を行なった。
spam対策 − Qgrey - S25R + qgreylist パッチ
先月中ごろから英語のspamが届くようになってきた。
数も少なかったので、そのままにしていたが、先週から日本語の、しかも出会い系のspamが届くようになり、完璧にメールアドレスが漏れている事が判るようになった。
思い当たるとすると、send-prした際に、迂闊にもfoo-bar@example.jp形式でなく、foo@example.jpと本名のアドレスを指定してしまった事だろう。
googleで検索してみると、案の定バッチリ引っ掛かる。
メールアドレスの扱いには、気を付けていたつもりだが、肝心な所でミスしてしまった。
一旦流出した物は、もう取り戻せないので、spam対策を検討する事にした。
数も少なかったので、そのままにしていたが、先週から日本語の、しかも出会い系のspamが届くようになり、完璧にメールアドレスが漏れている事が判るようになった。
思い当たるとすると、send-prした際に、迂闊にもfoo-bar@example.jp形式でなく、foo@example.jpと本名のアドレスを指定してしまった事だろう。
googleで検索してみると、案の定バッチリ引っ掛かる。
メールアドレスの扱いには、気を付けていたつもりだが、肝心な所でミスしてしまった。
一旦流出した物は、もう取り戻せないので、spam対策を検討する事にした。









