Hosting iscsi on smartos


I am trying to get back into the unix game for some storage projects we have got going. We would love to use joyents smartos (based on illumos) for that.

Working with it is a real joy (setting up vms etc) but i can't get iscsi to work.

I would love to simply share a zfs device as an iscsi connection point but cant get it to work. I also cant get smb or nfs to work, but those properties at least exist and i am sure they would work.

The documentation i can find seems a little all-over-the-place with some old solaris, new solaris, illumos stuff etc. Which is understandable since it is such a new release though.

Does anybody have any pointers ?

I already tried

zfs set shareiscsi=on zones/name

which results in "unknown property". And its not listed in the zfs properties anyway.

I also tried

sbdadm create-lu /dev/zvol/rdsk/zones/

but this results in

sbdadm: unknown error

itadm also is not available and not service containing iscsi is listed in "svcs".

Any help is greatly appreciated.

It seems iscsi is provided by COMSTAR and not in the same way that old solaris did it so the set shareiscsi is not supported because of that.

i found out that the stmf service needs to be started for it (related to COMSTAR).
sadly its in maintainance mode (svcs|grep stmf)
log in /var/svc/log/system-stmf:default.log says:

svc-stmf: Unable to load the configuration. See /var/adm/messages for details

/var/adm/messages says:

svc:/system/stmf:default: Method "/lib/svc/method/svc-stmf start" failed with exit status 1.
system/stmf:default failed: transitioned to maintenance (see 'svcs -xv' for details)

probably a driver is missing, but which one ? and how do I install it ?

Best Answer

Creating an ISCSI Target

enable the storage server and iscsi target server if necessary

svcadm enable stmf
svcadm enable -r svc:/network/iscsi/target:default

create a volume if necessary (sparse 10T in example)

zfs create -V 10T -s zones/iscsi

create a logical unit

sbdadm create-lu /dev/zvol/rdsk/zones/iscsi

Add a view on it (GUID is output by previous command or list-lu)

stmfadm add-view GUID

Create a target group to connect to (Choose a GROUPNAME and a TARGETNAME and use an IP from the current server) An Example TARGETNAME could be: where the iscsi-100T part can be whatever you like. I think creating the target group is not essential, though it might be sensible.

itadm create-tpg GROUPNAME IP

Create a target in this group

itadm create-target -t GROUPNAME  -n TARGETNAME

BTW: If you dont set a TARGETNAME a unique identifier will be generated. But this happens everytime on boot on smartos and thus clients wont be able to reconnect automatically.

Related Question