Come condividere i volumi ZFS tramite ISCSI

Come condividere i volumi ZFS tramite ISCSI

I volumi ZFS sono dispositivi di archiviazione a blocchi che funzionano come qualsiasi altro dispositivo di archiviazione (HDD/SSD). È possibile creare tabelle di partizione, creare nuove partizioni, formattare queste partizioni, creare filesystem e montarle sul tuo computer.

Puoi anche condividere i volumi ZFS tramite il protocollo ISCSI e accedervi da computer remoti.

In questo articolo, ti mostrerò come condividere i volumi ZFS tramite ISCSI e accedervi dai computer remoti. Userò Ubuntu 20.04 LTS Sistema operativo per la dimostrazione. Tuttavia, i passaggi mostrati in questo articolo dovrebbero funzionare anche su altre distribuzioni Linux con alcune regolazioni.

Iniziamo.

Sommario:

  1. Diagramma di rete
  2. Installazione di TGT sul server ISCSI
  3. Installazione di Open-ISCSI sul client ISCSI
  4. Creazione di un pool ZFS
  5. Creazione di volumi ZFS
  6. Creazione di obiettivi ISCSI
  7. Aggiunta di volumi ZFS agli obiettivi ISCSI
  8. Configurazione dell'autenticazione ISCSI (opzionale)
  9. Generazione di configurazione del server ISCSI
  10. Accesso ai volumi ZFS condivisi tramite ISCSI
  11. Montare automaticamente i volumi ZFS condivisi tramite ISCSI
  12. Conclusione
  13. Riferimenti

Diagramma di rete:

In questo articolo, creerò due Ubuntu 20.04 computer LTS: ISCSI-Server e ISCSI-Client. Installerò ZFS e il software di server ISCSI su Computer ISCSI-Server e configuralo per condividere i volumi ZFS tramite ISCSI.

Installerò il Software client ISCSI sul COMPUTER ISCSI-Client e configurarlo per accedere ai volumi ZFS esportati da Computer ISCSI-Server tramite ISCSI.

L'intera configurazione è visualizzata nella figura seguente:

Installazione di TGT sul server ISCSI:

In questa sezione, ti mostrerò come installare il pacchetto server ISCSI TGT sul computer ISCSI-Server.

Innanzitutto, aggiorna la cache del repository del pacchetto APT come segue:

$ sudo apt update

Quindi, installa il pacchetto TGT sul computer ISCSI-Server con il seguente comando:

$ sudo apt Installa tgt -y

Se non hai già installato ZFS sul computer ISCSI-Server, è possibile installarlo con il seguente comando:

$ sudo apt installa zfsutils -linux -y

Installazione di Open-ISCSI sul client ISCSI:

In questa sezione, ti mostrerò come installare il Pacchetto client ISCSI Open-ischsi sul iScsi-client computer.

Innanzitutto, aggiorna la cache del repository del pacchetto APT con il seguente comando:

$ sudo apt update

Quindi, installa il file Pacchetto Open-ISCSI sul COMPUTER ISCSI-Client con il seguente comando:

$ sudo APT Installa Open -isch -y

Creazione di un pool ZFS:

Per la dimostrazione, creerò un pool ZFS, pool1, sul ISCSI-Server computer usando il Archiviazione VDB e VDC dispositivi:

$ sudo lsblk -e7 -d

Crea un pool ZFS, pool1, utilizzando i dispositivi di archiviazione VDB e VDC nella configurazione del mirror come segue:

$ sudo zpool crea -f pool1 mirror vdb vdc

Un nuovo pool ZFS, pool1, dovrebbe essere creato sul computer ISCSI-Server.

elenco $ sudo zfs

Creazione di volumi ZFS:

In questa sezione, ti mostrerò come creare volumi ZFS Vol1 e Vol2 su Piscina ZFS, pool1, in modo che tu possa esportarli tramite ISCSI.

Per creare un volume ZFS Vol1 di dimensioni 1 GB sul pool ZFS, pool1, eseguire il seguente comando:

$ sudo zfs crea -v 1g pool1/vol1

Per creare un volume ZFS Vol2 di dimensioni 2 GB sul pool ZFS, pool1, eseguire il seguente comando:

$ sudo zfs crea -v 2g pool1/vol2

I volumi ZFS Vol1 e Vol2 dovrebbero essere creati nel pool ZFS, pool1.

elenco $ sudo zfs

Creazione di obiettivi ISCSI:

Un bersaglio ISCSI è come un contenitore nominato. Puoi mettere uno o più volumi ZFS lì dentro. Quando si accede a un target da altri computer, verranno montati tutti i volumi ZFS che hai inserito in quel contenitore.

I nomi target ISCSI hanno un formato standard:

iqn.-.:

Qui:

- L'anno in formato a 4 cifre. io.e. 2021, 2018

- Il mese numerico in formato a 2 cifre. Dovrebbe essere nell'intervallo 01-12. io.e. 01 (per gennaio), 08 (per agosto), 12 (dicembre)

- Il nome di dominio completamente qualificato in formato inverso. io.e. iscsi.Linuxhint.com dovrebbe essere scritto come com.Linuxhint.iscsi.

- Può essere qualsiasi cosa unica nella tua configurazione. Per una piccola configurazione di casa e ufficio, è possibile utilizzare il nome del pool ZFS e il nome del volume (io.e., Pool1.Vol1, pool1.Vol2) o il nome del dipartimento/filiale (io.e., ingegneria.PC1, account.PC2, ingegneria.US-1, account.UK-2) dei clienti che utilizzeranno questi volumi condivisi. Dovrebbe essere abbastanza unico. In una grande azienda, puoi utilizzare un UUID unico per ogni obiettivo.

In questa sezione, ti mostrerò come creare Due obiettivi ISCSI: IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 E iqn.2021-08.com.Linuxhint.ISCSI: pool1.Vol2. Nella prossima sezione, ti mostrerò come aggiungere volumi ZFS a questi obiettivi.

Per creare un iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 e impostare un ID di 1 per il target, eseguire il comando seguente:

$ sudo tgtadm --lld iscsi --op new - -mode Target -tid 1 -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1

Allo stesso modo, eseguire il seguente comando per creare un iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 e imposta un ID di 2 per il bersaglio:

$ sudo tgtadm --lld iscsi --op new - -mode Target -tid 2 -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2

Per elencare tutti gli obiettivi che hai creato, eseguire il seguente comando:

$ sudo tgtadm --lld iscsi --op show -mode target

Gli obiettivi che hai creato dovrebbero essere elencati, come puoi vedere nello screenshot seguente:

Aggiunta di volumi ZFS agli obiettivi ISCSI:

Vengono chiamati i volumi ZFS che aggiungerai a un bersaglio LUNS (unità logiche).

Come accennato in precedenza, è possibile aggiungere uno o più volumi ZFS in un target ISCSI. Ma, se lo fai, quando accedi al target da altri computer, tutti i volumi ZFS che hai aggiunto a quell'obiettivo verranno montati. Quindi, se vuoi consentire l'accesso a uno solo Volume ZFS per target ISCSI, Aggiungi un solo volume ZFS a un target ISCSI.

In questa sezione, dimostro come aggiungere i volumi ZFS Vol1 e Vol2 agli obiettivi iqn.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 e IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2, rispettivamente.

Ognuno di Luns in un bersaglio ISCSI ha un ID a partire da 0. Quindi, il primo Lun si chiama Lun 0. Quindi, il secondo Lun si chiama Lun 1, mentre il Terzo Lun si chiama Lun 2, e così via.

Per impostazione predefinita, Lun 0 di ogni ISCSI Target sarà occupato da un controller ISCSI, come mostrato nello screenshot seguente. Quindi, dovrai usare LUN 1, LUN 2, E così via per aggiungere i volumi ZFS agli obiettivi ISCSI.

$ sudo tgtadm --lld iscsi --op show -mode target

Per aggiungere il Volume ZFS Vol1 dal Piscina di zfs piscina1 come LUN 1 all'ID target 1 (iqn.2021-08.com.Linuxhint.ISCSI: pool1.Vol1), esegui il seguente comando:

$ sudo tgtadm --lld iscsi --op new--mode logicalunit-tid 1--lun 1--backing-store/dev/pool1/vol1

Per aggiungere il ZFS Volume Vol2 dal Piscina ZFS, pool1, come LUN 1 all'ID target 2 (iqn.2021-08.com.Linuxhint.ISCSI: pool1.Vol2), esegui il seguente comando:

$ sudo tgtadm --lld iscsi --op new--mode logicalunit-tid 2--lun 1-back-store/dev/pool1/vol2

IL Volume ZFS Vol1 dovrebbe essere aggiunto al file iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 come Lun 1, come contrassegnato nello screenshot di seguito:

$ sudo tgtadm --lld iscsi --op show -mode target

IL ZFS Volume Vol2 dovrebbe essere aggiunto al file iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 come Lun 1, come contrassegnato nello screenshot di seguito:

Configurazione dell'autenticazione ISCSI (opzionale):

In questa sezione, ti mostrerò come abilitare l'autenticazione del nome utente e della password di base per il ISCSI target IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 E iqn.2021-08.com.Linuxhint.ISCSI: pool1.Vol2.

Puoi saltare felicemente questa sezione se non vuoi abilitare l'autenticazione per i tuoi obiettivi ISCSI.

Innanzitutto, crea un nuovo ISCSI Utente Linuxhint1 con una password fittizia 123456 (Dovrai cambiarlo in seguito) con il seguente comando:

$ sudo tgtadm --lld iscsi --op new - -mode account -User Linuxhint1 - -Password 123456

Allo stesso modo, crea un altro ISCSI Utente Linuxhint2 con una password fittizia 456789 (Dovrai cambiarlo in seguito) con il seguente comando:

$ sudo tgtadm --lld iscsi --op new - -mode account -User Linuxhint2 - -Password 456789

utenti ISCSI Linuxhint1 e LinuxHint2 dovrebbe essere creato, come puoi vedere nello screenshot di seguito:

$ sudo tgtadm --lld iScsi --op show -modalità account

Per consentire solo l'accesso all'utente di Linuxhint1 al ISCSI Target ID 1 (IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1) Dai client ISCSI remoti, eseguire il seguente comando:

$ sudo tgtadm --lld iscsi --op bind - -mode account -tid 1 -user linuxhint1

Allo stesso modo, per consentire il Utente LinuxHint2 Accesso a ISCSI Target ID 2 (IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2) Dai client ISCSI remoti, eseguire il seguente comando:

$ sudo tgtadm --lld iscsi --op bind -account -mode -tid 2 -user linuxhint2

IL Account utente Linuxhint1 dovrebbe essere aggiunto a iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1, Come puoi vedere nello screenshot qui sotto:

$ sudo tgtadm --lld iscsi --op show -mode target

IL Account utente Linuxhint2 dovrebbe anche essere aggiunto a iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2, Come puoi vedere nello screenshot qui sotto:

Generazione della configurazione del server ISCSI:

In questa sezione, ti mostrerò come generare un file di configurazione per il server ISCSI in modo che le modifiche apportate siano persistenti e sopravvivono al sistema di sopravvivere.

Innanzitutto, consentire l'accesso al file ISCSI Target ID 1 (IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1) da qualsiasi client ISCSI come segue:

$ sudo tgtadm --lld iscsi --op bind-mode target-tid 1--initiator-address tutto

Allo stesso modo, consentire l'accesso al file ISCSI Target ID 2 (IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2) da qualsiasi client ISCSI come segue:

$ sudo tgtadm --lld iscsi --op bind-mode target-tid 2--initiator-address tutto

Ora, scarica l'attuale configurazione del server ISCSI nel file di configurazione del server ISCSI /etc/tgt/target.conf come segue:

$ sudo tgt-admin-dump | sudo tee/etc/tgt/target.conf

L'attuale configurazione del server ISCSI deve essere salvata a /etc/tgt/target.conf file.

La password dell'utente non verrà salvata. Quindi, dovrai sostituire String String String con la password utente nel file /etc/tgt/target.Conf File.

Apri il file di configurazione del server ISCSI /etc/tgt/target.conf con il nano Editor di testo come segue:

$ sudo nano/etc/tgt/target.conf

Sostituire le corde Per favore_correct_the_password Con la rispettiva password utente qui:

Per il Utente Linuxhint1, Imposterò la password Secret1 e per il Utente LinuxHint2, Imposterò la password Secret2 come contrassegnato nello screenshot di seguito.

Una volta terminato, premere + X seguito da y e per salvare il /etc/tgt/target.Conf File:

Affinché le modifiche abbiano effetto, riavvia il Computer ISCSI-Server:

$ sudo riavvia

Una volta il Stivali per computer ISCSI-Server, Il server ISCSI dovrebbe essere in esecuzione Porta 3260, Come visualizzato nello screenshot qui sotto:

$ sudo ss -tlpn

Accesso ai volumi ZFS condivisi tramite ISCSI:

Una volta che hai impostato il Server ISCSI sul Computer ISCSI-Server, Puoi accedere al Volumi ZFS Vol1 e Vol2 tramite ISCSI sul computer ISCSI-Client.

Per accedere al Target ISCSI dal Computer ISCSI-Server, Devi conoscere l'indirizzo IP del Computer ISCSI-Server. Nel mio caso, l'indirizzo IP del mio Computer ISCSI-Server È 192.168.122.98. Sarà diverso per te. Quindi, assicurati di sostituirlo con il tuo da ora in poi.

$ hostname -i

Per scoprire tutti gli obiettivi ISCSI da ISCSI-Server (Indirizzo IP 192.168.122.98), Esegui il seguente comando:

$ sudo iScsiadm -Mode Discovery --Type SendTargets -Portale 192.168.122.98

Come puoi vedere, il ISCSI target IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 e IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 sono elencati.

Se non hai impostato l'autenticazione, dovresti essere in grado di accedere al iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 - -login

Allo stesso modo, puoi accedere al iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 -login

Se hai abilitato l'autenticazione per il ISCSI target IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 e IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2, Dovresti ricevere un messaggio di errore di autorizzazione come contrassegnato nello screenshot seguente.

Per accedere correttamente agli obiettivi ISCSI abilitati dall'autenticazione, impostare il metodo di autenticazione, il nome utente e la password per ciascun target ISCSI abilitato all'autenticazione.

È possibile impostare il metodo di autenticazione del iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 a Cap con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 --op Update -NAME NODE.sessione.AUTH.Authmethod --Value Cap

È possibile impostare il nome utente di accesso di iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 a Linuxhint1 con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 --op Update -NAME NODE.sessione.AUTH.Nome utente -Value LinuxHint1

È possibile impostare la password di accesso del iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 a Secret1 con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 --op Update -NAME NODE.sessione.AUTH.Password -Value Secret1

Una volta terminato l'impostazione del metodo di autenticazione, del nome utente di accesso e della password per il iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1, Dovresti essere in grado di accedere correttamente al iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 - -login

Dopo aver effettuato correttamente l'accesso al iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1, Un nuovo disco SCSI SDA dovrebbe essere allegato al COMPUTER ISCSI-Client. Nota, potrebbe essere diverso nel tuo caso:

$ sudo dmesg | grep -i attaccato

Come puoi vedere, un nuovo dispositivo di archiviazione SDA di dimensioni 1 GB viene aggiunto al iScsi-client computer. È il volume ZFS Vol1 che hai condiviso tramite ISCSI:

$ sudo lsblk -e7 -d

Allo stesso modo, imposta il metodo di autenticazione del iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 a Cap con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 --op Update -NAME NODE.sessione.AUTH.Authmethod --Value Cap

Imposta il nome utente di accesso del iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 a Linuxhint2 con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 --op Update -NAME NODE.sessione.AUTH.Nome utente -Value LinuxHint2

Imposta la password di accesso di iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 a Secret2 con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 --op Update -NAME NODE.sessione.AUTH.Password -Value Secret2

Accedere a iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 con il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 - -login

Dovresti essere in grado di accedere correttamente al iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2:

Dopo aver effettuato correttamente l'accesso al iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2, Un nuovo disco SCSI SDB dovrebbe essere allegato a COMPUTER ISCSI-Client. Nota, potrebbe essere diverso nel tuo caso.

$ sudo dmesg | grep -i attaccato

Come puoi vedere, un nuovo dispositivo di archiviazione SDB di dimensioni 2 GB viene aggiunto al COMPUTER ISCSI-Client. È il volume ZFS Vol2 che hai condiviso tramite ISCSI:

$ sudo lsblk -e7 -d

Volumi ZFS condivisi automaticamente tramite ISCSI:

Per accedere automaticamente a un target ISCSI, dovrai impostare il nodo.Proprietà di avvio dell'obiettivo ISCSI a automatico.

Per impostare il nodo.Proprietà startup del iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 Per automatico, eseguire il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol1 --op Update -NAME NODE.Startup -Value automatico

Per impostare il nodo.Proprietà startup dell'iqn target ISCSI.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 a automatico, Esegui il seguente comando:

$ sudo iScsiadm -nodo in modalità -TargetName IQN.2021-08.com.Linuxhint.ISCSI: pool1.Vol2 --op Update -NAME NODE.Startup -Value automatico

Infine, abilita il Servizio Systemd Open-ISCSI in modo che inizi automaticamente al momento dell'avvio con il seguente comando:

$ sudo systemctl abilita open-iscsi

Affinché le modifiche abbiano effetto, riavvia il COMPUTER ISCSI-Client con il seguente comando:

$ sudo riavvia

Una volta il Stivali per computer ISCSI-Client, Dovresti vedere il dispositivi di archiviazione SDA e SDB sul COMPUTER ISCSI-Client come contrassegnato nello screenshot di seguito:

$ sudo lsblk -e7 -d

Conclusione:

In questo articolo, ti ho mostrato come creare volumi ZFS e condividerli tramite ISCSI. Inoltre, ti ho mostrato come impostare l'autenticazione per gli obiettivi ISCSI. Ti ho mostrato come accedere agli obiettivi ISCSI in remoto e accedere ai volumi ZFS condivisi.

Riferimenti:

[1] Ubuntu MANPAGE: TGTADM - Utilità di amministrazione target SCSI Linux

[2] MANPAGE UBUNTU: TGT -ADMIN - Strumento di configurazione target SCSI Linux

[3] Ubuntu MANPAGE: ISCSIADM - Utilità dell'amministrazione aperta

[4] Servizio - ISCSI | Ubuntu

[5] Convenzioni di denominazione ISCSI