6 Installazione di iSCSI Gateway #
iSCSI è un protocollo di rete dell'area di storage (SAN) che consente ai
client (denominati iniziatori) di inviare comandi SCSI
ai dispositivi di storage SCSI (destinazioni) su server
remoti. SUSE Enterprise Storage 7 include una struttura che apre la gestione
dello storage Ceph a client eterogenei, come Microsoft Windows* e VMware*
vSphere, attraverso il protocollo iSCSI. L'accesso iSCSI multipath garantisce
disponibilità e scalabilità per questi client e il protocollo iSCSI
standardizzato fornisce inoltre un ulteriore livello di isolamento di
sicurezza tra i client e il cluster SUSE Enterprise Storage 7. La struttura
di configurazione è denominata
ceph-iscsi
. Con
ceph-iscsi
, gli amministratori dello
storage Ceph possono definire volumi soggetti a thin-provisioning, replicati,
a elevata disponibilità che supportano snapshot di sola lettura, cloni di
scrittura-lettura e ridimensionamento automatico con il dispositivo di blocco
RADOS (RBD) Ceph. Gli amministratori possono quindi esportare i volumi
tramite un singolo host gateway
ceph-iscsi
o tramite più host gateway
che supportano il failover multipath. Gli host Linux, Microsoft Windows e
VMware possono collegarsi a volumi che utilizzano il protocollo iSCSI, che li
rende disponibili come altri dispositivi di blocco SCSI. Questo significa che
i clienti di SUSE Enterprise Storage 7 possono efficacemente eseguire un
sottosistema completo dell'infrastruttura di storage di blocco su Ceph che
fornisce tutte le funzioni e vantaggi di un SAN convenzionale, consentendo la
crescita futura.
Questo capitolo presenta informazioni dettagliate per configurare un'infrastruttura del cluster Ceph insieme con un iSCSI Gateway, in modo che gli host client possano utilizzare da remoto i dati memorizzati come dispositivi di storage locale con il protocollo iSCSI.
6.1 Storage di blocco iSCSI #
iSCSI è un'implementazione del set di comandi Small Computer System Interface (SCSI) mediante il Protocollo Internet (IP), specificato in RFC 3720. iSCSI è implementato come servizio dove un client (l'iniziatore) parla a un server (la destinazione) tramite una sessione sulla porta TCP 3260. Una porta e un indirizzo IP della destinazione iSCSI sono denominati portale iSCSI, dove una destinazione può essere esposta attraverso uno o più portali. La combinazione di una destinazione e uno o più portali è detta gruppo portale di destinazione (target portal group, TPG).
Il protocollo dello strato collegamento dati sottostante per iSCSI è di solito Ethernet. Più specificamente, le moderne infrastrutture iSCSI utilizzano reti Ethernet 10 GigE o più veloci per una velocità effettiva ottimale. Si consiglia la connettività Ethernet 10 Gigabit tra iSCSI Gateway e il cluster Ceph back-end.
6.1.1 La destinazione iSCSI Kernel Linux #
La destinazione iSCSI Kernel Linux era in origine denominata LIO per
linux-iscsi.org
, il dominio originale e sito Web del
progetto. Per qualche tempo, erano disponibili per la piattaforma Linux non
meno di quattro implementazioni di destinazione iSCSI in concorrenza, ma
LIO alla fine ha prevalso come singola destinazione di riferimento iSCSI.
Il codice kernel mainline di LIO utilizza il semplice ma certamente ambiguo
nome "destinazione", che distingue tra "core di destinazione" e una varietà
di moduli di destinazione front-end e back-end.
Il modulo front-end più comunemente utilizzato è iSCSI. Tuttavia, LIO supporta anche i protocolli Fibre Channel (FC), Fibre Channel over Ethernet (FCoE) e diversi altri protocolli front-end. Attualmente, è supportato da SUSE Enterprise Storage solo il protocollo iSCSI.
Il modulo back-end di destinazione più utilizzato è quello in grado di riesportare semplicemente qualsiasi dispositivo di blocco disponibile sull'host di destinazione. Questo modulo è denominato iblock. Tuttavia, LIO ha anche un modulo back-end specifico RBD che supporta l'accesso I/O multipercorso parallelizzato alle immagini RBD.
6.1.2 Iniziatori iSCSI #
Questa sezione presenta brevi informazioni sugli iniziatori iSCSI utilizzati su piattaforme Linux, Microsoft Windows e VMware.
6.1.2.1 Linux #
L'iniziatore standard per la piattaforma Linux è
open-iscsi
. open-iscsi
lancia un daemon, iscsid
, che l'utente può quindi
utilizzare per rilevare destinazioni iSCSI su qualsiasi portale dato,
accedere alle destinazioni e mappare volumi iSCSI.
iscsid
comunica con il livello mediano SCSI per
creare dispositivi di blocco nel kernel, che il kernel può quindi trattare
come altri dispositivi di blocco SCSI nel sistema. L'iniziatore
open-iscsi
può essere distribuito insieme con la
facility Device Mapper Multipath (dm-multipath
)
per fornire un dispositivo di blocco iSCSI ad alta disponibilità.
6.1.2.2 Microsoft Windows e Hyper-V #
L'iniziatore iSCSI di default per il sistema operativo Microsoft Windows è l'iniziatore Microsoft iSCSI. Il servizio iSCSI può essere configurato tramite un'interfaccia grafica utente (GUI) e supporta I/O multipercorso per alta disponibilità.
6.1.2.3 VMware #
L'iniziatore iSCSI di default per VMware vSphere ed ESX è l'iniziatore
iSCSI del software VMware ESX, vmkiscsi
. Quando
abilitato, può essere configurato dal client vSphere o mediante il comando
vmkiscsi-tool
. È quindi possibile formattare i volumi
di storage connessi attraverso l'adattatore di storage vSphere iSCSI con
VMFS e utilizzarli come altri dispositivi di storage VM. L'iniziatore
VMware supporta anche I/O multipercorso per alta disponibilità.
6.2 Informazioni generali su ceph-iscsi
#
ceph-iscsi
combina i vantaggi dei
dispositivi di blocco RADOS con la versatilità diffusa di iSCSI. Impiegando
ceph-iscsi
su un host di
destinazione iSCSI (noto come iSCSI Gateway), qualsiasi applicazione che
deve utilizzare uno storage di blocco può trarre vantaggio da Ceph, anche se
non utilizza alcun protocollo del client Ceph. Al contrario, gli utenti
possono utilizzare iSCSI o un altro protocollo front-end di destinazione per
collegarsi a una destinazione LIO che traduce tutti gli I/O di destinazione
in operazioni di storage RBD.
ceph-iscsi
è intrinsecamente a
elevata disponibilità e supporta operazioni multipath. Perciò, gli host
iniziatori a valle possono utilizzare più iSCSI Gateway per alta
disponibilità e scalabilità. Quando si comunica con una configurazione iSCSI
con più gateway, gli iniziatori possono bilanciare il carico delle richieste
iSCSI tra più gateway. Nel caso in cui un gateway sia in errore,
temporaneamente irraggiungibile o disattivato per manutenzione, gli I/O
continueranno in modo trasparente attraverso un altro gateway.
6.3 Considerazioni sulla distribuzione #
Una configurazione minima di SUSE Enterprise Storage 7 con
ceph-iscsi
contiene i componenti
seguenti:
Un cluster di storage Ceph. Il cluster Ceph consiste di un minimo di quattro server fisici contenenti almeno otto OSD (object storage daemon) ciascuno. In tale configurazione, tre nodi OSD raddoppiano come host monitor (MON).
Un server di destinazione iSCSI che esegue la destinazione LIO iSCSI, configurato tramite
ceph-iscsi
.Un host iniziatore iSCSI, che esegue
open-iscsi
(Linux), l'iniziatore Microsoft iSCSI (Microsoft Windows) o qualsiasi altra implementazione di iniziatore iSCSI compatibile.
Una configurazione di produzione raccomandata di SUSE Enterprise Storage 7
con ceph-iscsi
consiste di:
Un cluster di storage Ceph. Un cluster Ceph di produzione consiste di un numero qualsiasi di (in genere oltre 10) nodi OSD, ciascuno che esegue in genere 10-12 OSD (object storage daemon), con non meno di tre host MON dedicati.
Diversi server di destinazione iSCSI che eseguono la destinazione LIO iSCSI, configurati tramite
ceph-iscsi
. Per bilanciamento di carico e failover iSCSI, questi server devono eseguire un kernel che supporti il modulotarget_core_rbd
. Dal canale di manutenzione SUSE Linux Enterprise Server sono disponibili pacchetti di aggiornamento.Un numero a scelta di host iniziatori iSCSI, che eseguono
open-iscsi
(Linux), l'iniziatore Microsoft iSCSI (Microsoft Windows) o qualsiasi altra implementazione di iniziatore iSCSI compatibile.
6.4 Installazione e configurazione #
Questa sezione descrive i passaggi per installare e configurare un iSCSI Gateway su SUSE Enterprise Storage.
6.4.1 Distribuzione di iSCSI Gateway in un cluster Ceph #
Analogamente agli altri servizi Ceph, Ceph iSCSI Gateway viene distribuito tramite cephadm. Per ulteriori informazioni, vedere Sezione 5.4.3.5, «Distribuzione di iSCSI Gateway».
6.4.2 Creazione di immagini RBD #
Le immagini RBD vengono create nello store Ceph e quindi esportate in
iSCSI. Per questo scopo, si consiglia di utilizzare un pool RADOS dedicato.
È possibile creare un volume da qualsiasi host in grado di collegarsi al
cluster di storage mediante l'utility della riga di comando Ceph
rbd
. Ciò richiede che il client abbia almeno un file di
configurazione ceph.conf
minimo e appropriate
credenziali di autenticazione CephX.
Per creare un nuovo volume per la successiva esportazione tramite iSCSI,
utilizzare il comando rbd create
, specificando la
dimensione del volume in megabyte. Ad esempio, per creare un volume da
100 GB denominato testvol
nel pool con il nome
iscsi-images
, eseguire:
cephuser@adm >
rbd --pool iscsi-images create --size=102400 testvol
6.4.3 Esportazione di immagini RBD tramite iSCSI #
Per esportare le immagini RBD tramite iSCSI, è possibile utilizzare
l'interfaccia Web del Ceph Dashboard o l'utility gwcli
ceph-iscsi
. Questa sezione è
incentrata esclusivamente su gwcli e illustra come creare una destinazione
iSCSI in grado di esportare un'immagine RBD tramite la riga di comando.
Non è possibile esportare tramite iSCSI le immagini RBD con le proprietà seguenti:
immagini con la funzione di
journaling
abilitataimmagini con un'
unità di striping
inferiore a 4096 byte
Come root
, immettere il container
di iSCSI Gateway:
root #
cephadm enter --name CONTAINER_NAME
Da root
, avviare l'interfaccia
riga di comando di iSCSI Gateway:
root #
gwcli
Andare a iscsi-targets
e creare una destinazione con il
nome
iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
:
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> create iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
Creare gli iSCSI Gateway specificando il nome (name
) e
l'indirizzo ip
del gateway:
gwcli >
/iscsi-targets> cd iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/gatewaysgwcli >
/iscsi-target...tvol/gateways> create iscsi1 192.168.124.104gwcli >
/iscsi-target...tvol/gateways> create iscsi2 192.168.124.105
Utilizzare il comando help
per visualizzare l'elenco
dei comandi disponibili nel nodo di configurazione corrente.
Aggiungere l'immagine RBD denominata testvol
nel pool
iscsi-images
:
gwcli >
/iscsi-target...tvol/gateways> cd /disksgwcli >
/disks> attach iscsi-images/testvol
Mappare l'immagine RBD alla destinazione:
gwcli >
/disks> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/disksgwcli >
/iscsi-target...testvol/disks> add iscsi-images/testvol
È possibile utilizzare strumenti di livello inferiore, come
targetcli
, per interrogare la configurazione locale, ma
non per modificarla.
È possibile utilizzare il comando ls
per rivedere la
configurazione. Alcuni nodi di configurazione supportano inoltre il
comando info
, che può essere utilizzato per
visualizzare altri dettagli.
Tenere presente che, l'autenticazione ACL è abilitata per default, pertanto questa destinazione non è ancora accessibile. Consultare la Sezione 6.4.4, «Autenticazione e controllo dell'accesso» per ulteriori informazioni sull'autenticazione e il controllo dell'accesso.
6.4.4 Autenticazione e controllo dell'accesso #
L'autenticazione iSCSI è flessibile e include diverse possibilità di autenticazione.
6.4.4.1 Disabilitazione dell'autenticazione ACL #
No Authentication indica che qualsiasi iniziatore potrà accedere ai LUN sulla destinazione corrispondente. È possibile abilitare l'impostazione No Authentication disabilitando l'autenticazione ACL:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> auth disable_acl
6.4.4.2 Uso dell'autenticazione ACL #
Se si utilizza l'autenticazione ACL basata sul nome di iniziatore, la connessione è consentita soltanto agli iniziatori definiti. È possibile definire un iniziatore come indicato di seguito:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> create iqn.1996-04.de.suse:01:e6ca28cc9f20
Gli iniziatori definiti potranno eseguire la connessione, ma disporranno dell'accesso soltanto alle immagini RBD aggiunte esplicitamente all'iniziatore:
gwcli >
/iscsi-target...:e6ca28cc9f20> disk add rbd/testvol
6.4.4.3 Abilitazione dell'autenticazione CHAP #
Oltre all'autenticazione ACL, è possibile abilitare l'autenticazione CHAP specificando un nome utente e una password per ciascun iniziatore:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts/iqn.1996-04.de.suse:01:e6ca28cc9f20gwcli >
/iscsi-target...:e6ca28cc9f20> auth username=common12 password=pass12345678
I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e
possono contenere caratteri alfanumerici, .
,
@
, -
, _
oppure
:
.
Le password devono avere una lunghezza compresa tra 12 e 16 caratteri e
possono contenere caratteri alfanumerici, @
,
-
, _
o /
..
Facoltativamente, è possibile abilitare anche l'autenticazione CHAP
reciproca specificando i parametri mutual_username
e
mutual_password
nel comando auth
.
6.4.4.4 Configurazione dell'autenticazione rilevazione e dell'autenticazione reciproca #
L'autenticazione rilevazione è indipendente dai metodi di autenticazione descritti in precedenza. Richiede le credenziali per la navigazione, è facoltativa e può essere configurata tramite:
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> discovery_auth username=du123456 password=dp1234567890
I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e
possono contenere solo lettere, .
,
@
, -
, _
oppure
:
.
Le password devono avere una lunghezza compresa tra 12 e 16 caratteri e
possono contenere solo lettere, @
,
-
, _
oppure /
.
Facoltativamente, è possibile specificare anche i parametri
mutual_username
e mutual_password
nel
comando discovery_auth
.
È possibile disabilitare l'autenticazione rilevazione tramite il comando seguente:
gwcli >
/iscsi-targets> discovery_auth nochap
6.4.5 Configurazione delle impostazioni avanzate #
È possibile configurare ceph-iscsi
con parametri avanzati che vengono quindi trasmessi alla destinazione di
I/O di LIO. Tali parametri sono suddivisi nei parametri
target
e disk
.
Se non diversamente specificato, si consiglia di non modificare l'impostazione di default di questi parametri.
6.4.5.1 Visualizzazione delle impostazioni target #
È possibile visualizzare il valore di tali impostazioni tramite il comando
info
:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvolgwcli >
/iscsi-target...i.SYSTEM-ARCH:testvol> info
E modificare un'impostazione con il comando
reconfigure
:
gwcli >
/iscsi-target...i.SYSTEM-ARCH:testvol> reconfigure login_timeout 20
Le impostazioni target
disponibili sono:
- default_cmdsn_depth
Profondità di default CmdSN (Command Sequence Number). Limita la quantità di richieste che l'iniziatore iSCSI può avere in sospeso in qualsiasi momento.
- default_erl
Livello di ripristino errore di default.
- login_timeout
Valore timeout di login in secondi.
- netif_timeout
Timeout errore NIC in secondi.
- prod_mode_write_protect
Se impostata a
1
, impedisce le operazioni di scrittura sui LUN.
6.4.5.2 Visualizzazione delle impostazioni disk #
È possibile visualizzare il valore di tali impostazioni tramite il comando
info
:
gwcli >
/> cd /disks/rbd/testvolgwcli >
/disks/rbd/testvol> info
E modificare un'impostazione con il comando
reconfigure
:
gwcli >
/disks/rbd/testvol> reconfigure rbd/testvol emulate_pr 0
Le impostazioni disk
disponibili sono:
- block_size
Dimensione di blocco del dispositivo sottostante.
- emulate_3pc
Se impostata a
1
, abilita Third Party Copy.- emulate_caw
Se impostata a
1
, abilita Compare e Write.- emulate_dpo
Se impostato a 1, attiva Disable Page Out.
- emulate_fua_read
Se impostata a
1
, attiva la lettura Force Unit Access.- emulate_fua_write
Se impostata a
1
, abilita la scrittura Force Unit Access.- emulate_model_alias
Se impostata a
1
, utilizza il nome del dispositivo back-end per l'alias modello.- emulate_pr
Se impostata a 0, il supporto delle prenotazioni SCSI, incluse le Persistent Group Reservation, è disabilitato. Se è disabilitata, l'iSCSI Gateway SES può ignorare lo stato di prenotazione per generare una migliore latenza della richiesta.
SuggerimentoSi consiglia di impostare
backstore_emulate_pr
a0
se gli iniziatori iSCSI non richiedono il supporto della prenotazione SCSI.- emulate_rest_reord
Se impostata a
0
, il modificatore algoritmo di coda ha riordinamento limitato.- emulate_tas
Se impostata a
1
, abilita Task Aborted Status.- emulate_tpu
Se impostata a
1
, abilita Thin Provisioning Unmap.- emulate_tpws
Se impostata a
1
, abilita Thin Provisioning Write Same.- emulate_ua_intlck_ctrl
Se impostata a
1
, abilita Unit Attention Interlock.- emulate_write_cache
Se impostata a
1
, attiva Write Cache Enable.- enforce_pr_isids
Se impostata a
1
, applica gli ISID di prenotazione persistenti.- is_nonrot
Se impostata a
1
, il backstore è un dispositivo non rotativo.- max_unmap_block_desc_count
Numero massimo di descrittori di blocco per UNMAP.
- max_unmap_lba_count:
Numero massimo di LBA per UNMAP.
- max_write_same_len
Lunghezza massima per WRITE_SAME.
- optimal_sectors
Dimensione richiesta ottimale in settori.
- pi_prot_type
Tipo di protezione DIF.
- queue_depth
Profondità coda.
- unmap_granularity
Granularità UNMAP.
- unmap_granularity_alignment
Allineamento granularità UNMAP.
- force_pr_aptpl
Se abilitata, LIO scriverà sempre lo stato di prenotazione permanente nello spazio di memorizzazione permanente, a prescindere dal fatto che il client lo abbia richiesto o meno tramite
aptpl=1
. Ciò non ha effetto sul back-end RBD del kernel per LIO, che manterrà sempre lo stato di prenotazione permanente. Idealmente, l'opzionetarget_core_rbd
dovrebbe forzarla su "1" e generare un errore se qualcuno tenta di disabilitarla tramite la configurazione.- unmap_zeroes_data
Determina se LIO invierà un bit LBPRZ agli iniziatori SCSI, per indicare che gli zero di una determinata area verranno riletti dopo l'esecuzione di un comando UNMAP o WRITE SAME con un bit di annullamento della mappatura.
6.5 Esportazione di immagini del dispositivo di blocco RADOS (RADOS Block Device, RBD) con tcmu-runner
#
ceph-iscsi
supporta i backstore
rbd
(basati sul kernel) e user:rbd
(tcmu-runner), rendendo la gestione invisibile all'utente e indipendente dal
backstore.
Le distribuzioni di iSCSI Gateway basate su
tcmu-runner
sono attualmente un'anteprima.
A differenza delle distribuzioni iSCSI Gateway basate su kernel, gli iSCSI
Gateway basati su tcmu-runner
non offrono supporto
per Multipath I/O o per le prenotazioni permanenti SCSI.
Per esportare un'immagine del dispositivo di blocco RADOS con
tcmu-runner
, occorre semplicemente specificare il
backstore user:rbd
durante il collegamento del disco:
gwcli >
/disks> attach rbd/testvol backstore=user:rbd
Durante l'uso di tcmu-runner
, sull'immagine RBD
esportata deve essere abilitata la funzione
exclusive-lock
.