Home | History | Annotate | Line # | Download | only in doc
      1  1.1  agc iSCSI Frequently Asked Questions
      2  1.1  agc ================================
      3  1.1  agc 
      4  1.1  agc Q1. What is iSCSI?
      5  1.1  agc ==================
      6  1.1  agc 
      7  1.1  agc A1.  It's an IETF standard (RFC 3720) for remote access to block-level
      8  1.1  agc storage.  It can be thought of as similar to NFS, except that an NFS
      9  1.1  agc server exports files; the iSCSI target exports blocks to the iSCSI
     10  1.1  agc initiators, which are the clients.
     11  1.1  agc 
     12  1.1  agc 
     13  1.1  agc Q2. What's the difference between an initiator and a target?
     14  1.1  agc ============================================================
     15  1.1  agc 
     16  1.1  agc A2.  The target is the iSCSI server - it serves up blocks to the
     17  1.1  agc clients, which are called initiators.  Typically, initiators are part
     18  1.1  agc of the operating system, since the operating system manages block
     19  1.1  agc storage, presenting it to the user as file systems sitting on top of
     20  1.1  agc the storage.
     21  1.1  agc 
     22  1.1  agc Targets do not generally need to be part of the operating system,
     23  1.1  agc indeed there is some flexibility to be gained by having targets as
     24  1.1  agc part of the user-level daemons that are run. This means that
     25  1.1  agc security credentials need not be buried in the kernel.
     26  1.1  agc 
     27  1.1  agc 
     28  1.1  agc Q3. So how do I use it?
     29  1.1  agc =======================
     30  1.1  agc 
     31  1.1  agc A3.  Firstly, you need to set up the iSCSI target.  The target is
     32  1.1  agc simply sitting there, waiting for requests for blocks.  So we need to
     33  1.1  agc configure the target with an area of storage for it to present to the
     34  1.1  agc initiators.
     35  1.1  agc 
     36  1.1  agc To set up the target, you need to edit the /etc/iscsi/targets file.
     37  1.1  agc It has a certain layout, to provide a means of (a) mirroring and (b)
     38  1.1  agc combining multiple areas to present one large contiguous area of
     39  1.1  agc storage. This can be multiply-layered.
     40  1.1  agc 
     41  1.1  agc The basic unit of storage is an extent. This can be either a file
     42  1.1  agc or a device. The offset of the start of the extent to be presented
     43  1.1  agc must be given, and also the length of the extent.
     44  1.1  agc 
     45  1.1  agc A device is made up of one or more extents, and/or one or more
     46  1.1  agc other devices.
     47  1.1  agc 
     48  1.1  agc At the highest level, a target is what is presented to the initiator,
     49  1.1  agc and is made up of one or more devices, and/or one or more extents.
     50  1.1  agc 
     51  1.1  agc The simple example is as follows, consisting of one piece of storage
     52  1.1  agc presented by one target:
     53  1.1  agc 
     54  1.1  agc 	# extent        file or device          start           length
     55  1.1  agc 	extent0         /tmp/iscsi-target0      0               100MB
     56  1.1  agc 
     57  1.1  agc will produce an extent of storage which is based on one file,
     58  1.1  agc /tmp/iscsi-target0, which starts 0 bytes into the file, and is 100 MB
     59  1.1  agc in length.  The file will be created if it does not already exist.
     60  1.1  agc 
     61  1.1  agc 	# target        storage                 netmask
     62  1.1  agc 	target0         extent0                 0.0.0.0/0
     63  1.1  agc 
     64  1.1  agc That extent is then used in target0, and will be presented to an
     65  1.1  agc initiator running on any host.
     66  1.1  agc 
     67  1.1  agc Extents must be defined before they can be used, and extents cannot
     68  1.1  agc be used more than once.
     69  1.1  agc 
     70  1.1  agc Devices are used to combine extents or other devices.  Device
     71  1.1  agc definitions have the following format:
     72  1.1  agc 
     73  1.1  agc 	# devices
     74  1.1  agc 	device0	RAID1		extent0 extent1
     75  1.1  agc 
     76  1.1  agc A "RAID1" device behaves in much the same way that RAID1 devices work
     77  1.1  agc in the storage arena - they mirror the original storage.  There can be
     78  1.1  agc any number of devices or extents in a RAID1 device, not just 2, but
     79  1.1  agc each device or extent must be of the same size.
     80  1.1  agc 
     81  1.1  agc A "RAID0" device combines the storage, to produce a larger area of
     82  1.1  agc (virtually) "contiguous" storage.
     83  1.1  agc 
     84  1.1  agc Devices must be defined before they can be used, and devices may not
     85  1.1  agc be used more than once.
     86  1.1  agc 
     87  1.1  agc A more detailed example would be as follows:
     88  1.1  agc 
     89  1.1  agc 	# Complex file showing 3-way RAID1 (with RAID1 components),
     90  1.1  agc 	# also using local and (NFS) remote components
     91  1.1  agc 
     92  1.1  agc 	# extents
     93  1.1  agc 	extent0	/iscsi/extents/0			0	100MB
     94  1.1  agc 	extent1	/imports/remote1/iscsi/extents/0	0	100MB
     95  1.1  agc 	extent2	/iscsi/extents/1			0	100MB
     96  1.1  agc 	extent3	/imports/remote1/iscsi/extents/1	0	100MB
     97  1.1  agc 	extent4	/iscsi/extents/2			0	100MB
     98  1.1  agc 	extent5	/imports/remote1/iscsi/extents/2	0	100MB
     99  1.1  agc 	extent6	/iscsi/extents/3			0	100GB
    100  1.1  agc 
    101  1.1  agc 	# devices
    102  1.1  agc 	device0	RAID1		extent0 extent1
    103  1.1  agc 	device1	RAID1		extent2 extent3
    104  1.1  agc 	device2	RAID1		extent4 extent5
    105  1.1  agc 	device3	RAID1		device0 device1 device2
    106  1.1  agc 
    107  1.1  agc 	# targets
    108  1.1  agc 	target0	device3		10.4.0.0/16
    109  1.1  agc 
    110  1.1  agc 	# a target can be made from just an extent
    111  1.1  agc 	target1	extent6		127.0.0.0/8
    112  1.1  agc 
    113  1.1  agc which will make 7 extents, 3 of them 100 MB in length and remote (via
    114  1.1  agc NFS), and 3 of them 100 MB in length and local, and one of them large
    115  1.1  agc (100 GB) and local.  Three separate occurrences of a local and remote
    116  1.1  agc 100 MB extent are combined to make three RAID1 devices, and then those
    117  1.1  agc three RAID1 devices are combined into another RAID1 device, and
    118  1.1  agc presented as target0.
    119  1.1  agc 
    120  1.1  agc The other extent is used to present a simple 100 GB of storage as
    121  1.1  agc target1.
    122  1.1  agc 
    123  1.1  agc 
    124  1.1  agc Q4.  What about security?
    125  1.1  agc =========================
    126  1.1  agc 
    127  1.1  agc A4.  A good question.  RFC 3720 specifies CHAP, SRM and Kerberos as
    128  1.1  agc methods of providing authentication and/or security.  In practice,
    129  1.1  agc it's whatever is provided by the initiator you are using which will
    130  1.1  agc determine what authentication or security is used.
    131  1.1  agc 
    132  1.1  agc If you want any form of security, it's probably best to use ssh port
    133  1.1  agc forwarding for all your traffic if you're worried about security. 
    134  1.1  agc CHAP will only provide authentication, the other information will flow
    135  1.1  agc across the network in clear.
    136  1.1  agc 
    137  1.1  agc 
    138  1.1  agc Q5.  Using the Microsoft initiator, I can't login with CHAP
    139  1.1  agc ===========================================================
    140  1.1  agc 
    141  1.1  agc A5.  The 1.06 Microsoft initiator silently enforces a chap password
    142  1.1  agc length of at least 12 characters.  If you enter a password which is
    143  1.1  agc less than that, your Discovery login will silently fail.
    144  1.1  agc 
    145  1.1  agc Since CHAP provides very little authentication anyway, you are advised
    146  1.1  agc not to use it - ssh port forwarding, and the use of tcp wrappers,
    147  1.1  agc will do a much better job of protection.
    148  1.1  agc 
    149  1.1  agc 
    150  1.1  agc Q6. What initiators work with the NetBSD iSCSI target?
    151  1.1  agc ======================================================
    152  1.1  agc 
    153  1.1  agc A6. The NetBSD target has been tested at various times with the Microsoft
    154  1.1  agc iSCSI initiator, version 1.06 (which can be downloaded for free from
    155  1.1  agc www.microsoft.com, but needs Windows XP Pro to work), and also with the
    156  1.1  agc NetBSD test harness, which is provided, but not installed, in the same
    157  1.1  agc place as the target.
    158  1.1  agc 
    159  1.1  agc 
    160  1.1  agc Q7.  What is the difference between Discovery and Normal login?
    161  1.1  agc ===============================================================
    162  1.1  agc 
    163  1.1  agc A7.  On direct-attached storage, the kernel verifies what storage is
    164  1.1  agc available, and assigns a device node to it. With iSCSI, storage can
    165  1.1  agc come and go, and our proximity to the devices doesn't matter. So we
    166  1.1  agc need to find a different method of finding out what iSCSI storage is
    167  1.1  agc out there.
    168  1.1  agc 
    169  1.1  agc This is done by a "Discovery" iSCSI session - the initiator logs in
    170  1.1  agc to the target, finds out what storage is being presented, then logs
    171  1.1  agc back out. This can be seen by the syslog entries:
    172  1.1  agc 
    173  1.1  agc 	Feb  5 10:33:44 sys3 iscsi-target: > Discovery login from iqn.1991-05.com.microsoft:inspiron on 10.4.1.5
    174  1.1  agc 	Feb  5 10:33:44 sys3 iscsi-target: < Discovery logout from iqn.1991-05.com.microsoft:inspiron on 10.4.1.5
    175  1.1  agc 
    176  1.1  agc The initiator will then perform a "Normal" login session, which will
    177  1.1  agc establish a session between the initiator and target. This is denoted
    178  1.1  agc by the syslog entries:
    179  1.1  agc 
    180  1.1  agc 	Feb  5 00:00:28 sys3 iscsi-target: > Discovery login from iqn.1993-03.org.NetBSD.iscsi-initiator:agc on 127.0.0.1
    181  1.1  agc 	Feb  5 00:00:28 sys3 iscsi-target: < Discovery logout from iqn.1993-03.org.NetBSD.iscsi-initiator:agc on 127.0.0.1
    182  1.1  agc 	Feb  5 00:00:28 sys3 iscsi-target: > Normal login from iqn.1993-03.org.NetBSD.iscsi-initiator:agc on 127.0.0.1
    183  1.1  agc 	Feb  5 00:05:32 sys3 iscsi-target: < Normal logout from iqn.1993-03.org.NetBSD.iscsi-initiator:agc on 127.0.0.1
    184  1.1  agc 
    185  1.1  agc 
    186  1.1  agc Q8. So what do I do to try it?
    187  1.1  agc ==============================
    188  1.1  agc 
    189  1.1  agc A8. Perform the following steps:
    190  1.1  agc 
    191  1.1  agc a) define the storage that you want to present in /etc/iscsi/targets
    192  1.1  agc b) start the iSCSI target: /etc/rc.d/iscsi_target forcestart
    193  1.1  agc c) use an initiator to point it at the machine you started it on
    194  1.1  agc 
    195  1.1  agc 
    196  1.1  agc Q9. Why does the test harness not work properly?
    197  1.1  agc ================================================
    198  1.1  agc 
    199  1.1  agc A9. Firstly, you should be invoking the test harness as
    200  1.1  agc 
    201  1.1  agc 	iscsi-harness -n 3 -h localhost
    202  1.1  agc 
    203  1.1  agc where the 'n' option is the number of iterations to perform, and the
    204  1.1  agc 'h' parameter is the name or address of the machine where the
    205  1.1  agc iscsi-target is running.
    206  1.1  agc 
    207  1.1  agc If the harness was invoked properly, check any error messages which
    208  1.1  agc the test harness sends:
    209  1.1  agc 
    210  1.1  agc If one of them looks like:
    211  1.1  agc 
    212  1.1  agc 	No matching user configuration entry for `agc' was found
    213  1.1  agc 	Please add an entry for `agc' to `/etc/iscsi/auths'
    214  1.1  agc 
    215  1.1  agc (where "agc" is substituted for the name of the user who was running
    216  1.1  agc the test harness), then please do as suggested. The iSCSI test harness
    217  1.1  agc tests, amongst other things, the CHAP authentication process, and so
    218  1.1  agc CHAP credentials for that user are needed.
    219  1.1  agc 
    220  1.1  agc 
    221  1.1  agc 
    222  1.1  agc Alistair Crooks
    223  1.1  agc agc (a] NetBSD.org
    224  1.1  agc Wed Feb  8 07:21:56 GMT 2006
    225