NAS4Free をインストールした GIGABYTE GB-BXCE-2955 に、 ハードディスクケースに複数のハードディスクを装填して ZFS プールを作成したものを USB 3.0 で接続してストレージサーバーを構成しています。

 ところが現在使用している NAS4Free 9.2 系では、 接続しているハードディスクを USB 3.0 で認識してくれず、ここがネックでパフォーマンスが上がりません。
 特に VMware vSphere Hypervisor (ESXi) の 記憶領域をここに作成して NFS でマウントしているため、 ファイル I/O が頻繁になるとパフォーマンス低下が激しいのです。

 そこでこの問題に対して、 ZFS の Read 用の二次キャッシュ (L2ARC) と Write 用ログ領域 (ZIL/ZFS Intent Log) を SSD 上に置くことで、 パフォーマンスアップを狙ってみることにしました。  まずは SSD 上に L2ARC と ZIL 用の領域を確保します。
 この作業は NAS4Free サーバーに SSH で接続してコマンドラインから root ユーザーに切り替えて行います。

 以下のコマンドで GPT で初期化された SSD ( /dev/ada0 と認識されているものとします)上に、 ZIL 用に 8GB と L2ARC 用に 20GB の領域を確保します。
# gpart add -a 4k -s 8G -t freebsd-zfs -l zil0 ada0
# gpart add -a 4k -s 20G -t freebsd-zfs -l l2arc0 ada0
上記では -l オプションでラベル(それらしき文字列でかまないと思います)を指定していますが、 こうしておくと、実際に L2ARC と ZIL を設定するとき、以下のコマンドで済ませられます。
# zpool add zpool log gpt/zil0 cache gpt/l2arc0
 上記の例では ZFS プール zpool に対して、ラベルを zil0 とした領域を ZIL として、 l2arc0 とした領域を L2ARC としています。

 これで実際 zpool コマンドで状態を確認してみると。。。
# zpool status
  pool: zpool
 state: ONLINE
  scan: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        zpool         ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            da1       ONLINE       0     0     0
            da2       ONLINE       0     0     0
        logs
          gpt/zil0    ONLINE       0     0     0
        cache
          gpt/l2arc0  ONLINE       0     0     0

errors: No known data errors
ってな感じで確認できます。

 これで大丈夫のはずですが、当方では設定が終了したあと一度、サーバーを再起動しておきました。

 で、実際、どの程度パフォーマンスが上がったかは、また次回 (^^)/
Image:Computer/20140907HomeDC.jpg