[PREVIOUS CHAPTER] [NEXT CHAPTER]
3 アーカイブ, archive


fmlのスプールは一通一ファイルです。ある程度溜ると邪魔です;)
この章はN通を1つのアーカイブにする方法についてです。

3.1	Introduction

記事は溜ってくるとかなり場所をとります。古い記事は tar で100個くらい固
めて gzip かけると 1/4 くらいになります。
効率がいいのはヘッダとか同じようなものが繰り返し出てくるからです。
100 というマジックナンバーの目安は 100 個固めると 50K bytes 前後になる
ので好都合な値にうまくなるという経験論から来ています。

3.2	自動アーカイブと自動 expire の諸注意

ここでいう『アーカイブ』とはある程度の数のメールを一つにまとめて保存す
る(方法の)ことを意味しています。$DIR/spool に一通ずつためるのもアーカ
イブという概念だとは思いますが、このドキュメントでは区別しています。

手動でアーカイブ作成や古い記事の削除をするのがある意味で安全です。
fml に自動でそれらを行なわせることもできます。

$USE_EXPIRE (古い記事の削除)と $USE_ARCHIVE (アーカイブの作成) という
変数を 1 にすると fml がアーカイブとexpireを行ないます。

expire と アーカイブ は相反する概念です。2つを同時におこなう場合はパ
ラメータの選び方に要注意です。デフォールトはそれを考慮した数値になって
いるつもりです。

「絶対に記事はうしなわれてはいけない」という強い要求がある場合に 
「expire しつつアーカイブも作ることを全自動で行なう」ことは推奨できま
せん。というのはだれかがOSのtarやgzipを間違えて入れ換えたとかいう場合
を想定してみると危険性がわかります。expire はそういうものに依存してい
ないの普通に動いて記事を消していきますが、アーカイブは作成されなくなっ
てしまいます。よって
	『自分の設定は万全、大丈夫』
	『うちのOSはそんなことはしない、大丈夫』
	『まぁこのMLの記事はちょっとくらい失われてもOK』
など容認できる必要があります。

アーカイブかExpireのどちらかを自動でどちらかを手動でやるのが理想なのか
もしれません。安全性からいえばやはり『 自動アーカイブ、手動でexpire 』
が理想です。両方やる場合はアーカイブだけを設定してみて、うまくいってい
ることを確認してから expire を設定するべきでしょう。

パラメータの選び方ですが、ファイルの取り寄せ等に影響があるため必ず 
$EXPIRE_LIMIT が日数ではなく"記事の数"(残したい記事の数)で指定して下さ
い。そして次の条件

	$EXPIRE_LIMIT > $ARCHIVE_UNIT 

が必要です。念のため

	$EXPIRE_LIMIT = $ARCHIVE_UNIT * 2;

くらいにしておくのが良いでしょう。そうでない場合整合性が保証されないの
でエラーとなります。もちろん毎回ファイルを全て調べる等の莫大な 
overhead をかければ実現はできますが、コストが見合うとは思えないので実
装されていません。

3.3	何故、まとめてgzip化したいのか?

1. 一個一個gzipかけると、約半分にしかなりませんが、100個まとめて書ける
と、ヘッダとかの重なりがあるので約25%にまで圧縮できるようになります。

2. Mail-Countが万を越える頃になるといい加減 directory cache などが煩わ
しくなってきます。一つの directory の中のファイル数を減らす or ほかの
場所に移すことに意味があるようになります。そこでspoolの中身を移し、100
分の一のファイル数にすると効果が非常にあります。


[PREVIOUS CHAPTER] [NEXT CHAPTER]