2013年10月19日土曜日

hosts.allow に気をつけよう

/etc/hosts.allow

ALL : localhost 127.0.0.1 : allow

を書いておかないと nis クライアントが正しく動作しなかったりするので気をつけましょう、という話。

自分が設定した後に管理を他人に任せていたLinux機 ( debian ) がありました。管理者がいなくなって放置されていたため、回収してOSを更新していたのですが、何故かNISサーバに接続出来ないのです。

# /etc/init.d/nis restart
[....] Stopping NIS services: ypbindstart-stop-daemon: warning: failed to kill 4164: No such process
[ ok rv ypppasswdd ypxfrd.
[....] Starting NIS services: ypbind[....] binding to YP server.................[FAIL.....................failed (backgrounded).
. ok
ypbind で何かが起こっているらしく、起動しない、じゃなくて、NISサーバに接続出来ない。ypbind をデバッグモードで起動してみます。

# ypbind -debug
4447: parsing config file
4447: Trying entry: ypserver 192.168.1.111
4447: parsed ypserver 192.168.1.111
4447: add_server() domain: lo_nis_domain, host: 192.168.1.111, slot: 0
4447: [Welcome to ypbind-mt, version 1.20.1]

4447: ping interval is 20 seconds

4449: NetworkManager is running.

4449: Are offline
4449: interface: org.freedesktop.DBus, object path: /org/freedesktop/DBus, method: NameAcquired
サービスを登録できません: RPC: 認証エラーです; why = クライアントの信任が弱すぎます
4447: Unable to register (YPBINDPROG, YPBINDVERS, udp).

何故だー? と思ってエラーメッセージを元に検索してみたら…
tcpwrapperを設定しているのが原因。
きりんメモ@GIFU( http://giraffeforestg.blog.fc2.com/blog-entry-44.html )

あれ?と思って /etc/hosts.allow を見ると

ALL: 192.168.1. :allow
ALL: deny

確かにlocalhostの記述がない…セグメント丸ごとALLにして満足していたのか、昔の自分。
ALL: localhost 127.0.0.1 : allow
ALL: 192.168.1. :allow
ALL: deny

と修正して nis を再起動してみると、

# service nis restart
[....] Stopping NIS services: ypbindstart-stop-daemon: warning: failed to kill 4447: No such process
[ ok rv ypppasswdd ypxfrd.
[ ok ] Starting NIS services: ypbind.

あっさり解決。(IPv6の人は[::1]も書いた方がいいのかも?)

/etc/hosts.allow は portmap, rpcbindが参照しているので nis や nfs といったrpc絡みのサービスに影響するのに、油断していたなあ、という話でした。

2013年7月18日木曜日

FreeBSD/amd64 9系でzfs(+nfs) を使いメモリ不足に陥る

FreeBSD 9.0-RELEASE(amd64)にzfsでファイルシステムを構築し、職場のPCのサーバとして使っていたのですが、先日サーバがメモリ不足の症状でダウンしまして、なんだこりゃ?と。USBキーボードの抜き差しすら対応出来なくなるという。おそろしや…

どうも目一杯vfs.zfs.arc_maxまでカーネルメモリを使い込んだようで、他のサービスにおけるメモリ使用とぶつかってしまっていたようです。さらに、職場のサーバはLinux機をクライアントに持っていて、ユーザの /home/ 領域をnfsでサービスしています。9.0-RELEASEのzfsにはnfsを利用するとメモリリークが起きる、というバグがあり、9.1-RELEASEでは修正されています。(事実誤認してたかも知れないので削除。)というわけで、
・OSをFreeBSD 9.1-RELEASEへ更新 (freebsd-updateでさっと更新。楽でした。)
・zfsのメモリ利用量を見直す
という対応を取りました。

昨今のLinux機のデスクトップ環境(特にブラウザ類)はホームディレクトリへのアクセスが頻繁に起こりますので、zfsのarc利用頻度が高く、nfsもメモリを使います。あとWeeklyのcronが走った後もarcにメモリが大量に使われた形跡がありました。locatedbの作成かなにかでしょうか。

FreeBSD 9.1-RELEASE (amd64) ではメモリのチューニングがよく行われていて、8GBのメモリを搭載したPCでは目一杯メモリをzfs、特にarcで使うような設定が施されているように見えます。例えばこんな感じ。(sysctl -a で確認)

        kern.maxusers:                          384
        vm.kmem_size:                           8216244224
        vfs.zfs.arc_min:                        892812800
        vfs.zfs.arc_max:                        7142502400

ARC以外1GBもあれば足りるでしょ、みたいな実にギリギリを攻めるパラメータ。
しかしそれでは怖い。かなり。というわけで、/boot/loader.conf に

vfs.zfs.arc_max="5120M"

の記述を追加し、少しメモリに余裕が出来るようにしてみました。本体8GBですからファイルシステム以外の部分に3GB、と考えれば大丈夫、のはず。Xも使ってないし。


        kern.maxusers:                          384
        vm.kmem_size:                           8216244224
        vfs.zfs.arc_min:                        671088640
        vfs.zfs.arc_max:                        5368709120

数日稼働させて、zfs-stats -M の実行結果はこんな数値。
(zfs-stats は ports にあります。)

System Memory:

        0.26%   20.27   MiB Active,     1.52%   118.75  MiB Inact
        71.22%  5.45    GiB Wired,      0.00%   0 Cache
        27.00%  2.07    GiB Free,       0.01%   736.00  KiB Gap

        Real Installed:                         8.00    GiB
        Real Available:                 98.93%  7.91    GiB
        Real Managed:                   96.68%  7.65    GiB

        Logical Total:                          8.00    GiB
        Logical Used:                   72.73%  5.82    GiB
        Logical Free:                   27.27%  2.18    GiB

Kernel Memory:                                  3.49    GiB
        Data:                           99.41%  3.47    GiB
        Text:                           0.59%   21.19   MiB

Kernel Memory Map:                              7.57    GiB
        Size:                           40.64%  3.08    GiB
        Free:                           59.36%  4.49    GiB

ARC関係の数値だと

ARC Summary: (HEALTHY)
ARC Misc:
ARC Size:                               76.20%  3.81    GiB

となっているので、Logical Used が 5.82GiBに対して ARC Sizeが 3.81GiB ということは、ARC以外で約2GB使っている、ということですから、やはり /boot/loader.conf で vfs.zfs.arc_max を絞る設定はしておいたほうがよいみたいですね。しばらくこれでいってみたいと思います。

2013年4月4日木曜日

pkgngに移行しようかと思ったけどやめた話

手元のFreeBSD 9.0-RELEASE機で、pkgngを使ってみようかと思ったのですが、移行作業をしたあとリポジトリにアクセス出来ないことに気づき困っていたところ、wikiに
https://wiki.freebsd.org/pkgng#Availability_of_pkgs_for_Download
for the time being pre-compiled packages for pkgng are not available from any official FreeBSD repository.
などと書かれており大変残念な状況にあることが分かりました。例によって気づきの順番が逆です……

で、どうしたか。
なかったことにしました。
pkgngをportsからインストールしてpkg2ngを実行したときのメッセージにありましたね。
# cd /var/db/
# mv pkg pkg.ng
# mv pkg.bak pkg
# pkg_info -aI
en-freebsd-doc-20111014 Documentation from the FreeBSD Documentation Project
libffi-3.0.9        Foreign Function Interface
libyaml-0.1.4_1     A YAML 1.1 parser and emitter written in C
lv-4.51             Powerful Multilingual File Viewer
...
# pkg_delete pkg-1.0.11
#
普通に表示出来るし。普通に消せるし。よかったよかった。 /etc/make.conf もきちんと編集しなおしておきました。もう少し待とう。