Squidのチューニング その3 (COSS編)
squid 2.6 stable14 がリリースされていたのでバージョンアップついでにcacheの手法をdiskd からCOSSっていうのに変更してみた。
ようするに、全キャッシュオブジェクトを単一ファイルでのみ処理する方法だそうで、I/O処理の低減が期待できるという。
COSSにする方法はマニュアル見てもイマイチわからなかったのですが、
cache_dir coss /var/cache/squid 256 block-size=2048 max-size=500000
キャッシュDIR 総キャッシュサイズ(MB)分割(1ブロック)サイズ 最大オブジェクトサイズ(byte)
とすればよいとのこと。(上記の設定値は適当ですので調整は必要です。ごめんなさい。)
block-sizeと総キャッシュサイズの関係はネットで調べたところ、
> block-size=512 - 8GB Max cache_dir size
> block-size=1024 - 16GB Max cache_dir size
> block-size=2048 - 32GB Max cache_dir size
> block-size=4096 - 64GB Max cache_dir size
> block-size=8192 - 128GB Max cache_dir size
のように指定するそうです。
また、最大オブジェクトサイズのmax-sizeはbyte指定でconfigure時に--with-coss-membuf-size=XXXXXXX(byte)で指定したサイズより少なくしないといけない。どうもこれを変な設定するとキャッシュされない模様です。ていうか、エラーとなってsquidは起動できない。
日本語訳のマニュアルによると注意点に、
※cache_dir にいくつかのオブジェクトを書いた後、cossブロック・サイズを変更してはならないことに注意してください。
とありますんで一旦キャッシュ(ストライプファイル)作成したあとで設定変更する場合は一旦以前のキャッシュファイルを削除し、squid -zで作り直ししないとダメのようです。(作り直ししなくても普通に動きはしますが、後でトラブる可能性がある。)
また、キャッシュの初期化・作成はsquid -z でOKです。ただし、デフォルトのufs方式に比べると最初にキャッシュサイズ分のファイルを作成するために時間がかかります。巨大なサイズ2GB〜数十GBとかにするときは注意してください。SATA1のHDDで2GB程度のキャッシュ初期化で5分くらいかかりました。サイズを200GBと大きめに作ってやる場合はかなり時間かかるはずです。
あと、webminからCOSSの設定に変更しようとしたら、webminがCOSSに対応して無くて「キャッシュが初期化されていません」とメッセージが表示されます。最初このメッセージが消えないことにはまりましたが、実際はWebminでsquidの設定を変更したりできるので問題はありません。キャッシュ初期化は手動でやるしかないようですネ。
参考
↓こちらの方のblogでキャッシュの手法についてまとまっていました。
Squid の cache_dir に関するメモ
2006-06-23