Installazione iSCSI Initiator e Target su Debian 6

storageSistema richiesto e requisiti

Debian 6 (Squeeze) 64-bit Linux: 2.6.32-5-amd64 (usato in questo tutorial)

I sistemi da configurare

Ho usato due server debian. Un Initiator e un Target:
Initiator: server1.example.com – IP 192.168.1.100
Target: server2.example.com – IP 192.168.1.101

Installazione Debian

Installare Debian su entrambi i server senza alcun extra, deselezionare tutte le opzioni del menu Tasksel. Se l’installazione deve essere gestita in remoto, il servizio openssh può essere installato.

Configurazione Target – server2

Andare sul server 2 (192.168.1.101) e installare dai repository proprietari:

apt-get install iscsitarget iscsitarget-dkms

Aprire il file “/etc/default/iscsitarget”:

nano /etc/default/iscsitarget

localizzare la variabile “ISCSITARGET_ENABLE”:

ISCSITARGET_ENABLE=false

Cambiare in “true”:

ISCSITARGET_ENABLE=true

 

Configurazione spazio su disco

Il nome del Target deve essere globalmente univoco.Lo standard iSCSI definisce la “iSCSI Qualified Name” come segue:

iqn.[yyyy-mm].[reversed domain name]:[vg].[vol]

un altro esempio

iqn.2001-04.com.example:storage.lun1

La sintassi di denominazione è la seguente:

iqn = iSCSI Qualified Name
2001-04 = Date that the Organization Registered
com.example = Domain Name listed backwards
storage = Volume Group Name
lun1 = Volume Name

Storage Alternativo 1

Usare un volume logico di 20GB chiamato “storage_lun1” in un gruppo “vg0” come configurato:

lvcreate -L20G -n storage_lun1 vg0

Editare il file  “/etc/iet/ietd.conf”:

nano /etc/iet/ietd.conf

Assicurarsi che tutto nel file è commentato e alla fine, aggiungere la seguente configurazione:

Target iqn.2001-04.com.example:storage.lun1
        IncomingUser myuser mysecret
        OutgoingUser
        Lun 0 Path=/dev/vg0/storage_lun1,Type=fileio
        Alias LUN1
        #MaxConnections  6

Storage Alternativo 2

usare un immagine iso

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

Editare il file “/etc/iet/ietd.conf “:

nano /etc/iet/ietd.conf

Assicurarsi che tutto nel file è commentato e alla fine, aggiungere la seguente configurazione:

Target iqn.2001-04.com.example:storage.lun1
        IncomingUser myuser mysecret
        OutgoingUser
        Lun 0 Path=/storage/lun1.img,Type=fileio
        Alias LUN1
        #MaxConnections  6

Abilitare le connessioni

Aprire il “/etc/iet/initiators.allow”:

nano /etc/iet/initiators.allow

Aggiungere la seguente riga

iqn.2001-04.com.example:storage.lun1 192.168.1.100

Start del servizio Target

/etc/init.d/iscsitarget start

o

service iscsitarget start

 

Configurazione Initiator – server1

Andare sul server 1 (192.168.1.100) e installare dai repository proprietari:

apt-get install open-iscsi

aprire il file  “/etc/iscsi/iscsid.conf”:

nano /etc/iscsi/iscsid.conf

localizzare la variabile “node.startup”:

node.startup = manual

cambiare in “automatic”:

node.startup = automatic

restart initiator

/etc/init.d/open-iscsi restart

Connettere al target (server 2) e verificare se è stato montato lo storage.

Verifica il nodo

le impostazione per lo storage “iqn.2001-04.com.example:storage.lun1” su “192.168.0.101:3260,1” sono memorizzate nel file:

/etc/iscsi/nodes/iqn.2001-04.com.example:storage.lun1/192.168.0.101,3260,1/default

L’username (myuser) e la Password (mysecret) per il target deve essere impostato in questo file.Questo può essere modificato il file manualmente, oppure utilizzando il comando “iscsiadm”:

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.1.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.1.101:3260" --op=update --name node.session.auth.username --value=myuser 
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.1.101:3260" --op=update --name node.session.auth.password --value=mysecret

Login:Login al target, può essere fatto sia da:

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

 

Logging in to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.1.101,3260]
Login to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.1.101,3260]: successful

sia riavviando l’ initiator:

/etc/init.d/open-iscsi restart

o

service open-iscsi restart

Logout: Se bisogna fare il logout per un test il comando è:

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

Configurazione del Disco

Fare un check del disco:

fdisk -l

Output di esempio:

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00029d5c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        3793    30461952   83  Linux
/dev/sda2            3793        3917      992257    5  Extended
/dev/sda5            3793        3917      992256   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Dal momento che “/dev/sdb” è un disco non partizionato, fdisk segnala che non ci sono tabelle di partizione valida sul disco.Per impostare una tabella delle partizioni, utilizzare il comando “fdisk”:

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 0x882944df.
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): <-- m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

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 or +size or +sizeM or +sizeK (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       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
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.

Controllare il disco con “fdisk”:

fdisk -l

 

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00029d5c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        3793    30461952   83  Linux
/dev/sda2            3793        3917      992257    5  Extended
/dev/sda5            3793        3917      992256   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x45bc2c81

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       20480    20971504   83  Linux

Creare un filesystem su  “/dev/sdb1”:

mkfs.ext4 /dev/sdb1

Testing il drive iSCSI

Montare l’unità come unità fisica ordinaria:

mount /dev/sdb1 /mnt

Controllare il punto di montaggio:

mount

 

/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /mnt type ext4 (rw)

Controllare lo spazio su disco:

df -h

 

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              29G  807M   27G   3% /
tmpfs                 249M     0  249M   0% /lib/init/rw
udev                  244M  108K  244M   1% /dev
tmpfs                 249M     0  249M   0% /dev/shm
/dev/sdb1              20G  172M   19G   1% /mnt

 

Per rendere il montaggio automatico all’avvio creare una directory “storage”:

mkdir /var/storage

Editare il file “/etc/fstab”:

nano /etc/fstab

aggiungere la riga:

/dev/sdb1       /storage        ext4    defaults,auto,_netdev 0 0

FINE