NAS 用マシンを自作してみる (8) —iSCSI ターゲットの作成とパフォーマンス—

FreeBSD で iSCSI ターゲットを作成して、Windows 7 から利用してみます。先日 行った Samba でのベンチマークとの比較も行なってみたいと思います。

iSCSI target

さて、まずは ZFS のブロックデバイスを作成します。

# zfs create tank/iscsi
# zfs create -V 10gb tank/iscsi/iscsi-disk1

iSCSI でこのファイルシステムをエクスポートするためには istgt をインストールしておく必要があります。

# portinstall net/istgt

インストールが終了すると設定ファイルを作成しておきます。実際にはサンプルをコピーするだけでほぼ完了です。

# cd /usr/local/etc/istgt/
# cp auth.conf.sample auth.conf
# cp istgt.conf.sample istgt.conf
# cp istgtcontrol.conf.sample istgtcontrol.conf

/usr/local/etc/istgt/istgt.conf の以下の箇所を環境にあわせて変更しておきます。

[PortalGroup1]
Portal DA1 192.168.2.36:3260

[InitiatorGroup1]
Netmask 192.168.2.0/24

[LogicalUnit0]
LUN0 Storage /dev/zvol/tank/iscsi/iscsi-disk1 10GB

/etc/rc.conf に以下を加えておきます。

istgt_enable="YES"

最後にデーモンをスタートします。

# /usr/local/etc/rc.d/istgt start

iSCSI initiator

さて、次にクライアント側の設定です。私は Windows 7 (SP1) で作業しています。

まず「iSCSI イニシエーター」を起動させます。「ターゲット」にサーバーの IP を入力し「クイック接続」をクリックすると先ほど設定したターゲットが表示されます。表示されたターゲットを選択し「接続」をクリックします。

iscsi_win-01.png

コンピューター管理画面の「ディスクの管理」に「未割り当て」の領域が見えます。

iscsi_win-03.png

右クリックで「新しいシンプルボリューム」を選択し、「クイックフォーマット」します。フォーマットが終了すると Windows からはハードディスクドライブとして認識されます。

iscsi_win-04.png

【追記 2013/01/09】

Windows 7 では iSCSI 接続でシャットダウン時間が長くなる、という現象が起きるようです。

対応策 (Windows 7 フォーラム):

Benchmark

Crystaldiskmark を走らせてみました。Samba との比較は以下の通りです (左 iSCSI, 右 Samba)。

iscsi_win-05.png

4K QD32 の値は iSCSI の方がはるかに良い値が出ています。Write は Samba の方が若干良い値が出ています。概ね満足できる数値ですが、全般的に数値が 90 MB/s あたりで頭打ちしているのが気になるところです…

【追記 2013/01/07】

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

マザーボード (P8H77-I) の NIC は Realtek 8111/8168B で、ドライバーは re(4) です。

pciconf -lv の一部:

# pciconf -lv
re0@pci0:3:0:0: class=0x020000 card=0x85051043 chip=0x816810ec rev=0x09 hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8111/8168B PCI Express Gigabit Ethernet controller'
    class      = network
    subclass   = ethernet

変更したのは TSO (TCP segmentation offloading, cf. Large segment offload) の設定のみ。デフォルトで TSO はオフになってるようです (cf. r218897)。

/etc/rc.conf:

ifconfig_re0="DHCP tso mtu 1500 media 1000baseTX mediaopt full-duplex"
# ifconfig re0
re0: flags=8c43<UP,BROADCAST,RUNNING,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=8219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,LINKSTATE>
    ether 50:46:5d:51:dc:7d
    inet 192.168.0.7 netmask 0xffffff00 broadcast 192.168.0.255
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet 1000baseT <full-duplex>
    status: active

Polling を有効にするため、

を参考にしてカーネルを再コンパイルしてみたのですが、私の環境ではかえってパフォーマンスが低下しました。

ということで、結局変更したのは TSO のみですが、以下のように概ね GbE の限界あたりまで数値が上昇しました (左 iSCSI, 右 Samba)。

freebsd_raidz_iscsi_samba.png

あとは ZIL や L2ARC に SSD を利用するようにしたいところですが、現状でしばらく使用継続してみてまたチャレンジしてみたいと思います。

コメントを残す

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