Provided by: targetcli-fb_2.1.53-1ubuntu3_all bug

NAME

       targetcli - administration shell for storage targets

DESCRIPTION

       targetcli is a shell for viewing, editing, and saving the configuration of the kernel's target subsystem,
       also known as LIO. It enables the administrator to assign local storage resources backed by either files,
       volumes,  local  SCSI devices, or ramdisk, and export them to remote systems via network fabrics, such as
       iSCSI or FCoE.

       There is a daemon component for targetcli, which will greatly improve the overall execution time taken by
       targetcli commands at scale. For more details about switching to daemonized mode refer  to  targetclid(8)
       man page.

       The configuration layout is tree-based, similar to a filesystem, and is navigated in a similar manner.

USAGE

       targetcli

       targetcli [cmd]

       Invoke targetcli as root to enter the configuration shell, or follow with a command to execute but do not
       enter the shell.  Use ls to list nodes below the current path.  Moving around the tree is accomplished by
       the cd command, or by entering the new location directly. Objects are created using create, removed using
       delete.   Use  help  <cmd> for additional usage information. Tab-completion is available for commands and
       command arguments.

       Configuration changes in targetcli are made immediately to the underlying  kernel  target  configuration.
       Settings  will not be retained across reboot unless saveconfig is either explicitly called, or implicitly
       by exiting the shell with the global preference auto_save_on_exit set to true, the default.

QUICKSTART

       To create an iSCSI target and share a file-backed LUN without any auth checks:

       $ sudo targetcli
       /> backstores/fileio create test /tmp/test.img 100m
       /> iscsi/ create iqn.2006-04.com.example:test-target
       /> cd iscsi/iqn.2006-04.com.example:test-target/tpg1/
       tpg1/> luns/ create /backstores/fileio/test
       tpg1/> set attribute generate_node_acls=1
       tpg1/> exit

       Although by default targetcli saves the running configuration upon exit, a distribution-specific  service
       must  be  enabled  to  restore  the  saved  configuration  on  reboot. See distribution documentation for
       specifics, but for example:

       $ sudo systemctl enable target.service

       See EXAMPLES below for more detailed information on commands and using the shell.

BACKSTORES

       Backstores are different kinds of local storage resources that the kernel target uses to "back" the  SCSI
       devices  it  exports.  The  mappings  to  local  storage resources that each backstore creates are called
       storage objects.

   FILEIO
       Allows files to be treated as disk images. When storage objects  of  this  type  are  created,  they  can
       support  either  write-back or write-thru operation. Using write-back enables the local filesystem cache,
       which will improve performance but increase the risk of data loss. It is also possible to use fileio with
       local block device files, if buffered operation is needed.

       Fileio also supports using an existing file, or creating a new file. New files are sparsely allocated  by
       default.

   BLOCK
       Allows a local disk block device to be shared.

   PSCSI
       Allows  a  local  SCSI  device  of  any  type  to  be shared. It is generally advised to prefer the block
       backstore if sharing a block SCSI device is desired.

   RAMDISK
       Allows kernel memory to be shared as a block SCSI device. Since memory is volatile, the contents  of  the
       ramdisk will be lost if the system restarts, and this backstore is best used for testing only.

       It  also  supports "nullio" mode, which is not backed by any storage. It discards all writes, and returns
       all-zeroes for reads.

   USERSPACE-BACKED
       Backstores starting with "user:" are not supported in the kernel, but rely  on  a  userspace  process  to
       handle requests. See tcmu-runner(8) for more information on creating backstores of this type.

TARGETS

       Targets  are  instances of a fabric, which adapts the kernel target to a specific transport protocol such
       as iSCSI, Fibre Channel, or SBP-2. Creating a target in targetcli enables that target to  be  configured.
       The  name  of  the  target,  its WWN (world wide name), may link the configuration to a specific hardware
       endpoint, like SRP for example, or it may not, like iSCSI.

       Aside from "backstores", all other top-level configuration nodes in targetcli are fabrics that  may  have
       targets  created  for  them. Fabrics that require hardware are only listed if the hardware is present and
       configured properly.

   CREATING A TARGET
       Use the create command within a fabric's node to create a target. If the fabric's  targets  are  tied  to
       hardware  then  targetcli  will constrain the WWN to available hardware WWNs. These can be shown via tab-
       completion. If the fabric is not tied to hardware, such  as  iSCSI,  then  targetcli  will  either  auto-
       generate  a  WWN  if  none  is  given,  or  check that the given WWN has the correct format. All WWNs are
       prefaced by their type, such as "iqn", "naa", or "ib", and may be given with or without colons.

       iSCSI supports multiple WWN formats: iqn, naa, and eui. Other fabrics support single formats only.

CONFIGURING A TARGET

       Not  all  fabrics  have  the  same  capabilities.  Targets  on  different  fabrics  will  have  different
       configuration  node  layouts.  iSCSI  has the most to configure; other fabrics present subsets of iSCSI's
       feature set.

CONFIGURING ISCSI

       iSCSI has the most options for configuration.

   TPGS
       TPGs (Target Portal Groups) allow the iSCSI  to  support  multiple  complete  configurations  within  one
       target. This is useful for complex quality-of-service configurations. targetcli will automatically create
       one TPG when the target is created, and almost all setups only need one.

   PORTALS
       An  iSCSI  target  may  be  reached via multiple IP addresses and ports. These addr:port pairs are called
       portals.  Both IPv4 and IPv6 addresses are supported.

       When a target is created, targetcli  automatically  creates  a  default  portal  listening  on  all  IPv4
       addresses  (shown  as  0.0.0.0) on port 3260.  If a different configuration is needed, the default portal
       can be removed and portals configured as desired.

       If the hardware supports it, iSER (iSCSI Extensions for RDMA) may be enabled via the enable_iser  command
       within  each  portal's  node.   Or,  if the hardware supports it, hardware offload may be enabled via the
       enable_offload command within each portal's node.

   LUNS
       The kernel target exports SCSI Logical Units, also called  LUNs.   This  section  links  the  previously-
       defined  storage  objects  with the target, and defines which number (the Logical Unit Number) the device
       will use. Note that if ACLs are being used, a lun mapping must be created under the ACL that refers  back
       to the TPG LUN.

   ACLS
       ACLs  (Access Control Lists) allow different configuration, depending on the initiator that is connecting
       to the target. This includes both per-initiator authentication settings  as  well  as  per-initiator  LUN
       mappings.

       create  <wwn>  in  the acls node creates an ACL for an initiator, and create within the ACL creates a LUN
       mapping. (This can either refer to the TPG LUN, or to the storage object, in which case the TPG LUN  will
       be configured as well.) Global setting auto_add_mapped_luns affects this, see below.

   AUTHENTICATION
       iSCSI  supports  authentication  via the CHAP protocol, which uses a username and password. The initiator
       may be required to supply valid credentials to the target, and the target may also be required to  supply
       credentials back to the initiator. The latter is referred to as mutual authentication.

       Furthermore,  authentication  credentials  may be different for each session phase (Discovery or Normal),
       and authentication in a Normal session may be set at the TPG level, or per-ACL.

       Discovery Authentication
       iSCSI Discovery sessions allow the initiator to connect  to  a  portal  and  discover  targets  with  the
       SendTargets  command,  but  not  access  them.  The  four parameters userid, password, mutual_userid, and
       mutual_password are configured via set discovery_auth command within the  top-level  iscsi  configuration
       node.  1-way  authentication is enabled if userid and password are both set, and mutual authentication is
       enabled if all four are set. Authentication is disabled by unsetting the parameters.

       Normal Authentication
       Similarly, the four parameters userid, password, mutual_userid, and mutual_password  are  configured  via
       set auth command within the TPG node and ACL nodes. However, LIO only uses one or the other, depending on
       the TPG's generate_node_acls attribute setting. If generate_node_acls is 1, the TPG-wide settings will be
       used. If generate_node_acls is 0, then the user-created ACLs' settings will be used.

       Enable  generate_node_acls  with  set  attribute  generate_node_acls=1  within  the TPG node. This can be
       thought of as "ignore ACLs mode" -- both authentication and LUN mapping will then use the TPG settings.

       No Authentication
       Authentication  is  disabled  by   clearing   the   TPG   "authentication"   attribute:   set   attribute
       authentication=0.   Although initiator names are trivially forgeable, generate_node_acls still works here
       to either ignore user-defined ACLs and allow all,  or  check  that  an  ACL  exists  for  the  connecting
       initiator.

CONFIGURING FIBRE CHANNEL (QLA2XXX)

       Operation as a target requires that /sys/module/qla2xxx/parameters/qlini_mode report "disabled". This may
       require passing the qlini_mode=disabled parameter to the qla2xxx module when it loads.

CONFIGURING FIBRE CHANNEL OVER ETHERNET (TCM_FC)

       Ensure fcoeadm -i shows a working endpoint.

CONFIGURING SRP

       SRP (SCSI RDMA Protocol) requires that RDMA-capable hardware is present. It uses "ib" WWNs.

CONFIGURING LOOPBACK

       Storage objects may be re-exported as local SCSI devices with this fabric.

CONFIGURING OTHER FABRICS

       Other fabrics may be present. They are for specialized uses. Use at your own risk.

EXAMPLES

   DEFINING A STORAGE OBJECT WITHIN A BACKSTORE
       backstores/fileio create disk1 /disks/disk1.img 140M
       Creates  a  storage  object  named  disk1  with  the given path and size.  targetcli supports common size
       abbreviations like 'M', 'G', and 'T'.

   EXPORTING A STORAGE OBJECT VIA ISCSI
       iscsi/ create
       Creates an iSCSI target with a default WWN. It will also create an initial  target  portal  group  called
       tpg1.

       iqn.2003-01.org.linux-iscsi.test2.x8664:sn123456789012/tpg1/
       An  example of changing to the configuration node for the given target's first target portal group (TPG).
       This is equivalent to giving the command prefixed by "cd". (Although  more  can  be  useful  for  certain
       setups, most configurations have a single TPG per target. In this case, configuring the TPG is equivalent
       to configuring the overall target.)

       portals/ create
       Add  a  portal, i.e. an IP address and TCP port via which the target can be contacted by initiators. Only
       required if the default 0.0.0.0:3260 portal is not present.

       luns/ create /backstores/fileio/disk1
       Create a new LUN in the TPG, attached to the storage object that has previously been defined. The storage
       object now shows up under the /backstores configuration node as activated.

       acls/ create iqn.1994-05.com.redhat:4321576890
       Creates an ACL (access control list) entry for the given iSCSI initiator.

       acls/iqn.1994-05.com.redhat:4321576890 create 2 0
       Gives the initiator access to the first exported LUN (lun0), which the initiator will see  as  lun2.  The
       default  is  to  give the initiator read/write access; if read-only access was desired, an additional "1"
       argument would be added to enable write-protect. (Note: if global setting auto_add_mapped_luns  is  true,
       this step is not necessary.)

   EXPORTING A STORAGE OBJECT VIA FCOE
       tcm_fc/ create 20:00:00:19:99:a8:34:bc
       Create  an  FCoE  target with the given WWN.  targetcli can tab-complete the WWN based on registered FCoE
       interfaces. If none are found, verify that they are properly configured and are shown in  the  output  of
       fcoeadm -i.

       tcm_fc/20:00:00:19:99:a8:34:bc/
       If  auto_cd_after_create  is  set  to  false,  change  to  the  configuration  node for the given target,
       equivalent to giving the command prefixed by cd.

       luns/ create /backstores/fileio/disk1
       Create a new LUN for the interface, attached to a previously defined storage object. The  storage  object
       now shows up under the /backstores configuration node as activated.

       acls/ create 00:99:88:77:66:55:44:33
       Create  an  ACL  (access control list), for defining the resources each initiator may access. The default
       behavior is to auto-map existing LUNs to the ACL; see help for more information.

       The LUN should now be accessible via FCoE.

OTHER COMMANDS

       saveconfig
       Save the current configuration settings to a file, from which settings will be restored if the system  is
       rebooted. By default, this will save the configuration to /etc/rtslib-fb-target/saveconfig.json.

       This command is executed from the configuration root node.

       restoreconfig
       Restore  target  configuration  from  a file, the default is the file listed under saveconfig.  This will
       fail if there is already an established config, unless the clear_existing option is set to true.

       This command is executed from the configuration root node.

       clearconfig
       Clears the entire current local configuration. The parameter  confirm=true  must  also  be  given,  as  a
       precaution.

       This command is executed from the configuration root node.

       sessions [ list | detail ] [sid]
       Lists the current open sessions or a specific session, with or without details.

       This command is executed from the configuration root node.

       exit
       Leave the configuration shell.

SETTINGS GROUPS

       Settings  are  broken  into  groups.  Individual  settings  are accessed by get <group> <setting> and set
       <group> <setting>=<value>, and the settings of an entire group may be  displayed  by  get  <group>.   All
       except for global are associated with a particular configuration node.

   GLOBAL
       Shell-related  user-specific  settings  are in global, and are visible from all configuration nodes. They
       are mostly shell display options, but some starting with  auto_  affect  shell  behavior  and  may  merit
       customization.   These   include  auto_save_on_exit,  which  controls  if  exiting  targetcli  saves  the
       configuration; auto_add_mapped_luns, to automatically add existing LUNs to new  ACLs,  and  new  LUNS  to
       existing  ACLs; and auto_cd_after_create, to change working path to newly-created nodes.  Global settings
       are user-specific and are saved to ~/.targetcli/ upon exit, unlike other groups,  which  are  system-wide
       and kept in /etc/rtslib-fb-target/saveconfig.json.

   BACKSTORE-SPECIFIC
       attribute
       /backstore/<type>/<name>  configuration  node.  Contains  values  relating  to  the backstore and storage
       object.

   ISCSI-SPECIFIC
       discovery_auth
       /iscsi configuration node. Set the normal and mutual authentication userid  and  password  for  discovery
       sessions, as well as enabling or disabling it. By default it is disabled -- no authentication is required
       for discovery.

       parameter
       /iscsi/<target_iqn>/tpgX    configuration   node.   ISCSI-specific   parameters   such   as   AuthMethod,
       MaxBurstLength, IFMarker, DataDigest, and similar.

       attribute
       /iscsi/<target_iqn>/tpgX configuration node. Contains implementation-specific settings for the TPG,  such
       as authentication, to enforce or disable authentication for the full-feature phase (i.e. non-discovery).

       auth
       /iscsi/<target_iqn>/tpgX/acls/<initiator_iqn>  configuration  node. Set the userid and password for full-
       feature phase for this ACL.

FILES

       /etc/rtslib-fb-target/saveconfig.json
       /etc/rtslib-fb-target/backup/*

ENVIRONMENT

   TARGETCLI_HOME
       If set, this variable points to a directory that should be used instead of ~/.targetcli

SEE ALSO

       targetclid(8), targetctl(8), tcmu-runner(8)

AUTHOR

       Written by Jerome Martin <jxm@risingtidesystems.com>.
       Man page written by Andy Grover <agrover@redhat.com>.

REPORTING BUGS

       Report bugs via <targetcli-fb-devel@lists.fedorahosted.org>
       or <https://github.com/open-iscsi/targetcli-fb/issues>

                                                                                                    targetcli(8)