Guida alle tecnologie

iSCSI: configurare server e client iscsitarget su Linux

5 min read Archiviazione Aggiornato 19 Oct 2025
iSCSI con iscsitarget — guida pratica
iSCSI con iscsitarget — guida pratica

iSCSI: panoramica rapida

iSCSI (Internet Small Computer Systems Interface) è un protocollo SAN che consente di esporre dischi/block device su una rete IP esistente. Definizione rapida: iSCSI mappa dischi remoti come dispositivi SCSI locali tramite TCP/IP.

Importante: questa configurazione è adatta per ambienti di laboratorio e test. Non è consigliata per produzione senza controlli aggiuntivi (ridondanza di rete, autenticazione CHAP, multipathing, backup, SLA).

1. Installazione e configurazione del server iSCSI

Questa sezione descrive l’installazione di iscsitarget e la configurazione di esempio su un host fisico.

1.a Compilazione del pacchetto iscsitarget

Questi comandi devono essere eseguiti sull’host fisico.

  • Scarica il tarball da SourceForge e posizionalo in /usr/local/src.
  • Accedi alla directory: cd /usr/local/src
  • Estrai i file: tar xvf iscsitarget-0.4.16.tar.gz cd iscsitarget-0.4.16
  • Compila e installa: make make install

Nota: i percorsi, le versioni e i nomi dei pacchetti possono variare in base alla distribuzione e all’epoca. Adattare i comandi al proprio sistema (es. build-essential, gcc, make, librerie dipendenza).

1.b Configurazione di esempio (ietd.conf)

Esempio di /etc/ietd.conf che definisce i LUN esposti ai guest. Conserva i Path così come sono se usi volumi LVM; altrimenti sostituisci con file o partizioni.

#/etc/ietd.conf
# NOTE: the config files has more entries than what i'm showing here.
# but i've commented out the original entries and made the following
Target iqn.2008-07.NODE00:LUN01.NODE00
   MaxConnections         2
   Lun 1 Path=/dev/Virtual00VG/lvLUN01,Type=fileio
   Alias LUN01
Target iqn.2008-07.NODE00:LUN02.NODE00
   MaxConnections         2
   Lun 2 Path=/dev/Virtual00VG/lvLUN02,Type=fileio
   Alias LUN02
# end of ietd.conf

Esempio pratico: sul mio host fisico ho creato due volumi logici da 50 GB ciascuno. Puoi usare anche file regolari o partizioni; in tal caso modifica gli entry Path.

1.c Controllo accessi (ACL)

iscsitarget utilizza /etc/initiators.allow e /etc/initiators.deny simili a hosts.allow/hosts.deny.

Esempio /etc/initiators.allow che autorizza node01 e node02:

#/etc/initiators.allow
#this should correspond to the definition in your /etc/ietd.conf
iqn.2008-07.NODE00:LUN01.NODE00 192.168.100.10, 192.168.100.20
iqn.2008-07.NODE00:LUN02.NODE00 192.168.100.10, 192.168.100.20
# endof initiators.allow

Avviare il servizio iscsi-target e abilitarlo all’avvio:

service iscsi-target start
chkconfig --add iscsi-target  
chkconfig iscsi-target on  
chkconfig --list iscsi-target

Uscita di esempio: iscsi-target 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Nota: i comandi di gestione dei servizi (service, chkconfig) sono tipici di RHEL/CentOS 5. Su sistemi più recenti usare systemctl.

2. Lato client (initiator)

Il pacchetto iscsi-initiator-utils dovrebbe essere installato. I comandi sotto sono esempi su RHEL/CentOS.

2.a Configurazione del client

  • Modifica /etc/iscsi/initiatorname.iscsi per definire l’InitiatorName.

  • Esempio: #/etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2008-07.NODE00:LUN01.NODE00 InitiatorName=iqn.2008-07.NODE00:LUN02.NODE00 # end of #/etc/iscsi/initiatorname.iscsi

  • Avvia il demone iscsid e scopri i target:

service iscsid start

Output d’esempio: Turning off network shutdown. Starting iSCSI daemon: [ OK ]

  • Scoperta dei target: iscsiadm -m discovery -t st -p node00

Esempio di discovery: 192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN01.NODE00 192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN02.NODE00

  • Avviare il servizio iscsi: service iscsi start

Uscita mostrata: iscsid (pid 964 963) is running... Setting up iSCSI targets: Login session [iface: default, target: \ iqn.2008-07.NODE00:LUN02.NODE00, portal: 192.168.222.1,3260] Login session [iface: default, target: iqn.2008-07.NODE00:LUN01.\ NODE00, portal: 192.168.222.1,3260] [ OK ]

  • Verifica i log e i dispositivi SCSI con dmesg e fdisk:
dmesg

Esempio (estratto): scsi0 : iSCSI Initiator over TCP/IP Vendor: IET Model: VIRTUAL-DISK Rev: 0 Type: Direct-Access ANSI SCSI revision: 04 scsi 0:0:0:2: Attached scsi generic sg0 type 0 SCSI device sda: 104857600 512-byte hdwr sectors (53687 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:2: Attached scsi disk sda ...

fdisk -l

Esempio (estratto): Disk /dev/sda: 53.6 GB, 53687091200 bytes Disk /dev/sdb: 53.6 GB, 53687091200 bytes Disk /dev/sda doesn't contain a valid partition table Disk /dev/sdb doesn't contain a valid partition table

Dopo aver ripetuto la stessa procedura su node02 e verificato che entrambi i nodi vedano i dischi (sda, sdb), si può procedere con la preparazione di un cluster a due nodi. Io ho usato questa configurazione per testare un Oracle 10gR2 RAC con ASM condiviso e OCFS2 su sistema a 64 bit.

Quando questo setup non è adatto (controesempi)

  • Non usare questa guida così com’è in produzione: manca autenticazione CHAP robusta, multipathing, QoS, monitoring e ridondanza di rete.
  • Non usare LUN condivisi senza un cluster-aware filesystem (es. OCFS2, GFS2) o senza un gestore di lock condiviso; rischi di corruzione dati.
  • Non utilizzare volumi senza backup e test di failover.

Alternative e integrazioni

  • Usare tgt o LIO (target) moderni invece di iscsitarget, perché ricevono aggiornamenti e supportano funzionalità moderne.
  • Aggiungere multipathd per ridondanza path e migliore performance.
  • Abilitare CHAP per autenticazione e/o iSCSI over VLAN dedicate per isolamento del traffico.
  • Per cluster di produzione, considerare protocollo NVMe-oF per latenza inferiore.

Mini-metodologia: passi essenziali per un test di laboratorio

  1. Preparare host fisico: creare volumi LVM o file immagine (es. dd if=/dev/zero of=/iscsi/lun1.img bs=1M count=51200).
  2. Installare iscsitarget e configurare /etc/ietd.conf con Target/Lun/Alias.
  3. Configurare /etc/initiators.allow per limitare l’accesso.
  4. Avviare iscsi-target e verificare con journal/log.
  5. Su client, impostare /etc/iscsi/initiatorname.iscsi, avviare iscsid, eseguire iscsiadm discovery e login.
  6. Verificare dispositivi con dmesg, fdisk; preparare filesystem cluster-aware o LVM condiviso.

Checklist per ruolo

  • Amministratore storage:

    • Creare volumi LVM da assegnare come LUN.
    • Testare I/O e latenza.
    • Documentare mapping IQN ↔ LUN.
  • Amministratore sistema (client):

    • Configurare initiatorname.iscsi.
    • Effettuare discovery e login.
    • Verificare visibilità disco e partizionamento.
  • Team di rete:

    • Isolare traffico iSCSI su VLAN dedicata.
    • Validare MTU e QoS.

Rischi principali e mitigazioni

  • Problema: corruzione dati per accesso concorrente senza filesystem cluster-aware.
    • Mitigazione: usare OCFS2/GFS2 o un cluster manager.
  • Problema: perdita rete/latency alta.
    • Mitigazione: reti ridondanti e monitoring.
  • Problema: accessi non autorizzati.
    • Mitigazione: CHAP, ACL, firewall e segmentazione.

Glossario (1 riga ciascuno)

  • LUN: Logical Unit Number, identificatore logico di un disco esposto.
  • IQN: iSCSI Qualified Name, identificatore univoco per target/initiator.
  • CHAP: protocollo di autenticazione challenge–response.
  • OCFS2: filesystem cluster-aware che permette accesso concorrente sicuro.

Conclusione

Questo tipo di configurazione è utile per imparare le basi del clustering e dello storage condiviso senza hardware aggiuntivo. Dopo aver sperimentato i passaggi qui descritti, potrai trasferire il concetto a setup fisici e pronti per la produzione, con le necessarie migliorie in sicurezza e disponibilità.

Ulteriori letture

Sommario: questa guida fornisce i passaggi pratici per compilare iscsitarget, configurare LUN e ACL, eseguire discovery dal client e verificare i dispositivi. Aggiunge suggerimenti su quando evitare questo setup, alternative moderne e checklist per i ruoli.

Autore
Redazione

Materiali simili

Aggiornare Ubuntu 12.04 a 14.04 LTS
Guide.

Aggiornare Ubuntu 12.04 a 14.04 LTS

Errore 0xc000001d su Windows: cause e soluzioni
Windows

Errore 0xc000001d su Windows: cause e soluzioni

Svuotare e gestire Luoghi recenti su macOS
macOS

Svuotare e gestire Luoghi recenti su macOS

Correggi errori 0x80070057, 0xa0000400 e Cortana
Windows

Correggi errori 0x80070057, 0xa0000400 e Cortana

Rimuovere aggiornamenti Windows problematici
Guide tecniche

Rimuovere aggiornamenti Windows problematici

Organizzare le schede in Firefox e Chrome
Produttività

Organizzare le schede in Firefox e Chrome