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 を入力し「クイック接続」をクリックすると先ほど設定したターゲットが表示されます。表示されたターゲットを選択し「接続」をクリックします。
コンピューター管理画面の「ディスクの管理」に「未割り当て」の領域が見えます。
右クリックで「新しいシンプルボリューム」を選択し、「クイックフォーマット」します。フォーマットが終了すると Windows からはハードディスクドライブとして認識されます。
【追記 2013/01/09】
Windows 7 では iSCSI 接続でシャットダウン時間が長くなる、という現象が起きるようです。
対応策 (Windows 7 フォーラム):
Benchmark
参考サイト
【追記 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)。
あとは ZIL や L2ARC に SSD を利用するようにしたいところですが、現状でしばらく使用継続してみてまたチャレンジしてみたいと思います。