Internet Small Computer System Interface (iSCSI) è uno standard basato su IP per la connessione di dispositivi di archiviazione. iSCSI utilizza reti IP per incapsulare i comandi SCSI, consentendo il trasferimento dei dati su lunghe distanze. iSCSI fornisce storage condiviso tra diversi sistemi client. I dispositivi di archiviazione sono collegati ai server (target). I sistemi client (iniziatori) accedono ai dispositivi di archiviazione remoti su reti IP. Ai sistemi client, i dispositivi di archiviazione sembrano essere collegati localmente. iSCSI utilizza l'infrastruttura IP esistente e non richiede alcun cablaggio aggiuntivo, come nel caso delle reti di archiviazione Fibre Channel (FC).
Configurazione di un server iSCSI
RHEL/CentOS 7 utilizza il sottosistema di destinazione del kernel Linux-IO (LIO) per iSCSI. Oltre a iSCSI, LIO supporta una serie di strutture di storage tra cui Fibre Channel over Ethernet (FCoE), accesso iSCSI su reti Mellanox InfiniBand (iSER) e accesso SCSI su reti Mellanox InfiniBand (SRP). In RHEL 7, tutte le strutture di archiviazione vengono gestite con targetcli utilità.
Per configurare il sistema RHEL come server iSCSI, inizia installando il pacchetto software targetcli:
# yum install targetcli
L'installazione del pacchetto software targetcli installa anche python-rtslib pacchetto, che fornisce il /usr/lib/systemd/system/target.service file. Prima di utilizzare l'utilità targetcli per creare, eliminare e visualizzare le destinazioni di archiviazione, utilizzare il comando systemctl per abilitare e avviare il servizio di destinazione sul server iSCSI.
# systemctl enable target Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
# systemctl start target
Utilità targetcli
L'utilità targetcli è la shell di amministrazione per creare, modificare e visualizzare la configurazione del sottosistema di destinazione del kernel. Esegui targetcli per accedere alla shell di configurazione.
# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb46 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> help
Esegui la guida comando dal prompt di targetcli per visualizzare i comandi disponibili. Di seguito sono riportati alcuni dei comandi targetcli disponibili:
- ls :Visualizza la gerarchia degli oggetti.
- cd :attraversa la gerarchia degli oggetti.
- crea :crea oggetti di archiviazione, destinazioni, LUN, portali di rete, elenchi di controllo degli accessi.
- Esci :Esci dalla shell targetcli e salva automaticamente la configurazione.
Puoi anche inserire “targetcli [comando]”” per eseguire comandi senza entrare nella shell.
Backstore
I backstore sono i diversi tipi di risorse di archiviazione locali che la destinazione del kernel utilizza per "backup" i dispositivi SCSI che esporta nei sistemi client. Le mappature alle risorse di archiviazione locali create da ciascun backstore sono chiamate oggetti di archiviazione. Usa i cli di destinazione comando per elencare i diversi tipi di backstore.
# targetcli ls /backstores
I tipi di backstore sono descritti come segue:
- blocco :dispositivi a blocchi Linux come /dev/sda
- file :Qualsiasi file su un file system montato come /tmp/disk1.img
- pscsi :qualsiasi oggetto di archiviazione che supporti i comandi SCSI pass-through
- disco ram :dischi RAM per la copia in memoria
Per creare un backstore a blocchi dalla shell targetcli:
/> cd /backstores/block /backstores/block> create name=LUN_1 dev=/dev/xvdb
Per creare un backstore fileio dalla shell targetcli:
/> cd /backstores/fileio /backstores/fileio> create name=LUN_3 /root/disk1.img 5G
Creazione di una destinazione iSCSI
Per creare una destinazione iSCSI dalla shell targetcli, usa il comando cd per passare alla directory /iscsi.
/> cd /iscsi /iscsi>
Utilizzare il comando create senza alcun argomento per creare una destinazione iSCSI utilizzando un nome di destinazione predefinito. Per impostazione predefinita, il target è identificato da un "iqn ” identificatore. Questo è un Nome qualificato iSCSI (IQN) , che identifica in modo univoco una destinazione. Gli indirizzi in formato IQN sono più comunemente usati per identificare un target. Questo indirizzo è composto dai seguenti campi:
- Iqn letterale
- Data (in formato aaaa-mm) in cui l'autorità di denominazione ha assunto la proprietà del dominio
- Nome di dominio invertito dell'autorità
- Facoltativo ":" che antepone un nome di destinazione di archiviazione specificato dall'autorità di denominazione
/> cd /iscsi /iscsi> create Created target iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /iscsi>
Per elencare i target creati, usa il comando seguente.
# targetcli ls /iscsi
Per consentire ai sistemi remoti di accedere a una destinazione iSCSI sulla porta 3260, disabilitare il servizio firewalld sul server iSCSI o configurare firewalld in modo che consideri attendibile la porta 3260/tcp. L'esempio seguente utilizza firewall-cmd per aprire la porta 3260/tcp per il servizio firewalld.
# firewall-cmd --permanent --add-port=3260/tcp
Se includi il –permanente opzione quando si aggiunge una porta, utilizzare il comando firewall-cmd per ricaricare la configurazione.
# firewall-cmd –reload
Creazione di LUN iSCSI
La destinazione del kernel esporta le unità logiche SCSI in sistemi remoti. Utilizzare la shell targetcli per collegare gli oggetti di archiviazione definiti in precedenza con una destinazione e per specificare quale numero di unità logica (LUN) utilizza il dispositivo. L'esempio seguente utilizza il comando create per creare due nuovi LUN per una destinazione. Dalla shell targetcli, inizia usando il comando cd per passare alla directory luns all'interno della gerarchia [target/TGP].
/iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/ /iscsi/iqn.20....b0df6e328beb> cd tpg1/luns
I seguenti comandi creano una LUN dagli oggetti di archiviazione a blocchi definiti in precedenza.
/iscsi/iqn.20...beb/tpg1/luns> create /backstores/block/LUN_1 lun1 Created LUN 1.
Creazione di ACL
Gli elenchi di controllo di accesso (ACL) limitano l'accesso alle LUN da sistemi remoti. È possibile creare un ACL per ogni iniziatore per imporre l'autenticazione quando l'iniziatore si connette alla destinazione. Ciò consente di concedere a un iniziatore specifico l'accesso esclusivo a una destinazione specifica. L'esempio seguente usa il comando create per creare un ACL per un iniziatore. Dalla shell targetcli, inizia usando il comando cd per passare alla directory acls all'interno della gerarchia [target/TGP].
/> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/tpg1/acls /iscsi/iqn.20...beb/tpg1/acls> create iqn.1994-05.com.redhat:aabb51a64012 Created Node ACL for iqn.1994-05.com.redhat:aabb51a64012 Created mapped LUN 1.
Configurazione di un iniziatore iSCSI
Per configurare un sistema Linux come iniziatore iSCSI, installa iscsi-initiator-utils pacchetto software. Questo pacchetto è l'iniziatore Linux Open-iSCSI.
# yum install iscsi-initiator-utils
Il pacchetto installa diversi file inclusi i seguenti:
- /etc/iscsi/iscsid.conf :il file di configurazione letto da iscsid e iscsiadm. Questo file è pesantemente commentato con descrizioni per ogni direttiva di configurazione.
- /sbin/iscsid :il demone Open-iSCSI che implementa il percorso di controllo e le strutture di gestione
- /sbin/iscsiadm :l'utilità di amministrazione Open-iSCSI utilizzata per rilevare e accedere a destinazioni iSCSI
Modifica /etc/iscsi/initiatorname.iscsi file e sostituire il parametro InitiatorName con il nome dell'iniziatore configurato in precedenza come ACL sulla destinazione. C'è un nome iniziatore iscsi predefinito definito in questo file. Se hai utilizzato lo stesso nome durante la configurazione dell'ACL, non dovrai modificare nulla qui.
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:aabb51a64012
Utilizzare il comando systemctl per abilitare e avviare il servizio iscsid.
# systemctl enable iscsid # systemctl start iscsidComprensione dell'utilità iscsiadm in CentOS / RHEL
Scoperta iSCSI
La scoperta è il processo che rende noti gli obiettivi a un iniziatore. L'esempio seguente usa il metodo di rilevamento SendTargets per rilevare le destinazioni sull'indirizzo IP 192.168.12.13. Questo comando avvia anche il demone iscsid, se necessario.
# iscsiadm -m discovery --type sendtargets –p 192.168.12.13
Dopo il rilevamento, la tabella nodes e le tabelle send_targets nel database vengono aggiornate:
# ls /var/lib/iscsi/nodes iqn.2011-12.com.example.mypc:tgt1 iqn.2011-12.com.example.mypc:tgt2 iqn.2012-11.com.example.mypc:tgt3
# ls /var/lib/iscsi/send_targets 192.168.12.13,3260
Sessioni iniziatore iSCSI
Una sessione è una connessione TCP tra una porta del nodo iniziatore e una porta del nodo di destinazione. Le LUN non sono accessibili fino a quando non viene stabilita una sessione. Usa l'opzione -l (o –login) per stabilire una sessione:
# iscsiadm -m node -l
Per accedere a una destinazione specifica:
# iscsiadm -m node --targetname iqn.2011-12.com.example.mypc:tgt1 –p 192.0.2.102:3260 –l
Utilizzare l'opzione -u (o –logout) per chiudere una sessione. Per visualizzare le informazioni sulla sessione:
# iscsiadm -m session [-P [printlevel]]
I livelli di stampa sono 1, 2 e 3. Ciascuno mostra più dettagli.