とりあえず安定してきたのでいろいろ検証してみたいと思います。ディスクは5400rpmの1Tが4発です。
root@zfsmeister:~# pfexec format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c3t0d0
/pci@0,0/pci1033,88f7@1f,2/disk@0,0
1. c3t1d0
/pci@0,0/pci1033,88f7@1f,2/disk@1,0
2. c3t2d0
/pci@0,0/pci1033,88f7@1f,2/disk@2,0
3. c3t3d0
/pci@0,0/pci1033,88f7@1f,2/disk@3,0
4. c3t4d0
/pci@0,0/pci1033,88f7@1f,2/disk@4,0
さて、これからZFSでアレをナニします。
root@zfsmeister:~# zpool create -f mtank raidz c3t1d0 c3t2d0 c3t3d0 c3t4d0
root@zfsmeister:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mtank 92.0K 2.67T 26.9K /mtank
Raidz(RAID5)なので、ディスク1本分容量は減ってしまいますが、その分1本壊れても大丈夫。本当はRaidz-2にしたかったんだけど今回は容量優先で。
ていうかディスク4本ならRaidz-2よりRAID1+0のほうがいいんだけど!
とまぁ、これでディスクを4発使ったボリュームができあがったので、ここからiSCSI用のボリュームを切り出していきます。
まずはiSCSIのpkgを導入します。pkgコマンドって便利だね!
root@zfsmeister:~# pkg install SUNWiscsi
root@zfsmeister:~# pkg install SUNWiscsitgt
パッケージのインストールが終わったら、有効化します。
root@zfsmeister:~# svcadm enable iscsitgt
ここからが正念場です。iSCSI用にプールから容量を切り出します。今回は500Gで作成します。
root@zfsmeister:~# zfs create -V 500gb mtank/iscsivol
root@zfsmeister:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mtank 500G 2.18T 26.9K /mtank
mtank/iscsivol 500G 2.67T 23.9K -
切り出したボリュームをiSCSI Targetで使えるようにします。専門用語でbacking storeディレクトリ言います。
backing store ディレクトリは、iSCSI Target が Initiator に提供する領域 に使われる場所となるらしいので、ここでは、emulated vlume を作成した /mtank (ZFS pool) を指定するみたいです。
root@zfsmeister:~# iscsitadm modify admin -d /mtank
root@zfsmeister:~# iscsitadm show admin
iscsitadm:
Base Directory: /mtank
CHAP Name: Not set
RADIUS Access: Not set
RADIUS Server: Not set
iSNS Access: Not set
iSNS Server: Not set
iSNS Server Status: Not applicable
Fast Write ACK: Not set
さて、次のコマンドで、iSCSI Target としての情報が登録されます。
root@zfsmeister:~# zfs set shareiscsi=on mtank/iscsivol
iSCSIドライブをMacOSから参照する為には、IPアドレス以外にiqn.で始まる識別子を登録してやる必要があります。今回ですと、「iqn.1986-03.com.sun:02:5648289d-1671-c1ca-fe19-ae2aa7a6a333」になります。
root@zfsmeister:~# iscsitadm list target -v
Target: mtank/iscsivol
iSCSI Name: iqn.1986-03.com.sun:02:5648289d-1671-c1ca-fe19-ae2aa7a6a333
Alias: mtank/iscsivol
Connections: 0
ACL list:
TPGT list:
LUN information:
LUN: 0
GUID: 0
VID: SUN
PID: SOLARIS
Type: disk
Size: 500G
Backing store: /dev/zvol/rdsk/mtank/iscsivol
Status: online
以上になります。あとはクライアントから上記の情報でマウントしてやればローカルドライブのように使えます。
ちなみに、MacOSではiSCSIはAppleから提供されていませんので、GlobalSANをインストールして使います。WindowsはMicrosoftから提供されていたような気がしますが、よく知りません。
気になる転送速度ですが、だいたい40~50MByte/Secぐらいでしょうか。まあジャンボフレームを設定していないのでこれくらいかなと。FireWireの外付けディスク並の速度は出ていますので、これ以上の速度は必要ないと思います。