Ricerca nel sito web

Come configurare il server iSCSI (destinazione) e il client (iniziatore) su Debian 9


Nel mondo dei data center, le Storage Area Network (SAN) di grande capacità sono diventate lo standard minimo. Poiché anche i provider cloud e la virtualizzazione continuano ad avere un impatto enorme nel mondo della tecnologia, è diventata evidente la necessità di ancora più spazio di storage SAN.

La maggior parte dell'hardware SAN è composta da un controller minimalista (o un set di controller) e da un'ampia raccolta di unità ad alta capacità, tutte configurate per supportare elevate quantità di disponibilità e integrità dei dati.

Molti di questi prodotti specializzati sono realizzati da fornitori di grandi nomi come Netapp, Dell Equalogic, HP Storageworks o EMC e presentano cartellini dei prezzi che solo le aziende più grandi possono permettersi.

Realisticamente, questi dispositivi non sono altro che grandi array di dischi rigidi con un controller che fornisce lo spazio di tali dischi rigidi ai client della rete. Nel corso degli anni sono esistite molte tecnologie che forniscono questa funzionalità o funzionalità simili a un prezzo sostanzialmente più economico.

La distribuzione Debian GNU/Linux fornisce pacchetti che consentono a un sistema Debian di servire allo scopo di un dispositivo di archiviazione SAN di livello aziendale a una frazione del costo! Ciò consente a chiunque, dagli utenti domestici di base ai data center di grandi dimensioni, di ottenere i vantaggi dello storage SAN senza dover spendere una fortuna per una soluzione proprietaria del fornitore.

Questo articolo esaminerà come configurare un sistema Debian 9 (Stretch) per sfruttare lo spazio su disco utilizzando un sistema noto come Internet Small Computer Systems Interface o iSCSI in breve. iSCSI è uno standard basato sul protocollo Internet (IP) per fornire spazio di archiviazione a blocchi (disco rigido) ad altri sistemi. iSCSI funziona in un modello client-server ma utilizza nomi diversi per distinguere il client dal server.

Nella terminologia iSCSI, il server che fornisce lo "spazio su disco" è noto come "Target" iSCSI e il sistema che richiede /l'utilizzo dello spazio su disco è noto come "Iniziatore" iSCSI. Quindi, in altre parole, un "Initiator" richiede l'archiviazione dei blocchi da un "Target".

Configurazione dell'ambiente

Questa guida illustra una configurazione di base che coinvolge un semplice server iSCSI (destinazione) e un client (iniziatore) entrambi con Debian 9 (Stretch).


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

La rete può essere visualizzata come di seguito:

Configurazione della destinazione iSCSI Debian

Nel mondo iSCSI, la destinazione è considerata l'host che contiene i dispositivi di archiviazione che devono essere utilizzati dall'iniziatore.

In questo articolo come destinazione viene utilizzato il server con l'IP 192.168.56.101. Tutte le configurazioni verranno eseguite su quell'host per questa sezione.

Il primo passo è l'installazione dei pacchetti necessari per consentire al sistema Debian di servire obiettivi iSCSI. Questo pacchetto software è noto come Target Framework (TGT).

L'altro elemento utilizzato in questa guida sono gli strumenti di Gestione del volume logico (LVM) come Volumi logici (LV) verrà utilizzato come supporto di archiviazione per la destinazione iSCSI.

Entrambi i pacchetti possono essere installati con i seguenti comandi.


apt-get update
apt-get install tgt lvm2

Una volta installati i pacchetti, LVM verrà utilizzato per preparare i dischi rigidi sulla destinazione per l'utilizzo come iSCSI LUN. Il primo comando viene utilizzato per preparare i dischi per l'inclusione in una configurazione LVM. Assicurati di modificare il comando secondo necessità per diversi scenari!


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

Una volta che i dischi sono stati preparati con il comando "pvcreate" di cui sopra, è il momento di creare un gruppo di volumi da questi particolari dischi. Il gruppo di volumi è necessario per creare i volumi logici che fungeranno successivamente da spazio di archiviazione iSCSI.

Per creare un gruppo di volumi, è necessario il comando "vgcreate".


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

Nota nell'output sopra che il sistema risponde che il Gruppo di volumi è stato creato, ma è sempre una buona idea ricontrollare come visto sopra con il comando "vgs". La capacità di questo gruppo di volumi è di soli 9,99 GB. Sebbene si tratti di un gruppo di volumi particolarmente piccolo, il processo sarebbe lo stesso per dischi di capacità maggiore!

Il passo successivo è la creazione del volume logico che fungerà da disco per il client iSCSI (iniziatore). In questo esempio verrà utilizzato l'intero gruppo di volumi, ma non è necessario.

Il volume logico verrà creato utilizzando il comando "lvcreate".


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

Il comando "lvcreate" di cui sopra potrebbe creare un po' di confusione a prima vista, ma la suddivisione è la seguente:

  • lvcreate – Comando utilizzato per creare il volume logico.
  • -l 100%FREE – Crea il volume logico utilizzando tutto lo spazio libero del gruppo di volumi.
  • -n tecmint_lun1 – Il nome del volume logico da creare.
  • tecmint_iscsi – Il nome del gruppo di volumi all'interno del quale creare il volume logico.

Una volta creato il volume logico, è il momento di creare il LUN (Logical Unit Number) vero e proprio. Il LUN sarà il dispositivo di archiviazione a cui l'iniziatore si connetterà e utilizzerà in seguito.

Creare una LUN è molto semplice e richiede solo pochi passaggi. Il primo passo sarà la creazione del file di configurazione. Questo file risiederà nella directory "/etc/tgt/conf.d" e per questo articolo si chiamerà "TecMint_iscsi.conf".

Per creare questo file utilizzare un editor di testo.


nano /etc/tgt/conf.d/TecMint_iscsi.conf

All'interno di questo file verranno configurate tutte le informazioni di configurazione necessarie per questo LUN. Ci sono molte opzioni che possono essere inserite in questo file, ma per ora verrà utilizzato un LUN di base con il reciproco Challenge Handshake Authentication Protocol (CHAP). essere configurato.

La definizione del LUN esisterà tra due istruzioni "target". Per ulteriori parametri che possono essere inseriti nella dichiarazione target, consulta la pagina di manuale per il file "targets.conf" immettendo "man 5 targets.conf".


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

C'è molto da fare sopra. Una breve spiegazione può essere utile a molti.

  • La prima riga inizia la particolare configurazione iSCSI LUN. In questo caso il LUN etichettato "iqn.2018-02.linux-console.net:lun1". La parte "iqn" indica che questo sarà un nome qualificato iSCSI. "2018-02" è una combinazione di date scelta arbitrariamente. "linux-console.net" è il dominio a cui appartiene questa particolare LUN. Infine, "lun1" viene utilizzato come nome per questo particolare target.
  • La seconda riga sopra illustra un commento. I commenti possono esistere nei file di configurazione di destinazione e devono essere preceduti da un simbolo "#".
  • La terza riga è dove esiste lo spazio di archiviazione effettivo che verrà utilizzato dall'iniziatore. In questo caso il supporto di archiviazione sarà il volume logico creato in precedenza nella guida.
  • La quarta riga è l'indirizzo IP atteso dall'iniziatore. Anche se questo non è un elemento di configurazione obbligatorio, può aiutare ad aumentare la sicurezza.
  • La quinta riga è il nome utente/password in entrata. Proprio come l'indirizzo dell'iniziatore sopra, anche questo parametro non è obbligatorio ma può aiutare a proteggere il LUN. Poiché questa guida tratta anche il CHAP reciproco iSCSI, questo parametro è obbligatorio. Questa riga indica il nome utente e la password che la destinazione si aspetterà dall'iniziatore per connettersi a questo LUN.
  • La sesta riga è il nome utente/password che la destinazione fornirà all'iniziatore per consentire l'esecuzione dell'autenticazione CHAP reciproca. Normalmente questo parametro non è obbligatorio ma questo articolo riguarda l'autenticazione CHAP reciproca, quindi questo parametro è obbligatorio.
  • L'ultima riga è l'istruzione di chiusura per la definizione di destinazione. Presta attenzione alla barra di chiusura davanti al target della parola chiave!

Una volta digitate le configurazioni appropriate per la LUN, salvare le modifiche e uscire dall'editor di testo. Se utilizzi nano, premi ctrl+o per salvare, quindi premi ctrl+x per uscire da nano.

Una volta creato il file di configurazione, il servizio tgt dovrebbe essere riavviato in modo che tgt sia a conoscenza dei nuovi target e della configurazione associata.

Questo può essere fatto con uno dei seguenti comandi e dipende dal sistema init in uso.


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

Una volta riavviato tgt, è importante verificare che il target iSCSI sia reso disponibile secondo il file di configurazione creato.

Ciò può essere ottenuto con il comando "tgtadm".


tgtadm --mode target --op show   (This will show all targets)

Questo conclude la configurazione del target. La sezione successiva tratterà della configurazione dell'iniziatore.

Configurazione dell'iniziatore iSCSI Debian

Il passaggio successivo nell'utilizzo della destinazione iSCSI precedentemente configurata è la configurazione dell'iniziatore iSCSI.

In questo articolo verrà utilizzato un diverso sistema Debian 9 come iniziatore, ma qualsiasi sistema che può utilizzare il protocollo iSCSI può connettersi al target precedentemente configurato; questo potrebbe includere hypervisor come XenServer/ESXi o altre distribuzioni come Red Hat, Debian o Ubuntu.

Il primo passo in questo processo per questo iniziatore Debian è l'installazione dei pacchetti appropriati per iSCSI.


apt-get update
apt-get install open-iscsi

Una volta che apt ha terminato la configurazione dei pacchetti open-iscsi, può iniziare la configurazione dell'iniziatore iSCSI. Il primo passo sarà comunicare con il target per ottenere le informazioni di configurazione iniziali preparate per il target.


iscsiadm -m discovery -t st -p 192.168.56.101

Quando viene eseguito, questo comando risponderà con il nome del lun configurato in precedenza per questo particolare host. Il comando precedente genererà anche due file per le informazioni LUN appena scoperte.

Ora il file creato per questo nodo dovrà avere le informazioni CHAP configurate affinché questo target iSCSI sia effettivamente accessibile dall'iniziatore.

Tecnicamente queste informazioni potrebbero essere impostate per l'intero sistema nel suo insieme, ma nel caso in cui un host si connetta a LUN diversi con credenziali diverse, inserendo tali credenziali nel file di configurazione del nodo specifico è possibile mitigare eventuali problemi.

Il file di configurazione del nodo sarà presente nella directory "/etc/iscsi/nodes/" e avrà a disposizione una directory per LUN. Nel caso di questo articolo (nota che i percorsi cambieranno se i nomi/indirizzi IP vengono modificati).


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Per lavorare con questo file, è possibile utilizzare qualsiasi editor di testo.


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

All'interno di questo file ci saranno diverse opzioni già configurate per il rispettivo target che sono state determinate durante il comando "iscsiadm" eseguito in precedenza.

Poiché questa particolare configurazione di destinazione/iniziatore Debian utilizza il CHAP reciproco, è necessario modificare e aggiungere altre opzioni a questo file e quindi effettuare l'accesso al target iSCSI eseguito.

Le modifiche a questo file sono:


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

Le opzioni di cui sopra consentiranno a questa destinazione di autenticarsi presso l'iniziatore così come consentiranno all'iniziatore di autenticarsi presso la destinazione .

C'è un'altra opzione in questo particolare file che potrebbe dover essere modificata a seconda delle preferenze dell'amministratore e cioè il parametro "node.startup".

Se si segue questa guida, l'opzione "node.startup" verrà impostata su "manuale" a questo punto. Questo potrebbe non essere desiderato. Se l'amministratore desidera che la destinazione iSCSI sia collegata all'avvio del sistema, modificare "manuale" in "automatico" in questo modo:


node.startup = automatic

Una volta apportate le modifiche di cui sopra, salvare il file ed uscire. A questo punto è necessario riavviare il servizio iniziatore open-iscsi per leggere queste nuove modifiche e connettersi al target iSCSI.

Ciò può essere ottenuto con uno dei seguenti comandi a seconda del sistema init in uso.


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

Nota nella casella verde in alto che l'iniziatore iSCSI è riuscito ad accedere alla destinazione. Per confermare ulteriormente che il destinazione iSCSI sia effettivamente disponibile per l'iniziatore, possiamo controllare nel sistema la presenza di unità disco aggiuntive disponibili utilizzando il comando 'lsblk ' comando e controllando l'output per unità aggiuntive.


lsblk

L'altro comando che può essere utilizzato sull'iniziatore per confermare una connessione al target è "iscsiadm" in quanto tale:


iscsiadm -m session

L'ultimo posto per confermare una connessione sarebbe sulla destinazione stessa utilizzando il comando "tgtadm" per elencare eventuali connessioni iSCSI.


tgtadm --mode conn --op show --tid 1

Da questo momento, il dispositivo iSCSI appena collegato può essere utilizzato in modo simile a qualsiasi disco normalmente collegato! Il partizionamento, la creazione del filesystem, il montaggio e/o il montaggio persistente possono essere tutti gestiti normalmente.

Un grande avvertimento a cui prestare attenzione con i dispositivi iSCSI è che se il destinazione iSCSI contiene file system importanti necessari durante l'avvio dell'iniziatore, assicurarsi utilizzare la voce '_netdev' nel file '/etc/fstab' per garantire che il dispositivo iSCSI sia connesso prima che il sistema continui ad avviarsi!