NAS 用マシンを自作してみる (5) —ZFS RAID-Z とパフォーマンス—

さて、少し間があきましたが、先日 組んだマシンに HDD を6台導入して RAID-Z のストレージプールを作成します。

ハードウェアは以下の構成です。

CPU Intel CPU Core I3-3220T
M/B ASUSTek Mini-ITX P8H77-I
RAM DDR3 PC3-12800 CL9 4GBx2
SSD OCZ Agility4 64GB (zroot)

今回購入した HDD は WD Green 2TBx6 (WD20EZRX/N) です。

デバイスのリストは以下のようになっています。

# camcontrol devlist
<OCZ-AGILITY4 1.4.1>               at scbus0 target 0 lun 0 (ada0,pass0)
<WDC WD20EZRX-00DC0B0 80.00A80>    at scbus2 target 0 lun 0 (ada1,pass1)
<WDC WD20EZRX-00DC0B0 80.00A80>    at scbus3 target 0 lun 0 (ada2,pass2)
<WDC WD20EZRX-00DC0B0 80.00A80>    at scbus4 target 0 lun 0 (ada3,pass3)
<WDC WD20EZRX-00DC0B0 80.00A80>    at scbus5 target 0 lun 0 (ada4,pass4)
<WDC WD20EZRX-00DC0B0 80.00A80>    at scbus6 target 0 lun 0 (ada5,pass5)
<WDC WD20EZRX-00DC0B0 80.00A80>    at scbus7 target 0 lun 0 (ada6,pass6)

パーティションを作成します。

# gpart create -s gpt ada1
# gpart create -s gpt ada2
# gpart create -s gpt ada3
# gpart create -s gpt ada4
# gpart create -s gpt ada5
# gpart create -s gpt ada6

# gpart add -t freebsd-zfs -l disk1 ada1
# gpart add -t freebsd-zfs -l disk2 ada2
# gpart add -t freebsd-zfs -l disk3 ada3
# gpart add -t freebsd-zfs -l disk4 ada4
# gpart add -t freebsd-zfs -l disk5 ada5
# gpart add -t freebsd-zfs -l disk6 ada6

# gpart show
=>       34  125045357  ada0  GPT  (59G)
         34        128     1  freebsd-boot  (64k)
        162    8388608     2  freebsd-swap  (4.0G)
    8388770  116656621     3  freebsd-zfs  (55G)

=>        34  3907029101  ada1  GPT  (1.8T)
          34           6        - free -  (3.0k)
          40  3907029088     1  freebsd-zfs  (1.8T)
  3907029128           7        - free -  (3.5k)

=>        34  3907029101  ada2  GPT  (1.8T)
          34           6        - free -  (3.0k)
          40  3907029088     1  freebsd-zfs  (1.8T)
  3907029128           7        - free -  (3.5k)

=>        34  3907029101  ada3  GPT  (1.8T)
          34           6        - free -  (3.0k)
          40  3907029088     1  freebsd-zfs  (1.8T)
  3907029128           7        - free -  (3.5k)

=>        34  3907029101  ada4  GPT  (1.8T)
          34           6        - free -  (3.0k)
          40  3907029088     1  freebsd-zfs  (1.8T)
  3907029128           7        - free -  (3.5k)

=>        34  3907029101  ada5  GPT  (1.8T)
          34           6        - free -  (3.0k)
          40  3907029088     1  freebsd-zfs  (1.8T)
  3907029128           7        - free -  (3.5k)

=>        34  3907029101  ada6  GPT  (1.8T)
          34           6        - free -  (3.0k)
          40  3907029088     1  freebsd-zfs  (1.8T)
  3907029128           7        - free -  (3.5k)

RAID-Z でストレージプールを作成します。

# zpool create tank raidz gpt/disk1 gpt/disk2 gpt/disk3 gpt/disk4 gpt/disk5 gpt/disk6
# zpool status
  pool: tank
 state: ONLINE
  scan: none requested
config:

    NAME           STATE     READ WRITE CKSUM
    tank           ONLINE       0     0     0
      raidz1-0     ONLINE       0     0     0
        gpt/disk1  ONLINE       0     0     0
        gpt/disk2  ONLINE       0     0     0
        gpt/disk3  ONLINE       0     0     0
        gpt/disk4  ONLINE       0     0     0
        gpt/disk5  ONLINE       0     0     0
        gpt/disk6  ONLINE       0     0     0

errors: No known data errors

  pool: zroot
 state: ONLINE
  scan: none requested
config:

    NAME         STATE     READ WRITE CKSUM
    zroot        ONLINE       0     0     0
      gpt/disk0  ONLINE       0     0     0

errors: No known data errors

# zfs create tank/storage
# zfs set mountpoint=none tank
# zfs set mountpoint=/storage tank/storage
# chmod 777 /storage

# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT
tank                        224K  8.89T  48.1K  none
tank/storage               46.5K  8.89T  46.5K  /storage
zroot                      39.8G  14.9G   621M  legacy
zroot/tmp                  8.07M  14.9G  8.07M  /tmp
zroot/usr                  31.1G  14.9G  18.3G  /usr
zroot/usr/home             9.15G  14.9G  9.15G  /usr/home
zroot/usr/ports            3.30G  14.9G   287M  /usr/ports
zroot/usr/ports/distfiles  3.02G  14.9G  3.02G  /usr/ports/distfiles
zroot/usr/ports/packages     31K  14.9G    31K  /usr/ports/packages
zroot/usr/src               359M  14.9G   359M  /usr/src
zroot/var                  7.99G  14.9G   477M  /var
zroot/var/crash            31.5K  14.9G  31.5K  /var/crash
zroot/var/db               7.53G  14.9G  7.50G  /var/db
zroot/var/db/pkg           32.3M  14.9G  32.3M  /var/db/pkg
zroot/var/empty              31K  14.9G    31K  /var/empty
zroot/var/log               712K  14.9G   712K  /var/log
zroot/var/mail               32K  14.9G    32K  /var/mail
zroot/var/run               979K  14.9G   979K  /var/run
zroot/var/tmp               382K  14.9G   382K  /var/tmp

処理自体はあっさり終了しました。前回 書きましたように FreeBSD をここしばらく勉強がてらデスクトップとしても使用していましたので、SSD はその過程でだいぶ容量を消費しています。

さて、Windows 7 (SP1) から Samba で接続 (/storage) して Crystaldiskmark を走らせてみました。

freebsd_raidz_samba.png

まあまあ、といったところでしょうか。まだもう少しチューニングの余地があるように思うのですが、しかしひとまず満足です。

smb.conf の調整は以下のサイトを参考にしました。

サーバーの RealTek NIC (8168/8111) は このあたり を見るとジャンボフレームがサポートされていないようです。MTU 9000 などいくつか試してみたのですが、かえってパフォーマンスが低下したので、デフォルト (MTU 1500) のままです。

また、SSD 上に ZFS プールのキャッシュ領域 (l2arc) とログ領域 (zil) を用意するとよいようですが、そのあたりもまた余裕があれば試してみようと思います。

次回は iSCSI で接続してベンチマークを比較してみたいと思います。

【追記 2013/01/07】

ネットワークの設定を変えると多少パフォーマンスが向上しました。→

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください