summaryrefslogtreecommitdiff
path: root/README
blob: a7097c45ea0ffff9b92bce43fdc5781480b68ea1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
=================================================================

                Linux* Open-iSCSI

=================================================================

                                                January 20, 2005

Contents
========

- 1. In This Release
- 2. Introduction
- 3. Installation
- 4. Open-iSCSI daemon
- 5. Open-iSCSI Configuration Utility
- 6. Configuration
- 7. Getting Started
- 8. TBD
- Appendix A. SendTargets snapshot.



1. In This Release
==================

This file describes the Linux* Open-iSCSI Initiator. The software was
tested on AMD Opteron (TM) and Intel Xeon (TM). 

The latest development release is available at:
http://www.open-iscsi.org

For questions, comments, contributions send e-mail to:
open-iscsi@googlegroups.com 

    1.1. Features
    
    - highly optimized and very small-footprint data path;
    - multiple outstanding R2Ts;
    - persistent configuration database;
    - SendTargets discovery;
    - CHAP;
    - PDU header Digest;
    - multiple sessions;
    - multi-connection sessions.
    
    For the most recent list of features please refer to:
    http://www.open-iscsi.org/cgi-bin/wiki.pl/Roadmap

2. Introduction
===============

Open-iSCSI project is a high-performance, transport independent,
multi-platform implementation of RFC3720 iSCSI.

Open-iSCSI is partitioned into user and kernel parts.

The kernel portion of Open-iSCSI is a from-scratch code
licensed under GPL. The kernel part implements iSCSI data path
(that is, iSCSI Read and iSCSI Write), and consists of three
loadable modules: scsi_transport_iscsi.ko, libiscsi.ko and iscsi_tcp.ko.

User space contains the entire control plane: configuration
manager, iSCSI Discovery, Login and Logout processing,
connection-level error processing, Nop-In and Nop-Out handling,
and (in the future:) Text processing, iSNS, SLP, Radius, etc.

The user space Open-iSCSI consists of a daemon process called
iscsid, and a management utility iscsiadm.


3. Installation
===============

As of today, the Open-iSCSI Initiator requires a host running the
Linux operating system with kernel version 2.6.11, or later. See
http://www.open-iscsi.org/cgi-bin/wiki.pl/Supported_Kernels
for a more information about which kernels Open-iSCSI supports.
You need to enable "Cryptographic API" under "Cryptographic options" in the
kernel config. You also need to enable "CRC32c CRC algorithm" if
you use header or data digests. They are the kernel options,
CONFIG_CRYPTO and CONFIG_CRYPTO_CRC32C, respectively.

For kernels 2.6.13-2.6.15 there are compatibility patches that must be
applied before compiling. Standing in the root of the open-iscsi source
directory the following command must be done in order to apply the patch
for your kernel:

patch -p1 < kernel/2.6.13-compat.patch
patch -p1 < kernel/2.6.14-and-2.6.15-compat.patch

By default the kernel source found at
/lib/modules/`uname -a`/build
will be used to compile the open-iscsi modules. To specify a different
kernel to build against use:

	make KSRC=<kernel-src>

or cross-compilation:

	make KSRC=<kernel-src> KARCH="ARCH=um"

If you choose to install the Debian packages instead of building from source,
please read the file /usr/share/doc/linux-iscsi/README.debian for information
on how to build kernel modules against your specific kernel.

For Red Hat/Fedora and Debian distributions open-iscsi can be installed by
typing "make install". This will copy iscsid and iscsiadm to /usr/sbin, the
init script to /etc/init.d, and the kernel modules: iscsi_tcp.ko, libiscsi.ko
and scsi_transport_iscsi to /lib/modules/`uname -r`/kernel/drivers/scsi/
overwriting existing iscsi modules.

4. Open-iSCSI daemon
====================

The daemon implements control path of iSCSI protocol, plus some management
facilities. For example, the daemon could be configured to automatically 
re-start discovery at startup, based on the contents of persistent 
iSCSI database (see next section).

For help, run:

	./iscsid --help

Usage: iscsid [OPTION]

  -c, --config=[path]     Execute in the config file (/etc/iscsid.conf).
  -f, --foreground        run iscsid in the foreground
  -d, --debug debuglevel  print debugging information
  -u, --uid=uid           run as uid, default is current user
  -g, --gid=gid           run as gid, default is current user group
  -h, --help              display this help and exit
  -v, --version           display version and exit



5. Open-iSCSI Configuration Utility
===================================

Open-iSCSI persistent configuration is implemented as a DBM database
available on all Linux installations.

The database contains two tables:

- Discovery table (discovery.db);
- Node table (node.db).

The regular place for iSCSI database files: /var/db/iscsi/*.db

The iscsiadm utility is a command-line tool to manage (update, delete,
insert, query) the persistent database.

The utility presents set of operations that a user can perform 
on iSCSI nodes, sessions, connections, and discovery records.

Note that some of the iSCSI Node and iSCSI Discovery operations 
do not require iSCSI daemon (iscsid) loaded.

For help, run:

	./iscsiadm --help

Usage: iscsiadm [OPTION]

  -m, --mode <op>         specify operational mode op = <discovery|node>
  -m discovery --type=[type] --portal=[ip:port] --login
                          perform [type] discovery for target portal with
                          ip-address [ip] and port [port]. Initiate Login for
                          each discovered target if --login is specified
  -m discovery            display all discovery records from internal
                          persistent discovery database
  -m discovery --record=[id] --login
                          perform discovery based on record [id] in database
  -m discovery --record=[id] --op=[op] [--name=[name] --value=[value]]
                          perform specific DB operation [op] for specific
                          discovery record with [id]. It could be one of:
                          [new], [delete], [update] or [show]. In case of
                          [update], you have to provide [name] and [value]
                          you wish to update
  -m node                 display all discovered nodes from internal
                          persistent discovery database
  -m node --record=[id] [--login|--logout]
  -m node --record=[id] --op=[op] [--name=[name] --value=[value]]
                          perform specific DB operation [op] for specific
                          node with record [id]. It could be one of:
                          [new], [delete], [update] or [show]. In case of
                          [update], you have to provide [name] and [value]
                          you wish to update
  -m session              display all active sessions and connections
  -m session --record=[id[:cid]] [--logout]
                          perform operation for specific session with
                          record [id] or display statistics if no operation
                          specified. Operation will affect one connection
                          only if [:cid] is specified
  -d, --debug debuglevel  print debugging information
  -V, --version           display version and exit
  -h, --help              display this help and exit


    Usage examples (using the one-letter options):

    1) SendTargets iSCSI Discovery:

	    ./iscsiadm -m discovery -t sendtargets -p 192.168.1.1:3260

    2) iSCSI Login:

	    ./iscsiadm -m node -r 0f23e4 -l

    3) iSCSI Logout:

	    ./iscsiadm -m node -r 0f23e4 -u

    4) Changing iSCSI parameter:

	    ./iscsiadm -m node -r 0f23e4 -o update \
		    -n node.cnx[0].iscsi.MaxRecvDataSegmentLength -v 65536

    5) Adding custom iSCSI Node:

	    ./iscsiadm -m node -o new -p 192.168.0.1:3260

    6) Removing iSCSI Node:

	    ./iscsiadm -m node -o delete -r 0a45f8

    7) Display iSCSI Node configuration:

	    ./iscsiadm -m node -r 0a45f8

	or

	    ./iscsiadm -m node -o show -r 0a45f8

    8) Show all node records:

            ./iscsiadm -m node

    9) Show all records in discovery database:

            ./iscsiadm -m discovery

   10) Display discovery record setting:

            ./iscsiadm -m discovery -r 0a45f8

   11) Display session statistics:

            ./iscsiadm -m session -r 00:0a45f8 --stats

6. Configuration
================

The default configuration file is /etc/iscsid.conf. This file contains
only configuration that could be overwritten by iSCSI Discovery,
or manualy updated via iscsiadm utility. Its OK if this file does not
exist in which case compiled-in default configuration will take place
for newer discovered Target nodes.

See the man page and the example file for the current syntax.
The manpages for iscsid, iscsiadm are in the doc subdirectory and can be
installed in the appropriate man page directories and need to be manually
copied into e.g. /usr/local/share/man8.

7. Getting Started
==================
There are three steps needed to set up a system to use iscsi storage:
1. automate iscsi startup using the init script.
2. discover targets.
3. automate target logins for future system reboots.

1. automate iscsi startup using the init script
-----------------------------------------------

Red Hat or Fedora:
-----------------
To start open-iscsi in Red Hat/Fedora you can do:

	service open-iscsi start

To get open-iscsi to automatically start at run time you may have to
run:
	chkconfig --level <levels> open-iscsi on
Where <levels> are the run levels.

And, to automatically mount a file system during startup
you must have the partition entry in /etc/fstab marked with the "_netdev"
option. For example this would mount a iscsi disk sdb:

	/dev/sdb /mnt/iscsi ext3 _netdev 0 0

SUSE or Debian:
---------------
Otherwise, if there is a initd script for your distro in etc/initd that
gets installed with "make install"

	/etc/init.d/open-iscsi start

will usually get you started.

Other:
------
If there is no initd script, you must start the tools by hand. First load the
iscsi modules with:

	modprobe -q iscsi_tcp

after that start iSCSI daemon process:

	./iscsid

or alternatively, start it with debug enabled and with output
redirected to the current console:

	./iscsid -d8 -f &

and use configuration utility to add/remove/update Discovery records,
iSCSI Node records or monitor active iSCSI sessions (see above or the
iscsiadm man files).

	./iscsiadm


To login:

	./iscsiadm -m node -r <node rec> -l

where <node rec> is the record of a discovered or manually
added iSCSI Target Node (for iscsiadm usage examples see
previous sections).

2. discover targets
-------------------
Once iscsi is up, you can perform discovery to targets using:
iscsiadm -m discovery -t sendtargets -p 192.168.1.1:3260

While discovery targets are kept in the discovery.db, they are
usefull only for re-discovery. The discovered targets (a.k.a. nodes)
are stored as records in the xxx.db.

The discovered targets are not logged into yet. Rather than logging
into the discovered nodes (making LUs from those nodes available as
storage), it is better to automate the login to the nodes we need.

3. automate target logins for future system reboots
---------------------------------------------------
Note: this may only work for Red Hat, Fedora and SUSE configurations

To automate login to a node, use the following with the record ID of the
node discovered in the discovery above:
	iscsiadm -m node --record <record ID> --op update -n node.conn[0].startup -v automatic

Or to set the "node.conn[0].statup" attribute to "startup" as default for
all sessions add the following to the /etc/iscsid.conf:

	node.conn[0].startup = automatic

To login to all the automated nodes, simply restart the iscsi service
e.g /etc/init.d/open-iscsi restart


8. TBD
======

To be completed:

    - Kernel tracing and Troubleshooting
    - Immediate and not-so-immediate plans
    - Useful scripts
    - White paper on Open-iSCSI design


Appendix A. SendTargets iSCSI Discovery session snapshot.
=========================================================

-bash-2.05b# ./iscsiadm -m discovery -tst -p 10.16.16.223:3260
[02f611] 10.16.16.223:3260,1 iqn.2002-07.com.ttechnologies.target.a
[01acd1] 17.1.1.223:3260,1 iqn.2002-07.com.ttechnologies.target.a
-bash-2.05b#
-bash-2.05b# ./iscsiadm -m node
[02f611] 10.16.16.223:3260,1 iqn.2002-07.com.ttechnologies.target.a
[01acd1] 17.1.1.223:3260,1 iqn.2002-07.com.ttechnologies.target.a
-bash-2.05b#
-bash-2.05b# ./iscsiadm -m discovery -tst -p 10.16.16.227:3260
[02fb91] 10.16.16.227:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
-bash-2.05b#
-bash-2.05b# ./iscsiadm -m node
[02f611] 10.16.16.223:3260,1 iqn.2002-07.com.ttechnologies.target.a
[02fb91] 10.16.16.227:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
[01acd1] 17.1.1.223:3260,1 iqn.2002-07.com.ttechnologies.target.a