GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare la destinazione di archiviazione iSCSI Linux e l'accesso client remoto

iSCSI sta per Internet Small Computer System Interface.

Funziona su livello TCP/IP e consente l'invio di comandi SCSI su reti locali (LAN).

Viene utilizzato per accedere allo spazio di archiviazione sulla rete tramite TCP/IP utilizzando trasferimenti di dati a livello di blocco.

C'è spesso un confronto tra NFS e iSCSI. La differenza fondamentale è che NFS è un'implementazione a livello di file mentre iSCSI è un'implementazione a livello di blocco.

Nelle implementazioni a livello di blocco come iSCSI e Fibre Channel, l'array di archiviazione offre una raccolta di blocchi al client, che quindi formatta lo storage grezzo con qualsiasi file system decide di utilizzare.

In ordine per accedere allo storage su iscsi, abbiamo bisogno dei seguenti componenti:

  1. iniziatore iSCSI (Hardware/Software) – Questo è un client iscsi che può inviare comandi iscsi sulla rete TCP/IP. Di solito è l'adattatore NIC sul server e può essere fisico o virtuale con un IP configurato sulla stessa sottorete con l'interfaccia iscsi dell'array di archiviazione.
  2. iSCSI Target (il tuo nodo di archiviazione) – Questo è il tuo nodo di archiviazione che puoi configurare da solo o può essere un array fisico di un fornitore che supporta la configurazione iscsi
  3. Switch iSCSI (opzionale):qui lo switch iscsi è facoltativo, ma per separare il traffico host dal traffico iscsi nelle distribuzioni aziendali, si consiglia di utilizzare uno switch separato per il traffico iscsi.

In questo tutorial, vedremo come configurare il nostro nodo di archiviazione che supporta la configurazione iscsi e accedere allo spazio di archiviazione dal client iscsi su una macchina Centos 6.

Le stesse procedure dovrebbero funzionare per la versione RHEL 6 (CentOS 6). Per CentOS 7, la procedura è leggermente diversa utilizzando targetcli, che tratteremo in un altro articolo.

1. Installa SCSI Target Utils e avvia tgtd

Innanzitutto, installa scsi-target-utils utilizzando il comando yum sul nodo di archiviazione, necessario per configurare l'iSCSI.

yum install scsi-target-utils

Se non hai già installato Perl sul tuo sistema, il comando precedente installerà automaticamente Perl e molte altre dipendenze (ad esempio:sg3_utils).

Questo installerà il comando tgtadm come mostrato di seguito.

# which tgtadm
/usr/sbin/tgtadm

Speciali il demone di destinazione SCSI come mostrato di seguito.

# service tgtd start
Starting SCSI target daemon: [ OK ]

Usando il comando chkconfig, assicurati che si avvii automaticamente durante l'avvio del sistema.

chkconfig tgtd on

2. Aggiungi un nuovo target iSCSI usando tgtadm

Utilizzare il comando tgtadm per aggiungere una nuova destinazione iSCSI sul nodo di archiviazione utilizzando la seguente sintassi:

tgtadm --lld --mode target --op new --tid --targetname

L'esempio seguente crea una destinazione con ID destinazione 1 con iqn sottostante,

tgtadm --lld iscsi --op new --mode target --tid 1 \
       -T iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

Nel comando sopra:

  • Il comando tgtadm è l'utilità di amministrazione della destinazione SCSI di Linux
  • –lld iscsi specifica che stiamo usando il driver iscsi (puoi anche usare -L invece di –lld)
  • –op new specifica l'operazione, in questo caso stiamo creando un nuovo target (puoi anche usare -o invece di –op)
  • –mode target indica che stiamo creando un target. Altre modalità possibili sono:unità logica, account, portale, conn, sys. (Puoi anche usare -m invece di –mode)
  • –tid 1 specifica l'id di destinazione, che è 1 in questo esempio (puoi anche usare -t invece di –tid)
  • -T specifica il nome del target (puoi anche usare –targetname invece di -T)

3. Visualizza la configurazione iSCSI Target

Una volta creato il target, puoi visualizzare i dettagli utilizzando l'operazione "mostra" come mostrato di seguito. Ciò fornirà le informazioni di sistema e le informazioni LUN di tutti i target disponibili sul tuo sistema.

Come si vede dall'output seguente, abbiamo un solo target (Target 1), che è il driver iSCSI, con un LUN (LUN 0).

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
ACL information:

Nota:nell'output precedente, il "Percorso archivio di backup" è attualmente Nessuno, poiché non abbiamo ancora associato alcun percorso di archiviazione fisico a questo iSCSI.

4. Aggiungi la LUN alla destinazione iSCSI

Nell'esempio seguente, aggiungeremo un lun esistente, che è /storage/lun01 montato e disponibile sul nostro nodo di archiviazione alla destinazione iSCSI che abbiamo creato.

Per la LUN esistente (/storage/lun01), dovresti anche impostare il contesto SELinux in modo appropriato come mostrato di seguito.

semanage fcontext -a -t tgtd_var_lib_t /storage/lun01

restorecon -Rv /storage/lun01

Se ricevi "Richiesta non valida", a scopo di test temporaneo, potresti voler disabilitare SELinux impostando SELinux in modalità permissiva per vedere se risolve il problema e restringere il problema all'autorizzazione SELinux.

Ora, usando il comando tgtadm, aggiungi /storage/lun01 alla destinazione iSCSI che abbiamo creato in precedenza.

tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \
       --lun 1 --backing-store /storage/lun01

Nel comando sopra:

  • la maggior parte delle opzioni sono le stesse che abbiamo spiegato nel precedente comando tgtadm sopra.
  • –unità logica in modalità. Tieni presente che in precedenza abbiamo usato "target" per modalità, ma qui stiamo usando unità logica per modalità.
  • –lun indica l'ID LUN, che è 1 in questo esempio (puoi anche usare -l invece di –lun)
  • –backing-store indica il percorso di archiviazione fisico sul server di archiviazione. Nel nostro esempio, è /storage/lun01 (puoi anche usare -b invece dell'opzione –backing-store)
  • –tid 1 indica che collega questo dato LUN all'ID target 1 esistente, che abbiamo creato in precedenza.

Ora, visualizza di nuovo i dettagli dell'iSCSI sul tuo sistema.

Ma, questa volta, nella LUN 1, il "Percorso archivio di backup" nell'output seguente punterà al percorso di archiviazione che abbiamo associato a questo iSCSI. Nel nostro esempio è /storage/lun01.

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:

Per qualche motivo, se hai commesso un errore nel comando precedente e ti piace eliminare l'associazione LUN1 che abbiamo creato sopra, usa il comando seguente.

tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1

Nel comando sopra:

  • Tutto è uguale al comando precedente
  • Ma qui l'opzione -op (che è l'operazione) viene eliminata.
  • Questo cancellerà lun1 da iSCSI tid 1 (target 1)

5. Impostare la restrizione ACL per iSCSI

Successivamente, devi configurare ACL per consentire agli iniziatori che possono accedere a questa destinazione scsi.

tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

Nel comando sopra:

  • La maggior parte delle opzioni sono molto simili ai nostri comandi precedenti
  • L'opzione -I ALL indica che stiamo consentendo al target di accettare TUTTI gli iniziatori (puoi anche usare –initiator-address invece di -I)

Quando visualizzi i dettagli iSCSI utilizzando l'operazione "mostra", noterai le informazioni ACL verso la fine dell'output, come mostrato di seguito.

# tgtadm --lld iscsi --op show --mode target
..
..
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:
ALL

Se desideri limitare solo il client che deve accedere allo storage, puoi utilizzare il comando seguente e specificare un indirizzo IP specifico.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.109

Se desideri limitare l'accesso a una determinata sottorete, puoi specificare la sottorete anziché l'indirizzo IP come mostrato di seguito.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.0/24

6. Consenti l'accesso alla porta 3260

Se stai eseguendo ip-tables, aggiungi una regola ip-tables e consenti la porta 3260 come mostrato di seguito.

iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT

Verifica che la porta 3260 sia aperta utilizzando il comando netstat come mostrato di seguito.

# netstat -tunlp | grep 3260
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1248/tgtd
tcp 0 0 :::3260 :::* LISTEN 1248/tgtd

Nota:fino a questo punto, tutti i comandi precedenti sono stati eseguiti sul nodo del server di archiviazione. D'ora in poi, tutti i comandi nella sezione seguente verranno eseguiti sulla macchina client, che deve connettersi al server di archiviazione.

7. Sul cliente:scopri iSCSI

Sul client, prima di scoprire l'iSCSI, non vedrai il nuovo disco iSCSI. Ad esempio, il seguente output non visualizzerà nulla.

fdisk -l /dev/sdb

Ora tutta la configurazione del lato target è completa ed è possibile accedere al lun tramite iscsi dal client. Le procedure seguenti ti mostreranno come configurare il lato client per accedere allo storage.

Sul server client, installa il pacchetto iscsi-initiator-utils come mostrato di seguito.

yum install iscsi-initiator-utils

Quindi, scopri la destinazione iSCSI usando il comando iscsiadm come mostrato di seguito.

[root@client ~]# iscsiadm --mode discovery --type sendtargets \
                --portal 192.168.2.166

Il comando precedente visualizzerà il seguente output:

192.168.2.166:3260,1 iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

Nel comando sopra:

  • Il comando iscsiadm è l'utilità di amministrazione di open-iscsi
  • –la modalità di rilevamento indica che stiamo rilevando il server iSCSI qui. Altre modalità possibili sono:discoverydb, node, fw, host iface o session. (Puoi anche usare -m invece di –mode)
  • –digitare qui i sendtarget specifici. Altri valori possibili sono:sendtargets, fw e iSNS. Puoi anche usare l'abbreviazione st invece di sendtargets. (Puoi anche usare -t invece di –type)
  • –portal specifica l'indirizzo IP del nodo di archiviazione iSCSI che abbiamo configurato in precedenza (puoi anche usare -p invece di –portal).
  • Per l'indirizzo IP, se stai eseguendo iSCSI su una porta non predefinita (qualsiasi cosa diversa da 3260), specificalo dopo l'indirizzo IP. Ad esempio, 192.168.2.166:3261

Nota:se ricevi l'errore "Nessun percorso verso l'host", significa che iptables sulla destinazione o sul client non è configurato correttamente.

8. Sul client:accedere alla sessione di destinazione iSCSI

Una volta completato correttamente il processo di rilevamento, è necessario accedere alla sessione di destinazione iscsi utilizzando il comando seguente:

[root@client ~]# iscsiadm --mode node --targetname iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com \
                          --portal 192.168.2.166 --login

Il comando precedente visualizzerà il seguente output:

Logging in to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] (multiple)
Login to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] successful.

Nel comando sopra:

  • La maggior parte delle opzioni sono simili al comando precedente.
  • Per la modalità, qui stiamo usando node (invece di discovery)
  • -targetname specifica il nome della destinazione. Questo è il nometraget che abbiamo specificato sul nodo di archiviazione in precedenza quando abbiamo creato l'iSCSI (puoi anche usare -T invece di –targetname)
  • –l'opzione login accede a tutte le destinazioni rilevate. Nel nostro caso, accederà al nostro server iSCSI di archiviazione specificato nell'opzione –portal.

Ora dovresti vedere il tuo nuovo dispositivo iscsi sull'output di fdisk. Puoi formattarlo, aggiungerlo a lvm e usarlo secondo necessità.

L'output del comando fdisk ora mostrerà il dispositivo.

[root@client ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Nota:il disco sopra non proviene dalla macchina client, proviene dal server di archiviazione come iSCSI.


Linux
  1. Come configurare iSCSI Storage Server su Ubuntu 18.04 LTS

  2. Come configurare un server di archiviazione iSCSI su Ubuntu 20.04 LTS

  3. Come accedere ai filesystem Linux in Windows 10 e WSL 2

  4. Come sincronizzare directory locali e remote in Linux

  5. Come configurare il server VNC (Linux Remote Desktop Access) su CentOS/RHEL e Fedora

Come configurare ZSH e Oh-my-zsh su Linux

Come disabilitare la sospensione e l'ibernazione in Linux

Come installare e configurare Let's Encrypt (Certbot) su Linux

Come installare e configurare la Console Web Cockpit su un sistema Linux

Come configurare e gestire un repository Git remoto su Linux

Come configurare il server e il client VPN Linux utilizzando OpenVPN