iSCSI bàsic (target i initiator)

Objectiu:

La idea d’aquest petit tutorial és explicar d’una manera bàsica com instal·lar i configurar un target iSCSI i un initiator en Linux. Com sempre ens basarem en una instal·lació bàsica de Debian o Ubuntu.

El target que utilitzarem és ietd (iSCSI Enterprise Target) i l’initiator serà open-iscsi.

Per que iSCSI?

Amb l’alta acceptació que els sistemes d’emmagatzematge remot (SAN i NAS) estan tenint avui dia en l’entorn d’empresa feia falta un sistema que permetés de manera assequible, econòmicament parlant, de muntar el que la fibra òptica ofereix a preus força més alts.

iSCSI ens permet exportar unitats, fitxers, particions LVM o RAID per xarxa i fer que el sistema que els importa els vegi com a una unitat SCSI local (/dev/sdX).

Obtenció del software necessari:

Pel target utilitzarem ietd (iSCSI Enterprise Target). Aquest programari no està en els repositoris de Debian ni d’Ubuntu a dia d’avui pel que ens descarregarem el codi font i el compilarem en la nostra distribució.

Per obtenir el codi fem:

$ wget http://heanet.dl.sourceforge.net/sourceforge/iscsitarget/iscsitarget-0.4.16.tar.gz

Si visiteu la pàgina oficial a iscsitarget.sourceforge.net pot ser que existeixi una versió més nova.

Per a open-iscsi la cosa és molt més simple ja que es troba en els repositoris APT:

$ apt-get install open-iscsi

Configuració del target:

Un cop descarregat el programari passem a compilar-lo. Abans però ens farà falta instal·lar un parell de paquets més:

$ apt-get install build-essential linux-headers-`uname -r` linux-source-2.6.18 libssl-dev

El paquet linux-source-2.6.18 correspon al codi font del kernel. Pot ser que la versió no sigui la mateixa en el vostre Debian o Ubuntu.

Ara sí, compilem:

$ tar zxvf iscsitarget-0.4.16.tar.gz
$ cd iscsitarget-0.4.16
$ make
$ make install

Fem una còpia de l’arxiu original de configuració per a futures referències:

$ cp /etc/ietd.conf /etc/ietd.conf.orig

Passarem a exportar una unitat mitjançant aquest arxiu:

$ cat /etc/ietd.conf
Target iqn.2008-04.com.exemple:storage
    Lun 0 Path=/dev/VolGroup00/LVData,Type=fileio

D’aquesta configuració s’ha de tenir en compte:

  • iqn.2008-04.com.exemple:storage és el nom que farem servir per a importar en la màquina remota. Aquest nom no és aleatori, es munta a partir de:
    • iqn: inici estàndard del qualificador
    • 2008-04: data de l’alta de l’exportació
    • com.exemple: domini al revés de la nostra xarxa
    • storage: nom comú
  • Path pot incloure unitats LVM, RAID, dispositius sencers (/dev/hdX, /dev/drbdX, …) o arxius.

Afegim ietd als serveis a arrencar a l’arrencada del sistema:

$ update-rc.d iscsi-target defaults

Finalment arranquem el servei:

/etc/init.d/iscsi-target start

El servei escolta en el port 3260/tcp.

Amb aixó ja tenim el target preparat per acceptar peticions dels clients.

Configuració de l’initiator:

La configuració de l’initiator és força directa, s’han de seguir una sèrie de passos trivials i tindrem una nova unitat disponible. El primer que s’ha de fer és consultar al target quines unitats ofereix, això ho farem amb la següent comanda:

$ iscsiadm -m discovery -t sendtargets -p ip_iscsi_target

Podem comprobar que realment s’han descobert els serveis amb:

$ iscsiadm -m discovery
ip_iscsi_target:3260 via sendtargets

Fem login al dispositiu trobat amb:

$ iscsiadm -m node -T iqn.2008-04.com.exemple:storage -p ip_iscsi_target --login

NOTA IMPORTANT: abans de login hi ha dos guions.

Si, més tard, ens fes falta extreure la unitat el procés és molt similar:

$ iscsiadm -m node -T iqn.2008-04.com.exemple:storage -p ip_iscsi_target --logout

Després d’executar aquesta comanda podem veure en el dmesg que efectivament s’ha connectat una nova unitat scsi al sistema local:

scsi0 : iSCSI Initiator over TCP/IP
PM: Adding info for No Bus:host0
PM: Adding info for No Bus:session0
PM: Adding info for No Bus:connection0:0
PM: Adding info for No Bus:target0:0:0
Vendor: IET       Model: VIRTUAL-DISK      Rev: 0
Type:   Direct-Access                      ANSI SCSI revision: 04
PM: Adding info for scsi:0:0:0:0
SCSI device sda: 20971520 512-byte hdwr sectors (10737 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
SCSI device sda: 20971520 512-byte hdwr sectors (10737 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
sda: unknown partition table
sd 0:0:0:0: Attached scsi disk sda

Aquestes dades poden variar en funció del sistema i del tractament que es faci de les unitats SCSI. En qualsevol cas ens fem una idea.

Tenim, doncs, el disc /dev/sda disponible i el podem tractar com si fos un més. El podem particionar amb fdisk, crear sistemes de fitxers (ext3, ocfs, ntfs…), muntar-lo, etc.

Més informació:

Com sempre, es recomana llegir els manuals de referència:

Per a ietd podem consultar:

$ man ietd.conf
$ man ietd
$ man ietadm

el Wiki d’ietd a http://iscsitarget.sourceforge.net/wiki/index.php/Main_Page

Per a open-iscsi podem consultar:

$ man iscsiadm