月別アーカイブ: 2012年12月

Dovecot – doveadm mount /mnt/foo ignore

Dovecot のログにいつしか下のような warning が出るようになっていた。

master: Warning: /mnt/foo is no longer mounted. See http://wiki2.dovecot.org/Mountpoints

指定の URL http://wiki2.dovecot.org/Mountpoints を見ると、Dovecot はマウントポイントの監視をしていて、以前あったマウントポイントがなくなると上記のような warnig を出すらしい。

マウントポイントの管理は doveadm(1) というツールを使うらしい。一覧を出すには “doveadm mount list”、削除は “doveadm mount remove /mnt/foo” のようにする。

登録されてしまったマウントポイントを無視するには、下のようにする。

# dovecot mound add /mnt/foo ignore

マウントポイントは /var/run/dovecot/mounts というファイルで管理されている (NetBSD+pkgsrc の場合)。
管理ファイルが置かれているディレクトリは doveconf(1) を使って確認できる。

# doveconf base_dir
base_dir = /var/run/dovecot

ていうか、マウントポイントの監視対象を制限したいんだけどそういう設定はないのかな?

Hyper-V と NetBSD とタイムゾーン

Hyper-V で動かしている NetBSD のログ /var/log/messages を見ると、OS 起動直後の時計が9時間進んだ時刻となっている。

タイムゾーンの設定関係かとも思ったがそうではなく、起動直後は本当に9時間進んだ時刻になっていて、rc スクリプトでntpdate(8) が実行されてから正しい時刻になっているようだ。

調べてみると、Hyper-V の仮想マシンが独立したハードウェアクロック (RTC: Real Time Clock) を持たないため、常にホスト OS (Windows 2008 server) の時刻 (JST) が返されてしまうためらしい。 NetBSD は RTC が UTC であることを期待しているので、JST の時刻を UTC と誤解して解釈し、9時間進んだ時刻が設定されてしまう。

こうなると、起動直後から正しい時刻が設定されるようにするには NetBSD のカーネルにパッチを当てるという伝統的な対処をするしかない。(/etc/rc.d/rtclocaltime による対応では起動後に時刻を変更するので ntpdate で設定するのと大差ない)

# gdb --write /netbsd
GNU gdb 6.5
Copyright (C) 2006 Free Software Foundation, Inc.
...
This GDB was configured as "i386--netbsdelf"...
(gdb) set rtc_offset=-540
(gdb) quit

再起動時に有効になる。

アップデートするときにはパッチを当てることを忘れてそうだ。