Solaris as an iSCSI Server with ZFS

iSCSI terminology

iSCSI Target: iSCSI Server
iSCSI Initiator: iSCSI Client

Installing requisite Solaris Packages

pkgadd -d . SUNWiscsir SUNWiscsitgtr SUNWiscsitgtu SUNWiscsiu
svcadm enable iscsitgt

Sharing a ZFS zvol block storage unit

We need a “block device” to export over iSCSI. ZFS lets you create “sparse” zvols which start off small, and expand to full size as you use them. Let’s add a 10GB sized one:

zfs create -s -V 10G zpool01/myiscsivol

We can now share it as simply as:

zfs set shareiscsi=on zpool01/myiscsivol

Configuring your iSCSI share with iscsitadm

View details of your iSCSI share:

iscsitadm list target -v

Configuring CHAP Authentication

First, we need to tell iscsitadm about our client (the "initiator"), and give it a friendly name. You’ll need the iqn (iSCSI Qualified Name), which you can get from the client (In Windows, it’s on the iSCSI "General" tab).

iscsitadm create initiator --iqn myclient

Now set the CHAP authentication parameters, the username and password. The password if you’re not using ipsec must be exactly between 12 and 16 characters:

iscsitadm modify initiator --chap-name myusername myclient
iscsitadm modify initiator --chap-secret myclient

You now need to associate the initiator entry you just created, with the ACL (Access Control List) of the iSCSI share:

iscsitadm modify target --acl myclient zpool01/myiscsivol

see: Solaris as an iSCSI Server with ZFS