ISCSI

From Livedoc - The Documentation Repository
Revision as of 18:48, 7 June 2008 by Brandon Vargo (talk | contribs) (Initial edit)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

iSCSI is the protocol that allows SCSI commands to be sent over the network. In the case of the CSL, servers use the open-iscsi software to connect to the storage arrays, which actually store the data. This data is sent over the SAN, not the production network.

Definitions

Initiator - the iscsi client that access the data Target - the iscsi server that hosts the data Node - an initiator or target Initiator name - a unique identifier for an iSCSI node (see initiatorname.iscsi configuration below) CHAP (Challenge-handshake authentication protocol) - used for authenticating iSCSI; as this is insecure, all iSCSI data should travel over a separate network, in our case, the [SAN]. LUN (Logical Unit Number) - the number assigned to a logical unit, in the case of iSCSI, the storage "partitions"

Configuration of open-iscsi

initiatorname.iscsi

This file stores the nodes' initiator name. With iSCSI, every node must be given a unique identifying initiator name. This is of the form iqn.yyyy-mm.{reversed domain name}:{user defined}. iqn stands for iSCSI qualified name, and yyyy-mm is the date of the first full month for which the domain name was registered. For the CSL, our initiator names are of the form iqn.1992-03.edu.tjhsst:initiator:servername.number, for initiators, and iqn.1992-03.edu.tjhsst.csl:storage:servername, for storage servers.

iscsid.conf

This file stores the server's iSCSI global configuration. An example is given below.

node.active_cnx = 1
# attach to storage automatically when started?
node.startup = automatic
# the CHAP username
node.session.auth.username = [A CHAP username]
# the CHAP password
node.session.auth.password = [A CHAP password]
# the timeout values for an iSCSI session
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 10
node.session.err_timeo.reset_timeout = 30
# other configuration
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
# network configuration
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Wait = 0
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.MaxConnections = 0
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.MaxRecvDataSegmentLength = 65536
# if we used CHAP for discovery
#discovery.sendtargets.auth.authmethod = CHAP
#discovery.sendtargets.auth.username = [A CHAP username]
#discovery.sendtargets.auth.password = [A CHAP password]

iscsiadm

iscsiadm is the main open-iscsi configuration tool.

Discovering storage resources: iscsiadm -m discovery -t sendtargets -p IP address of storage gateway In our case, the storage gateway is one of the two storage IP addresses on each storage array. Logging into the storage array: iscsiadm -m node -T storage initiator -p iSCSCI gateay -l

These commands only need to be done once. After they have been run, configuration files are created under /etc/iscsi/ based off of the global configuration file. If node.startup is set to automatic, then the iSCSI LUNs will be reconnected the next time open-iscsi starts.