iSCSI auf Fedora 10 benutzen (Initiator und Target)

Version 1.0
Autor: Falko Timme


Diese Anleitung erklärt wie man einen iSCSI Target und einen iSCSI Initiator auf einen Fedora 10 einrichtet. Das iSCSI Prookoll ist ein Storage Area Netzwerk (SAN) Protokoll, also ein Archivierungsnetzwerk, das iSCSI I erlaubt Speichergeräte auf einen (Remote) iSCSI Target über das normale Ethernet-Kabel zu nutzen. Für den iSCSI Initiator sieht der Remote-Speicher wie eine lokal zugängliche Festplatte aus.

Ich gebe keine Gewährleistung dafür, dass es bei Dir genauso funktioniert!

1 Vorbemerkung

Ich benutze zwei Fedora 10 Server hier:
  • server1.example.com (Initiator): IP Adresse 192.168.0.100
  • server2.example.com (Target): IP Adresse 192.168.0.101

2 Das Target aufsetzen (Server2)

Server2:


Zunächst setzen wir den Target auf (server2). Da die notwendigen Pakete nur in der RPMFusion Repository erhältlich sind, müssen wir diese zuerst aktivieren:

rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm


Hiernach können wir die iSCSI Target Pakete installieren:

yum install iscsitarget kmod-iscsitarget


Das wird möglicherweise den Kernel aktualisieren. Falls das der Fall sein sollte, reboote bitte das System:

reboot


Wir können für die Archivierung Logical Volumes, Image Dateien, Festplatten (z.B. /dev/sdb), Festplattenpartitionen (z.B. /dev/sdb1) oder RAID Einheiten (z.B. /dev/md0). In diesem Beispiel erstelle ich ein Logical Volume von 20GB mit dem Namen storage_lun1 in der Volumen-Gruppe VolGroup00:

lvcreate -L20G -n storage_lun1 VolGroup00


Wenn Du eine Image Datei nutzen möchtest, kannst Du sie folgendermassen erstellen:

mkdir /storage
dd if=/dev/zero of=/storage/lun1.img bs=1024k count=20000

Das erstellt eine Image Datei /storage/lun1.img mit einer Grösse von 20GB.

)

Als Nächstes editieren wir /etc/ietd.conf...

vi /etc/ietd.conf


... und kommentieren alles aus dieser Datei aus. Am Ende fügen wir folgende Zeilen hinzu:
[...]
Target iqn.2001-04.com.example:storage.lun1 IncomingUser someuser secret OutgoingUser Lun 0 Path=/dev/VolGroup00/storage_lun1,Type=fileio Alias LUN1 #MaxConnections 6
Der Name des Targets muss ein eindeutig sein, der iSCSI Standard definiert den "iSCSI Qualified Name" wie folgt: iqn.yyyy-mm.<reversed domain name>[:identifier]; yyyy-mm ist das Datum ab wann die Domain gültig ist, der Identifier ist frei auszuwählen. Die Zeile The IncomingUser enthält einen Benutzername und ein Passwort so dass nur Initiatoren (Benutzer) die die Zugangsdaten haben, sich einloggen können und die Archivierung nutzen können, wenn diese Authentifizierung nicht benötigt wird, dann braucht man in der IncomingUser Zeile keinen Benutzernamen und Passwort anzugeben.. In der Lun Zeile müssen wir den vollständigen Pfad zum Archiv angeben (z. B. /dev/VolGroup00/storage_lun1, /storage/lun1.img, /dev/sdb, etc.).

Nun teilen wir dem Target mit, dass wir Verbindungen zur iqn.2001-04.com.example:storage.lun1 Archivierungseinheit von der IP Adresse 192.168.0.100 (server1.example.com) erlauben wollen:

vi /etc/initiators.allow

[...]
iqn.2001-04.com.example:storage.lun1 192.168.0.100
Als Nächstes erstellen wir einen Symlink für iscsi-target und starten ihn:

chkconfig --levels 235 iscsi-target on
/etc/init.d/iscsi-target start

3 Den Initiator aufsetzen (server1)

server1:


Auf server1 installieren wir den Initiator:

yum install iscsi-initiator-utils


Als Nächstes öffnen wir /etc/iscsi/iscsid.conf...

vi /etc/iscsi/iscsid.conf


... und versichern uns dass node.startup als automatic eingestellt ist:
[...]
node.startup = automatic [...]
Nun verbinden wir uns mit dem Target (server2) und überprüfen welche Archivierungseinheiten angeboten werden:

iscsiadm -m discovery -t st -p 192.168.0.101


[root@server1 init.d]# iscsiadm -m discovery -t st -p 192.168.0.101
Starting iscsid:                                           [  OK  ]
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
[root@server1 init.d]#

iscsiadm -m node


[root@server1 init.d]# iscsiadm -m node
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
[root@server1 init.d]#

Die Einstellungen für das Archivierungseinheit iqn.2001-04.com.example:storage.lun1 auf 192.168.0.101:3260,1 sind in der /var/lib/iscsi/nodes/iqn.2001-04.com.example:storage.lun1/192.168.0.101,3260,1/default Datei archiviert. Wir können in dieser Datei Benutzernamen und Passwort für das Target einrichten. Anstatt die Datei manuell zu editieren, können wir den iscsiadm Befehl dafür nutzen:

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --op=update --name node.session.auth.authmethod --value=CHAP
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --op=update --name node.session.auth.username --value=someuser
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --op=update --name node.session.auth.password --value=secret

Nun können wir uns einloggen:

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --login


[root@server1 init.d]# iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --login
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]
Login to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]: successful
[root@server1 init.d]#

(Wenn Du Dich einloggen möchtest, kannst Du folgendes ausführen:

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --logout


)

In der Ausgabe von

fdisk -l


solltest Du nun eine neue Festplatte finden (/dev/sdb in diesem Beispiel); das ist unsere iSCSI Archivierungseinheit:

[root@server1 init.d]# fdisk -l


Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000d5f46

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          25      200781   83  Linux
/dev/sda2              26        3916    31254457+  8e  Linux LVM

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table
[root@server1 init.d]#

Umd diese Einheit zu nutzen, müssen wir diese formatieren:

fdisk /dev/sdb


[root@server1 init.d]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xa1870fdd.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

The number of cylinders for this disk is set to 20480.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): <-- n Command action
e   extended
p   primary partition (1-4)
<-- p Partition number (1-4): <-- 1 First cylinder (1-20480, default 1): <-- ENTER Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-20480, default 20480):
<-- ENTER Using default value 20480
Command (m for help): <-- t Selected partition 1
Hex code (type L to list codes):
<-- L
0  Empty           1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris
1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-
2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx
5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data
6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .
7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility
8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt
9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access
a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O
b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor
c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs
e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  GPT
f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
Hex code (type L to list codes):
<-- 83
Command (m for help): <-- w The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@server1 init.d]#

Danach sollte die Ausgabe

fdisk -l


folgendermassen aussehen:

[root@server1 init.d]# fdisk -l


Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000d5f46

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          25      200781   83  Linux
/dev/sda2              26        3916    31254457+  8e  Linux LVM

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0xa1870fdd

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       20480    20971504   83  Linux
[root@server1 init.d]#

Danach ertsellen wir ein Dateisystem auf /dev/sdb1...

mkfs.ext3 /dev/sdb1


... und mounten es für Testzwecke:

mount /dev/sdb1 /mnt


Nun solltest Du die neue Einheit in der Ausgabe von...

mount


[root@server1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
/proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /mnt type ext3 (rw)
[root@server1 ~]#

... und

df -h


[root@server1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
29G  2.2G   25G   9% /
/dev/sda1             190M   13M  168M   8% /boot
tmpfs                 251M     0  251M   0% /dev/shm
/dev/sdb1              20G  173M   19G   1% /mnt
[root@server1 ~]#

Unmounten kann man es folgendermassen:

umount /mnt


Um die Einheit automatisch während des Bootens zu mounten, z.B. im Verzeichnis /storage, erstellen wir dieses Verzeichnis:.

mkdir /storage


... und fügen folgende Zeile zu /etc/fstab hinzu:

vi /etc/fstab

[...]
/dev/sdb1 /storage ext3 defaults,auto,_netdev 0 0
Für einen Test kannst Du nun das System neu starten:

reboot


Nach dem Neustart sollte die Einheit gemountet sein:

mount


[root@server1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
/proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /storage type ext3 (rw,_netdev)
[root@server1 ~]#

df -h


[root@server1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
29G  2.2G   25G   9% /
/dev/sda1             190M   13M  168M   8% /boot
tmpfs                 251M     0  251M   0% /dev/shm
/dev/sdb1              20G  173M   19G   1% /storage
[root@server1 ~]#

4 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte