Go to main content

Creating and Using Oracle® Solaris Zones

Exit Print View

Updated: April 2019

About Shared Storage Resources Using Storage URIs

Storage URIs are used to describe shared storage resources in a host-independent format. Storage URIs uniquely identify storage objects across different nodes. They follow the well-known principles and format of URIs commonly used in the Internet. The following storage URIs have been introduced with Oracle Solaris.

Local Device URI

The local device storage URI type describes a storage device by its local device path. The path must refer to a device in the /dev name space. These devices are usually direct-attached storage (DAS) resources that are unique to a particular system, and their device name and path are generally not portable. However, they can also refer to shared storage resources for technologies that already provide a unified name space under /dev across multiple nodes.

    The following is a list of URI syntax.

  • dev:local-path-under-/dev
  • dev:///path-with-dev
  • dev:absolute-path-with-dev

    Examples of the use of the URI syntax are as follows:

  • dev:dsk/c0t0d0s0
  • dev:///dev/dsk/c0t0d0
  • dev:/dev/dsk/c0t0d0
  • dev:chassis/SYS/HD1/disk
  • dev:dsk/c0t60A98000564C303132302D6F72613939d0

The local device storage URI can refer to an entire disk or to a particular slice or partition. However, the use of slices or partitions is generally not recommended with ZFS storage pools.

Logical Unit URI

The logical unit URI type describes fibre channel (FC) or serial-attached SCSI (SAS) storage devices. It refers to a logical unit (LU) based on its device ID (WWN). The logical unit storage URI always represents an entire disk.

    The following is a list of URI syntax.

  • lu:luname.naa.ID
  • lu:luname.eui.ID
  • lu:initiator.naa.ID,target.naa.ID,luname.naa.ID
  • lu:initiator.naa.ID,target.naa.ID,luname.eui.ID

    The following examples show how to use the URI syntax:

  • lu:luname.naa.5000c5000288fa25
  • lu:luname.eui.0021280001cf80f6
  • lu:initiator.naa.2100001d38089fb0,target.naa.2100001d38089fb0,luname.naa.5000c5000288fa25
  • lu:initiator.naa.2100001d38089fb0,target.naa.2100001d38089fb0,luname.eui. 0021280001cf80f6

In the luname-only URI form, the ID describes a logical unit name.

In the initiator,target,luname form, an initiator specifies an initiator port and a target specifies a target port. Together, they specify a path to the logical unit. The logical unit name in the second syntax must match the luname of the URI in the first syntax, the luname-only form.

It is best to use multipathing in conjunction with luname-only URIs. If multipathing is disabled and a luname-only URI is used, a random path to the specified logical unit will be chosen. To avoid random path assignment an initiator,target,luname URI form can be used to select a specific path to a logical unit. If multipathing is enabled and an initiator,target,luname URI form is used, then the multipathing framework controls which paths are used to access the logical unit, and the URI is only used to identify the unit, not the access path.


The iSCSI URI type describes storage devices accessed by using the iSCSI network-based storage protocol. It always refers to an entire disk.

For more information on iSCSI Qualified Name (IQN), see the suri(5) man page.

    The following is a list of URI syntax.

  • iscsi:///luname.naa.ID
  • iscsi:///luname.eui.ID
  • iscsi://host[:port]/luname.naa.ID
  • iscsi://host[:port]/luname.eui.ID
  • iscsi:///target.IQN,lun.LUN
  • iscsi://host[:port]/target.IQN,lun.LUN

    The following examples show how to use the URI syntax:

  • iscsi:///luname.eui.0021280001cf80f6
  • iscsi:///luname.naa.600144f03d70c80000004ea57da10001
  • iscsi://[::1]/luname.naa.600144f03d70c80000004ea57da10001
  • iscsi://
  • iscsi://
  • iscsi://hostname:3260/luname.eui.0021280001cf80f6
  • iscsi://hostname:3260/luname.naa.600144f03d70c80000004ea57da10001
  • iscsi://[::1]/target.iqn.com.sun:02:d0f2d311-f703,lun.2
  • iscsi://hostname:3620/target.iqn.com.sun:4db41b76-e3d7-cd2f-bf2d-9abef784d76c,lun.0
  • iscsi:///target.iqn.com.sun:02:d0f2d311-f703,lun.6
  • iscsi://[::1]/target.iqn.com.sun:02:d0f2d311-f703,lun.2
  • iscsi://hostname:3620/target.iqn.com.sun:4db41b76-e3d7-cd2f-bf2d-9abef784d76c,lun.0

See Logical Unit URI for an explanation of the luname-only URI form and the ID.

Optionally, the hostname[:port] authority section provides information to automatically configure the iSCSI initiator using an unauthenticated SendTargets discovery address. IPv6 addresses must be enclosed in square brackets ([]).

Use the luname-only URI form only for static or iSNS based configurations, or when using authentication. These functions must be configured outside of the zones framework before they can be used.

Note that if you want to use iSCSI over iSER transports, the iSCSI storage URI transparently allows for this as well. To use iSER, the target and initiator must go through the address assigned to the InfiniBand (IB) partition link. In the global zone, you must set up the IB partitions with the dladm create-part command and assign the target and initiator addresses to the IB partitions using the ipadm create-ip and ipadm create-addr commands. This address is then used in the authority section of the iSCSI storage URI to specify the target's discovery address.

If InfiniBand (IB) hardware is present and an InfiniBand reliable-connected (RC) connection can be established, then an iSER-enabled initiator uses iSER connections to iSER-enabled targets. If the RC connection cannot be established, the connection is established using IP-based connectivity.