# open-iscsi [solved]

## tazinblack

Hallo zusammen,

das mag zwar hier etwas offtopic sein, aber ich denke es ist immer noch besser als im Diskussionsforum, da es ja ein Problem ist.

Und wenns im Portagetree aktuell wäre, würde ich das natürlich verwenden !

Also, ich brauche einen ISCSI-Initiatior, welcher mit nem aktuellen Kernel (2.6.18-gentoo-r6) läuft.

Im Portagetree ist zwar open-iscsi drin, aber nur in ner uralt Version.

Laut der Homepage vom open-iscsi Projekt braucht man aber ne aktuelle Version für nen aktuellen Kernel.

Also hab ich mir diese runtergeladen.

Nach 

```
make oldconfig && make prepare
```

auf die Kernelsourcen versuche ich jetzt das Ganze mit make zu bauen.

Leider bekomme ich folgenden Fehler :

```
li77x52 open-iscsi-2.0-754 # make

make -C usr

make[1]: Entering directory `/anpassung/iscsi/open-iscsi-2.0-754/usr'

make[1]: Nothing to be done for `all'.

make[1]: Leaving directory `/anpassung/iscsi/open-iscsi-2.0-754/usr'

make -C kernel

make[1]: Entering directory `/anpassung/iscsi/open-iscsi-2.0-754/kernel'

echo "kernel check... OK"

kernel check... OK

cp 2.6.16-2.6.19/*.c .

cp 2.6.16-2.6.19/*.h .

make -C /lib/modules/2.6.18-gentoo-r6/build M=`pwd` KBUILD_OUTPUT=  V=0 modules

make[2]: Entering directory `/usr/src/linux-2.6.18-gentoo-r6'

  WARNING: Symbol version dump /usr/src/linux-2.6.18-gentoo-r6/Module.symvers

           is missing; modules will have no dependencies and modversions.

  CC [M]  /anpassung/iscsi/open-iscsi-2.0-754/kernel/scsi_transport_iscsi.o

/bin/sh: scripts/genksyms/genksyms: No such file or directory

make[3]: *** [/anpassung/iscsi/open-iscsi-2.0-754/kernel/scsi_transport_iscsi.o] Error 1

make[2]: *** [_module_/anpassung/iscsi/open-iscsi-2.0-754/kernel] Error 2

make[2]: Leaving directory `/usr/src/linux-2.6.18-gentoo-r6'

make[1]: *** [all] Error 2

make[1]: Leaving directory `/anpassung/iscsi/open-iscsi-2.0-754/kernel'

make: *** [all] Error 2

li77x52 open-iscsi-2.0-754 #
```

Den fehlenden Pfad den er da anmeckert gibts und der sieht so aus :

```
 li77x52 genksyms # pwd

/usr/src/linux/scripts/genksyms

li77x52 genksyms # ls -l

total 188

-rw-r--r-- 1 root root  1110 Feb  1 17:35 Makefile

-rw-r--r-- 1 root root 15080 Feb  1 17:35 genksyms.c

-rw-r--r-- 1 root root  2410 Feb  1 17:35 genksyms.h

-rw-r--r-- 1 root root  7831 Feb  1 17:35 keywords.c_shipped

-rw-r--r-- 1 root root  1263 Feb  1 17:35 keywords.gperf

-rw-r--r-- 1 root root 53684 Feb  1 17:35 lex.c_shipped

-rw-r--r-- 1 root root  7893 Feb  1 17:35 lex.l

-rw-r--r-- 1 root root 63005 Feb  1 17:35 parse.c_shipped

-rw-r--r-- 1 root root  3405 Feb  1 17:35 parse.h_shipped

-rw-r--r-- 1 root root 10386 Feb  1 17:35 parse.y

li77x52 genksyms # 
```

Da ich seit gentoo eigentlich so gut wie gar nicht mehr selber kompiliert hab steh ich da jetzt vot nem Problem !

Kann mit da jemand weiterhelfen, oder gibts vielleicht nen anderen ISCSI-Intitiator den man nehmen sollte ?

----------

## bbgermany

Hallo,

bei mir sieht das im 2.6.19 source tree so aus:

```

poseidon genksyms # ls -l

insgesamt 416

-rwxr-xr-x 1 root root 39684  5. Feb 14:34 genksyms

-rw-r--r-- 1 root root 15080  5. Feb 14:12 genksyms.c

-rw-r--r-- 1 root root  2410  5. Feb 14:12 genksyms.h

-rw-r--r-- 1 root root  9916  5. Feb 14:34 genksyms.o

-rw-r--r-- 1 root root  7831  5. Feb 14:34 keywords.c

-rw-r--r-- 1 root root  7831  5. Feb 14:12 keywords.c_shipped

-rw-r--r-- 1 root root  1263  5. Feb 14:12 keywords.gperf

-rw-r--r-- 1 root root 53684  5. Feb 14:34 lex.c

-rw-r--r-- 1 root root 53684  5. Feb 14:12 lex.c_shipped

-rw-r--r-- 1 root root  7893  5. Feb 14:12 lex.l

-rw-r--r-- 1 root root 18912  5. Feb 14:34 lex.o

-rw-r--r-- 1 root root  1110  5. Feb 14:12 Makefile

-rw-r--r-- 1 root root 63005  5. Feb 14:34 parse.c

-rw-r--r-- 1 root root 63005  5. Feb 14:12 parse.c_shipped

-rw-r--r-- 1 root root  3405  5. Feb 14:34 parse.h

-rw-r--r-- 1 root root  3405  5. Feb 14:12 parse.h_shipped

-rw-r--r-- 1 root root 16088  5. Feb 14:34 parse.o

-rw-r--r-- 1 root root 10386  5. Feb 14:12 parse.y

poseidon genksyms # 

```

Bei mir ist der Kernel aber nicht nur mit "make oldconfig && make prepare" eingerichtet. Der Tree enthält einen durchkompilierten Kernel. Vielleicht solltest du einfach mal ein make im Kernelsourcetree starten.

Dann ergibt die Ausgabe beim übersetzen von open-iscsi folgendes an deiner Stelle:

```

make[1]: Entering directory `/root/source/open-iscsi-2.0-754/kernel'

echo "kernel check... OK"

kernel check... OK

cp 2.6.16-2.6.19/*.c .

cp 2.6.16-2.6.19/*.h .

make -C /lib/modules/2.6.19-gentoo-r5/build M=`pwd` KBUILD_OUTPUT=  V=0 modules

make[2]: Entering directory `/usr/src/linux-2.6.19-gentoo-r5'

  CC [M]  /root/source/open-iscsi-2.0-754/kernel/scsi_transport_iscsi.o

  CC [M]  /root/source/open-iscsi-2.0-754/kernel/libiscsi.o

  CC [M]  /root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.o

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_hdr_digest«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:111: Warnung: »crypto_digest_digest« ist veraltet (deklariert bei include/linux/crypto.h:718)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_tcp_hdr_recv«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:471: Warnung: »crypto_digest_digest« ist veraltet (deklariert bei include/linux/crypto.h:718)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »partial_sg_digest_update«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:686: Warnung: »crypto_digest_update« ist veraltet (deklariert bei include/linux/crypto.h:713)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_recv_digest_update«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:695: Warnung: »crypto_digest_update« ist veraltet (deklariert bei include/linux/crypto.h:713)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_scsi_data_in«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:749: Warnung: »crypto_digest_update« ist veraltet (deklariert bei include/linux/crypto.h:713)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_tcp_data_recv«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:888: Warnung: »crypto_digest_init« ist veraltet (deklariert bei include/linux/crypto.h:710)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:945: Warnung: »crypto_digest_update« ist veraltet (deklariert bei include/linux/crypto.h:713)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:948: Warnung: »crypto_digest_final« ist veraltet (deklariert bei include/linux/crypto.h:715)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_data_digest_init«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:1194: Warnung: »crypto_digest_init« ist veraltet (deklariert bei include/linux/crypto.h:710)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_send_padding«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:1450: Warnung: »crypto_digest_update« ist veraltet (deklariert bei include/linux/crypto.h:713)

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c: In Funktion »iscsi_send_digest«:

/root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.c:1483: Warnung: »crypto_digest_final« ist veraltet (deklariert bei include/linux/crypto.h:715)

  Building modules, stage 2.

  MODPOST 3 modules

  CC      /root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.mod.o

  LD [M]  /root/source/open-iscsi-2.0-754/kernel/iscsi_tcp.ko

  CC      /root/source/open-iscsi-2.0-754/kernel/libiscsi.mod.o

  LD [M]  /root/source/open-iscsi-2.0-754/kernel/libiscsi.ko

  CC      /root/source/open-iscsi-2.0-754/kernel/scsi_transport_iscsi.mod.o

  LD [M]  /root/source/open-iscsi-2.0-754/kernel/scsi_transport_iscsi.ko

make[2]: Leaving directory `/usr/src/linux-2.6.19-gentoo-r5'

make[1]: Leaving directory `/root/source/open-iscsi-2.0-754/kernel'

Compilation complete                Output file

----------------------------------- ----------------

Built iSCSI Open Interface module:  kernel/scsi_transport_iscsi.ko

Built iSCSI library module:         kernel/libiscsi.ko

Built iSCSI over TCP kernel module: kernel/iscsi_tcp.ko

Built iSCSI daemon:                 usr/iscsid

Built management application:       usr/iscsiadm

Read README file for detailed information.

poseidon open-iscsi-2.0-754 #

```

Stefan

----------

## tazinblack

Ok, versuch ich gleich, aber verstehen tu ichs nicht.

Ich hab doch schon nen Kernel gebaut. Zwar mit genkernel, aber das dürfte doch keine Unterschied machen.

Oder räumt genkernel den source tree wieder auf ?

----------

## tazinblack

ok ! Das hat funktioniert ! Warum auch immer.

Ach so :

```

time make -j9

real    5m17.255s

user    24m9.691s

sys     3m5.060s
```

Hast Du nach dem make des open-iscsi noch ein make install gemacht ?

Also bei mir funktioniert das, bloß das start Skript fehlt natürlich. Hast Du Dir da evtl. das für Suse angepasst, oder verwendest Du ein eigenes ?

----------

## bbgermany

Hallo,

weder das Eine noch das Andere. Ich verwende sys-block/iscsitarget. Das hat bei mir immer recht gut funktioniert  :Smile: 

Vielleicht kannst du das init-Script aus dem standard Gentoopaket nutzen.

MfG, Stefan

----------

## tazinblack

 *bbgermany wrote:*   

> Hallo,
> 
> weder das Eine noch das Andere. Ich verwende sys-block/iscsitarget. Das hat bei mir immer recht gut funktioniert 
> 
> Vielleicht kannst du das init-Script aus dem standard Gentoopaket nutzen.
> ...

 

Aber ist iscsitarget nicht für die andere Seite ?

Ich möchte auf nem gentooclient eine iscsilun verbinden.

Wäre es möglich, dass Du evtl. mal Deine configfiles aus /etc/iscsi postest ?

Irgendwie sagt er mir immer folgendes wenn ich nach targets suche.

```
iscsiadm -m discovery -t sendtargets -p 192.168.75.22:3260

iscsiadm: cannot make connection to 192.168.75.22:3260 (111)

iscsiadm: connection to discovery address 192.168.75.22 failed

iscsiadm: cannot make connection to 192.168.75.22:3260 (111)

iscsiadm: connection to discovery address 192.168.75.22 failed

iscsiadm: cannot make connection to 192.168.75.22:3260 (111)

iscsiadm: connection to discovery address 192.168.75.22 failed

iscsiadm: cannot make connection to 192.168.75.22:3260 (111)

iscsiadm: connection to discovery address 192.168.75.22 failed

iscsiadm: cannot make connection to 192.168.75.22:3260 (111)

iscsiadm: connection to discovery address 192.168.75.22 failed

iscsiadm: connection login retries (reopen_max) 5 exceeded
```

----------

## bbgermany

Hallo,

so wie ich das mit iSCSI verstanden habe ist das folgendes:

Das Paket sys-block/iscsitarget ist ein Dienst, der die iSCSI-Targets bereit stellt. Auf der anderen Seite benötigst du dann einen passenden Client. Ich habe es mit open-iscsi versucht und kann das device bis dato nur sehen, aber nicht mounten. Als Alternative scheint das Paket sys-block/iscsi-initiator-core-tools den Client darzustellen.

Der Aufruf von iscsiadm ergibt bei mir folgendes:

```

walther@tpwast:/etc/iscsi$ sudo iscsiadm -m discovery -t sendtargets -p 192.168.0.15:3260

192.168.0.15:3260,1 iqn.org.go-linux.poseidon:iSCSI.test.disk1

walther@tpwast:/etc/iscsi$ 

```

Kann es sein, dass bei dir auf dem Rechner mit der IP 192.168.75.22 der iSCSI Server Dienst nicht gestartet ist?

----------

## tazinblack

 *bbgermany wrote:*   

> Hallo,
> 
> so wie ich das mit iSCSI verstanden habe ist das folgendes:
> 
> Das Paket sys-block/iscsitarget ist ein Dienst, der die iSCSI-Targets bereit stellt. Auf der anderen Seite benötigst du dann einen passenden Client. Ich habe es mit open-iscsi versucht und kann das device bis dato nur sehen, aber nicht mounten. Als Alternative scheint das Paket sys-block/iscsi-initiator-core-tools den Client darzustellen.
> ...

 

So sehe ich das auch !

 *Quote:*   

> 
> 
> Der Aufruf von iscsiadm ergibt bei mir folgendes:
> 
> ```
> ...

 

Also die NetApp sagt mir, dass er läuft. 

Deshalb hab ich mal versucht nen

```
nmap -sS 192.168.75.22 -p 3260

Starting Nmap 4.01 ( http://www.insecure.org/nmap/ ) at 2007-02-07 10:40 CET

Interesting ports on 192.168.75.22:

PORT     STATE  SERVICE

3260/tcp closed unknown

Nmap finished: 1 IP address (1 host up) scanned in 0.384 seconds

```

zu machen, aber wie Du siehst scheint der Port wirklich nicht aktiv zu sein, auch wenn die NetApp mir sagt, dass es anders ist.

Ich werd mal versuchen von ner Windose mit dem MS-Initiatior zu verbinden. Das sollte Aufschluss geben !

----------

## bbgermany

Also der Scan sollte schon zeigen, dass der Port offen ist:

```

dskpower:~ # nmap -sS 192.168.0.15 -p 3260

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2007-02-07 13:39 CET

Interesting ports on 192.168.0.15:

PORT     STATE SERVICE

3260/tcp open  unknown

Nmap run completed -- 1 IP address (1 host up) scanned in 0.387 seconds

dskpower:~ # 

```

Läuft da eine Firewall dazwischen?

EDIT: Ich habe vielleicht eine Möglichkeit gefunden wie du die Platten der NetApp via iSCSI an eine Client bekommst:

1. Installiere sys-block/iscsitarget auf dem Server (wenn du einen Kernel >=2.6.19 verwendest dann musst du via svn das holen).

```

svn checkout svn://svn.berlios.de/iscsitarget/trunk

```

2. Editiere deine die Datei /etc/ietd.conf und füge folgendes hinzu:

```

Target iqn.org.go-linux.poseidon:linux

        Lun 1 Path=/dev/hda7,Type=fileio

        MaxConnections          1

        InitialR2T              Yes

        ImmediateData           No

        MaxRecvDataSegmentLength 256 

        MaxXmitDataSegmentLength 256 

        MaxBurstLength          256

        FirstBurstLength        256

        DefaultTime2Wait        2

        DefaultTime2Retain      20

        MaxOutstandingR2T       1

        DataPDUInOrder          Yes

        DataSequenceInOrder     Yes

        ErrorRecoveryLevel      0

        HeaderDigest            CRC32C

        DataDigest              CRC32C

        various target parameters

        Wthreads                8

```

Passe das Target sowie Path an, auf die Partition die du freigeben willst.

3. Installier aus den Sourcen open-iscsi auf dem Client (wenn du Windows verwendest als Client, dann hol dir den MS iSCSI Initiator)

Mit den folgenden Kommandos holst du dir die iSCSI-Partition als "lokale" Platte an deinen Client:

```

$ sudo iscsiadm --mode discovery --type sendtargets --portal $IP:3260

$IP:3260,1 iqn.org.go-linux.poseidon:linux

$ sudo iscsiadm --mode node --targetname iqn.org.go-linux.poseidon:linux --portal $IP:3260 --login

$ fdisk -l

Disk /dev/sdb: 127.0 GB, 127072318464 bytes

255 heads, 63 sectors/track, 15448 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

$ 

```

Wenn du schon eine formatierte Partition hast, dann einfach mounten via:

```

$ mount /dev/sdb /$MOUNTPOINT

```

Ansonsten musst du dann noch eine Partition erstellen, formatieren und mounten. FERTIG  :Very Happy: 

4. Zum abmelden der Partition einfach umount /$MOUNTPOINT und via:

```

iscsiadm --mode node --targetname iqn.org.go-linux.poseidon:linux --portal $IP:3260 --logout

```

abmelden.

----------

## tazinblack

Hey ich habs hinbekommen !

Nachdem es unter Windos auch nicht ging hab ich festgestellt, dass ich auf der NetApp global ISCSI erst anschalten muss.

Jetzt gehts !

Wie immer natürlich vielen Dank für die Hilfe !

----------

## bbgermany

Na das ist doch mal etwas  :Smile: 

----------

