iSCSI target用ツールをビルド
portsに入っているのは少々古いようなので、NetBSDからソースで持ってくる。# cd /usr/miku/src # fetch http://ftp.jaist.ac.jp/pub/NetBSD/packages/distfiles/netbsd-iscsi-20110222.tar.gz # tar xzf netbsd-iscsi-20110222.tar.gz # ./configure --prefix=/usr/miku # makeおそらくfuseが入っておらずinitiatorのビルドに失敗するので、libiscsiとtargetのみを手動でインストールする。
# cd src/lib # make install # cd ../target # make installもしソース持ってきて野良ビルドするのが嫌であれば、pkgsrcを導入しnet/netbsd-iscsi-targetを入れるという手もある。
ZVOLを作成
iSCSI targetで利用するボリュームを作成する。 ZVOLはZFS上に置かれ、ZFS同様にリサイズや圧縮が可能で、かつ普通のHDDと同じようにパーティションを作成したりファイルシステムを作成できる。プールksysに10GBのボリュームiscsivol0を作成するコマンドは以下のとおり。
# zfs create -V 10G ksys/iscsivol0ここで作成したZVOLは、/dev/zvol/ksys/iscsivol0に置かれる。
iSCSI targetを設定
iSCSIの設定ファイルは/etc/iscsiに置かれるので、最初にmkdir /etc/iscsiしておく。その中にファイルtargetsを作成し、以下のように設定を書く。extent0 /dev/zvol/ksys/iscsivol0 0 10G target0 rw extent0 10.39.39.0/24使用するボリュームの範囲をextent0で指定し、公開されるtarget0のオプションでそれを指定すればよい模様。 複数公開する場合は、extent1・target1、extent2・target2...と追加していく。
iSCSI targetの起動
iSCSI targetの起動は、rootでiscsi-targetを実行するだけ。# iscsi-target Reading configuration from `/etc/iscsi/targets' target0:rw:10.39.39.0/24 extent0:/dev/zvol/ksys/iscsivol0:0:10737418240 DISK: 1 logical unit (20971520 blocks, 512 bytes/block), type iscsi fs DISK: LUN 0: 10240 MB disk storage for "target0" TARGET: iSCSI Qualified Name (IQN) is iqn.1994-04.org.netbsd.iscsi-target
接続テスト
Debian側にopen-iscsiによるiSCSI initiatorを用意し、iSCSIを実際に利用してみる。Debianにはaptitude install open-iscsiでインストールできる。まずiSCSI targetのリストを受け取る。
# iscsiadm -m discovery -t sendtargets -p 10.39.39.40 10.39.39.40:3260,1 iqn.1994-04.org.netbsd.iscsi-target:target0そしてiSCSIにログインする。
# iscsiadm -m node -T iqn.1994-04.org.netbsd.iscsi-target:target0 -l Logging in to [iface: default, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 10.39.39.40,3260] Login to [iface: default, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 10.39.39.40,3260]: successfulまた、ログアウトは以下のように行なう。
# iscsiadm -m node -T iqn.1994-04.org.netbsd.iscsi-target:target0 -u Logging out of session [sid: 1, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 10.39.39.40,3260] Logout of [sid: 1, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 10.39.39.40,3260]: successfulあとはいつも通りfdiskするなりmkfsするなりして使うだけ。
余談
本当は、以下のようにzfsのオプションでiscsiの共有を指定できればよいのだが、このとおり怒られてしまう。# zfs set shareiscsi=on ksys/iscsivol0 property 'shareiscsi' not supported on FreeBSD: permission deniedそこで、ZVOL作成時にオプションとして付けたところ、
# zfs create -V 10G -o shareiscsi=on ksys/iscsivol2 # % zfs get shareiscsi ksys/iscsivol2 NAME PROPERTY VALUE SOURCE ksys/iscsivol2 shareiscsi on localONにできてしまった。これは一体…