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 6 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 6. 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 6 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.
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 del livello collegamento dati sottostante per iSCSI e di solito Ethernet. Più specificamente, le moderne infrastrutture iSCSI utilizzano reti Ethernet 10 Gigabit o più veloci per un throughput ottimale. Si consiglia la connettività Ethernet 10 Gigabit tra iSCSI Gateway e il cluster Ceph back-end.
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.
Questa sezione presenta brevi informazioni sugli iniziatori iSCSI utilizzati su piattaforme Linux, Microsoft Windows e VMware.
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à.
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à.
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à.
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.
Una configurazione minima di SUSE Enterprise Storage 6 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 6 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 modulo target_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.
Questa sezione descrive i passaggi per installare e configurare un iSCSI Gateway su SUSE Enterprise Storage.
È possibile distribuire iSCSI Gateway durante il processo di distribuzione del cluster Ceph oppure aggiungerlo a un cluster esistente con DeepSea.
Per includere iSCSI Gateway durante il processo di installazione del cluster, consultare Sezione 5.5.1.2, «Assegnazione ruolo».
Per aggiungere iSCSI Gateway a un cluster esistente, consultare Sezione 2.2, «Aggiunta di nuovi ruoli ai nodi».
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:
cephadm@adm >
rbd --pool iscsi-images create --size=102400 'testvol'
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.
Sono supportate solo le funzioni dell'immagine RBD seguenti: layering
, striping (v2)
, exclusive-lock
, fast-diff
e data-pool
. Non sarà possibile esportare le immagini RBD con altre funzioni abilitate.
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.x86:testvol
:
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> create iqn.2003-01.org.linux-iscsi.iscsi.x86: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.x86: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.x86: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 10.4.4, «Autenticazione e controllo dell'accesso» per ulteriori informazioni sull'autenticazione e il controllo dell'accesso.
L'autenticazione iSCSI è flessibile e include diverse possibilità di autenticazione.
"No authentication" indica che qualsiasi iniziatore potrà accedere ai LUN sulla destinazione corrispondente. È possibile abilitare tale impostazione disabilitando l'autenticazione ACL:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.x86:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> auth disable_acl
Se si utilizza un nome di iniziatore basato sull'autenticazione ACL, 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.x86: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
Oltre all'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.x86: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 solo lettere e i simboli ".", "@", "-", "_" o ":".
Le password devono avere una lunghezza compresa tra 12 e 16 caratteri e possono contenere solo lettere e i simboli "@", "-", "_" o "/".
Facoltativamente, è possibile abilitare anche l'autenticazione CHAP reciproca specificando i parametri mutual_username
e mutual_password
nel comando auth
.
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 e i simboli ".", "@", "-", "_" o ":".
Le password devono avere una lunghezza compresa tra 12 e 16 caratteri e possono contenere solo lettere e i simboli "@", "-", "_" o "/".
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
È 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.
È possibile visualizzare il valore di tali impostazioni tramite il comando info
:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.x86:testvolgwcli >
/iscsi-target...i.x86:testvol> info
E modificare un'impostazione con il comando reconfigure
:
gwcli >
/iscsi-target...i.x86:testvol> reconfigure login_timeout 20
Le impostazioni di destinazione disponibili sono:
Profondità di default CmdSN (Command Sequence Number). Limita la quantità di richieste che l'iniziatore iSCSI può avere in sospeso in qualsiasi momento.
Livello di ripristino errore di default.
Valore timeout di login in secondi.
Timeout errore NIC in secondi.
Se impostato a 1, impedisce le scritture sui LUN.
È 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 disco disponibili sono:
Dimensione di blocco del dispositivo sottostante.
Se impostato a 1, abilita Third Party Copy.
Se impostato a 1, abilita Compare e Write.
Se impostato a 1, attiva Disable Page Out.
Se impostato a 1, attiva la lettura Force Unit Access.
Se impostato a 1, abilita la scrittura Force Unit Access.
Se impostato a 1, utilizza il nome del dispositivo back-end per l'alias modello.
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.
Si consiglia di impostare backstore_emulate_pr a 0 se gli iniziatori iSCSI non richiedono il supporto della prenotazione SCSI.
Se impostato a 0, il modificatore algoritmo di coda ha riordinamento limitato.
Se impostato a 1, abilita Task Aborted Status.
Se impostato a 1, abilita Thin Provisioning Unmap.
Se impostato a 1, abilita Thin Provisioning Write Same.
Se impostato a 1, abilita Unit Attention Interlock.
Se impostato a 1, attiva Write Cache Enable.
Se impostato a 1, applica gli ISID di prenotazione persistenti.
Se impostato a 1, il backstore è un dispositivo non rotativo.
Numero massimo di descrittori di blocco per UNMAP.
Numero massimo di LBA per UNMAP.
Lunghezza massima per WRITE_SAME.
Dimensione richiesta ottimale in settori.
Tipo di protezione DIF.
Profondità coda.
Granularità UNMAP.
Allineamento granularità UNMAP.
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'opzione target_core_rbd
dovrebbe forzarla su "1" e generare un errore se qualcuno tenta di disabilitarla tramite configfs.
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.
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
.