9 Distribuzione di servizi aggiuntivi #
9.1 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.1 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.1. 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.1 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.
9.1.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.
9.1.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.
9.1.1.2 Iniziatori iSCSI #
Questa sezione presenta brevi informazioni sugli iniziatori iSCSI utilizzati su piattaforme Linux, Microsoft Windows e VMware.
9.1.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à.
9.1.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à.
9.1.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à.
9.1.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.
9.1.3 Considerazioni sulla distribuzione #
Una configurazione minima di SUSE Enterprise Storage 7.1 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.1 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 un minimo 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.
9.1.4 Installazione e configurazione #
Questa sezione descrive i passaggi per installare e configurare un iSCSI Gateway su SUSE Enterprise Storage.
9.1.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 8.3.5, «Distribuzione di iSCSI Gateway».
9.1.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
9.1.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:
#
cephadm enter --name CONTAINER_NAME
Da root
, avviare l'interfaccia riga di comando di iSCSI Gateway:
#
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 9.1.4.4, «Autenticazione e controllo dell'accesso» per ulteriori informazioni sull'autenticazione e il controllo dell'accesso.
9.1.4.4 Autenticazione e controllo dell'accesso #
L'autenticazione iSCSI è flessibile e include diverse possibilità di autenticazione.
9.1.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
9.1.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
9.1.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
.
9.1.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
9.1.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.
9.1.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.
9.1.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.
9.1.5 Esportazione di immagini del dispositivo di blocco RADOS (RADOS Block Device, RBD) con tcmu-runner
#
ceph-iscsi
supporta i backstore rbd
(basati su 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
.