このドキュメントの目的 ====================== このドキュメントには以下のことが書かれています: 1 - www.sleepycat.com のサードパーティ Berkeley DB を組み込んで Postfix をビルドする方法、またはシステムが複数のバージョンの Berkeley DB を持っている場合の、特定のバージョンの選び方。 2 - パフォーマンスの微調整の方法。 Sleepycat Berkeley DB を組み込んで Postfix をビルドする ======================================================= 多くの商用 UNIX は Berkeley DB がサポートされずに出荷されています。 その例は Solaris, HP-UX, IRIX, UNIXWARE です。Postfix に Berkeley DB サポートを付けてビルドするには、www.sleepycat.com からソースを ダウンロードしてインストールする必要があります。 Sleepycat から取得した Berkeley DB のインストール後に Postfix を ビルドするには、次のようにします: % make tidy % make makefiles CCARGS="-DHAS_DB -I/usr/local/BerkeleyDB.3.1/include" \ AUXLIBS="-L/usr/local/BerkeleyDB.3.1/lib -ldb" % make 正確なパス名はインストールした DB のバージョンに依存します。 例えば Berkeley DB バージョン2 は /usr/local/BerkeleyDB に インストールします。 警告: Berkeley DB バージョン 1 が生成したファイルフォーマットは バージョン 2 や 3 のものと互換性がありません (バージョン 2 と3 は 同じフォーマットです)。DB バージョンを変える場合、全ての Postfix DB ファイルを再構築する必要があるかもしれません。 警告: Berkelyey DB version 2 またはそれ以降を使うのであれば、 DB 1.85 互換モードを使用可能にしないでください。それを使うと、 fcntl ファイルロックを壊すことになります。 警告: Postfix .db ファイルを操作するのに PERL を使うのであれば、 Postfix と同じバージョンの Berkeley DB を PERL で使う必要があります。 特定のバージョンの Berkeley DB を使って BSD システムで Postfix を ビルドする ================================================================= BSD システムには複数の Berkeley DB の実装とともに出荷されている ものがあります。通常、Postfix はシステムとともに出荷される デフォルトのバージョンの DB を使ってビルドされます。 特定のバージョンの DB を使って BSD システムで Postfix をビルド するには、次のように変えたコマンドを使います: % make tidy % make makefiles CCARGS=-I/usr/include/db2 AUXLIBS=-ldb2 % make 警告: Berkeley DB バージョン 1 が生成したファイルフォーマットは バージョン 2 や 3 のものと互換性がありません (バージョン 2 と3 は 同じフォーマットです)。DB バージョンを変える場合、全ての Postfix DB ファイルを再構築する必要があるかもしれません。 警告: Berkelyey DB version 2 またはそれ以降を使うのであれば、 DB 1.85 互換モードを使用可能にしないでください。それを使うと、 fcntl ファイルロックを壊すことになります。 警告: Postfix .db ファイルを操作するのに PERL を使うのであれば、 Postfix と同じバージョンの Berkeley DB を PERL で使う必要があります。 特定のバージョンの Berkeley DB を使って Linux システムで Postfix を ビルドする =================================================================== Linux システムには複数の Berkeley DB の実装とともに出荷されている ものがあります。通常、Postfix はシステムとともに出荷される デフォルトのバージョンの DB を使ってビルドされます。 Linux では、デフォルト以外の DB ライブラリを指定するために makedefs スクリプトを編集する必要があります。 その理由は、デフォルトの db.h インクルードファイルの場所が ベンダーやバージョンによってランダムに変わるため、Postfix が ファイルを選ぶ必要があるからです。 警告: Berkeley DB バージョン 1 が生成したファイルフォーマットは バージョン 2 や 3 のものと互換性がありません (バージョン 2 と3 は 同じフォーマットです)。DB バージョンを変える場合、全ての Postfix DB ファイルを再構築する必要があるかもしれません。 警告: Berkelyey DB version 2 またはそれ以降を使うのであれば、 DB 1.85 互換モードを使用可能にしないでください。それを使うと、 fcntl ファイルロックを壊すことになります。 警告: Postfix .db ファイルを操作するのに PERL を使うのであれば、 Postfix と同じバージョンの Berkeley DB を PERL で使う必要があります。 パフォーマンスの微調整 ====================== Berkeley DB が使うバッファメモリの量を制御する 2つの設定パラメータが Postfix にはあります。 - berkeley_db_create_buffer_size (デフォルト: 1テーブル 16MBytes)。 この設定は postalias と postmap コマンドが使います。"hash" ファイルでは、メモリプールが O(file size) でなければ急速に生成 パフォーマンスが落ちます。"btree" ファイルでは、ソートされた 入力であればメモリプールが小さくても生成パフォーマンスは良いのですが、 ランダムな入力では、メモリプールが O(file size) でなければ急速に 生成パフォーマンスが落ちます。 - berkeley_db_read_buffer_size (デフォルト: 1テーブル 128kBytes)。 この設定はその他全ての Postfix プログラムが使います。バッファサイズは 読み込みに必要な量です。キャッシュがテーブルよりも小さいと、 ランダムリードのパフォーマンスは、btree テーブルを除いて、 キャッシュのサイズにほとんど依存しませんが、ルートノードからの パス全体を十分に含めるだけの大きさがなければいけません。 経験的には 64KBytes もあれば十分であることがわかっています。 安全を期して、実装や膨大化の変化に先手を打つために、 この値を倍にしています。