====== キャッシュ(ARC/L2ARC/ZIL) ====== * **L2ARC** * ZFS の二次用の READ 用キャッシュ((一次用にはメモリが使用される)) * メモリが64GB未満では搭載の意味はない…らしい * L2ARCのサイズは搭載しているRAMの5倍を超えないこと * **ZIL** * ZIL(ZFS Intent Log)は、ZFSのWriteログ領域。SSDを適用することでWrite速度の向上を促す。 * 同期書き込みにのみ使用される((よって、DBの場合に大きな効果を発揮する場合がある)) * ZILは最大で物理メモリの半分が有効サイズ * ZILを構成するには高速でキャパシタ付きのメモリを搭載したSSDを使用することが推奨 * ZFSv28以降のpoolでは、ZILをミラーする必要はない ===== ARC サイズの制限 ===== デフォルトでは**搭載メモリ量 - 1GB** が ARC の最大値として割り当てられる つまり 8GB のメモリを搭載した環境では 7GB まで ARC に使われる可能性がある これを制限するパラメータは sysctl の vfs.zfs.arc.max ((13.0-RELEASE より前は vfs.zfs.arc_max)) アプリケーションにどの程度メモリを空けて置きたいのかを考えて、ARC を制限する 例:4GB に制限する sysctl vfs.zfs.arc.max=4294967296 ===== L2ARC のメモリ使用量 ===== L2ARC は割り当てた容量の約 1.59% のメモリをその管理に使用する キャッシュヒット率をあげようとして 1TB の SSD を割り当てたとすると 1 TB * 0.0159 = 15.9 GB で約16GBのメモリを使用する 逆に L2ARC の管理に 1GB のメモリを割り当てるとした場合、 逆算して 63GB の L2ARC を割り当てるべきということが分かる 1 GB / 0.0159 = 62.89 GB ===== キャッシュ(L2ARC/ZIL)の追加 ===== ==== パーティションスキーマの破壊 ==== # gpart destroy ada0 ==== パーティションスキーマの作成 ==== # gpart create -s gpt ada0 ==== 状態を確認 ==== # gpart show ==== パーティションの作成 ==== # gpart add -s 48G -t freebsd-zfs -l l2arc ada0 # gpart add -s 16G -t freebsd-zfs -l zil ada0 ==== 追加 ==== # zpool add tank01 log gpt/zil # zpool add tank01 cache gpt/l2arc