Solaris 10/09 で ZFS の L2ARC(Level 2 Adaptive Replacement Cache)が
サポートされましたが、同時に ARC と L2ARC の使用有無に関するチューニング
が行えるようになりました。
ARC と L2ARC は、それぞれ ZFS の一次用、二次用の READ 用キャッシュとして
機能し、READ のパフォーマンスを向上させる仕組みなのですが、
RAID アレイ装置や、アプリケーションとの組み合わせによっては、逆にこの READ 用キャッシュ
がオーバヘッドとなる時もあります。
そんな時は、この ARC と L2ARC の働きを OFF にするチューニングが有効です。
この ZFS キャッシュのチューニングには、all/none/metadata の3種類があります。
all: キャッシュを行う
none: キャッシュを行わない
metadata : メタデータのみキャッシュする
それでは実際に設定してみましょう。
まずは、現在の設定を確認してみます。
# zfs get all | grep cache
tank primarycache all default
tank secondarycache all default
tank/home primarycache all default
tank/home secondarycache all default
tank/iscsi-vol primarycache all default
tank/iscsi-vol secondarycache all default
この結果より、primarycache と secondarycache のプロパティは、ファイルシステム
毎に指定で、デフォルトは all(全てのデータをキャッシュ) である事が分かります。
それでは、 tank/iscsi-vol のファイルシステムに対して、primaricache と
secondarycache を none にしてみましょう。
# zfs set primarycache=none tank/iscsi-vol
# zfs set secondarycache=none tank/iscsi-vol
# zfs get primarycache tank/iscsi-vol
NAME PROPERTY VALUE SOURCE
tank/iscsi-vol primarycache none local
# zfs get secondarycache tank/iscsi-vol
NAME PROPERTY VALUE SOURCE
tank/iscsi-vol secondarycache none local
これで tank/iscsi-vol ファイルシステムに対して ZFS の READ キャッシュを
OFF にする事ができました。
ちなみに、ファイルシステム作成時でもプロパティが指定できます。
# zfs create -o primarycache=metadata tank/newdatab
また、ARC キャッシュを使用したいが、キャッシュ領域の制限を設定したい時には、/etc/systems
へ set zfs:zfs_arc_max の設定を追加する事で制限が可能です。
(例)
ARC を 2GB に制限する場合
set zfs:zfs_arc_max = 2147483648
(参考情報)
過去の 「やっぱり Sun がスキ!」blog 記事一覧はこちらを参照下さい。
http://wikis.sun.com/display/yappri/Home