GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare un server di archiviazione iSCSI su Ubuntu 20.04 LTS

iSCSI sta per Internet Small Computer System Interface è un protocollo Storage Area Network che può essere utilizzato per condividere dispositivi a blocchi come partizioni HDD/SSD o partizioni LVM o bloccare file su il network. iSCSI funziona in un modello client-server e si basa su reti TCP/IP per inviare comandi SCSI tra il client iniziatore e la destinazione. iSCSI Target è un servizio su server iSCSI che fornisce accesso allo storage condiviso e iSCSI Initiator è un client iSCSI che si connette al target e accede allo storage condiviso.

In questo tutorial, spiegheremo come configurare i target iSCSI e l'iniziatore iSCSI sul server Ubuntu 20.04.

Requisiti

  • Un sistema che esegue Ubuntu 20.04 per target iSCSI con 1 GB di HDD esterno.
  • Un sistema che esegue Ubuntu 20.04 fresco per iniziatore iSCSI.
  • Un indirizzo IP statico 192.168.1.10 è configurato sulla destinazione iSCSI e 192.168.1.20 è configurato sull'iniziatore iSCSI.
  • Una password di root è configurata su entrambi i server.

Aggiorna il sistema

Prima di iniziare, è una buona idea aggiornare il sistema con gli ultimi pacchetti. Puoi aggiornarli con il seguente comando:

apt-get update -y
apt-get upgrade -y

Una volta aggiornati tutti i pacchetti, riavvia il sistema per applicare le modifiche.

Installa iSCSI Target

Per impostazione predefinita, il pacchetto iSCSI Target è disponibile nel repository predefinito di Ubuntu 20.04. Puoi installarlo eseguendo il seguente comando sul server di destinazione iSCSI:

apt-get install tgt -y

Dopo aver installato iSCSI Target, verificare lo stato del server con il seguente comando:

systemctl status tgt

Dovresti ottenere il seguente output:

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-07-11 07:13:04 UTC; 23s ago
       Docs: man:tgtd(8)
   Main PID: 7770 (tgtd)
     Status: "Starting event loop..."
      Tasks: 1
     Memory: 1.1M
     CGroup: /system.slice/tgt.service
             ??7770 /usr/sbin/tgtd -f

Jul 11 07:13:04 ubuntu2004 systemd[1]: Starting (i)SCSI target daemon...
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: bs_init(387) use signalfd notification
Jul 11 07:13:04 ubuntu2004 systemd[1]: Started (i)SCSI target daemon.

A questo punto, iSCSI Target è installato nel tuo server, ora puoi procedere al passaggio successivo.

Configura destinazione iSCSI

Innanzitutto, dovrai creare un dispositivo LUN (Logical Unit Number) sul tuo server iSCSI. LUN è un dispositivo di archiviazione back-end che fa parte di un dispositivo SCSI fisico. Tutte le LUN mappate sull'iSCSI Target sono virtualmente collegate al sistema operativo del client. Pertanto, gli iniziatori possono stabilire e gestire file system su iSCSI LUN.

Puoi configurarlo creando un nuovo file di configurazione:

nano /etc/tgt/conf.d/iscsi.conf

Aggiungi le seguenti righe:

<target iqn.2020-07.example.com:lun1>
     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass
</target>

Salva e chiudi il file quando hai finito.

Dove:

  • La prima riga definisce il nome della LUN.
  • La seconda riga definisce la posizione e il nome del dispositivo di archiviazione sul server iSCSI Target.
  • La terza riga definisce l'indirizzo IP dell'iniziatore iSCSI.
  • La quarta riga definisce il nome utente/password in entrata.
  • La quinta riga definisce il nome utente/password che la destinazione fornirà all'iniziatore per consentire l'autenticazione CHAP reciproca.

Quindi, riavvia il servizio iSCSI per applicare le modifiche:

systemctl restart tgt

Successivamente, verifica il server di destinazione iSCSI con il seguente comando:

tgtadm --mode target --op show

Dovresti ottenere il seguente output:

Target 1: iqn.2020-07.example.com:lun1
    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
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.1.10

A questo punto, il server di destinazione iSCSI è installato e configurato. Ora puoi procedere al passaggio successivo.

Installa e configura iSCSI Initiator

Quindi, vai al computer dell'iniziatore iSCSI e installa il pacchetto dell'iniziatore iSCSI con il seguente comando:

apt-get install open-iscsi -y

Una volta completata l'installazione, scopri il server di destinazione iSCSI per scoprire le destinazioni condivise utilizzando il comando seguente:

iscsiadm -m discovery -t st -p 192.168.1.10

Dovresti vedere il seguente output:

192.168.1.10:3260,1 iqn.2020-07.example.com:lun1

Successivamente, dovrai definire il nome del dispositivo LUN nel file initiatorname.iscsi:

nano /etc/iscsi/initiatorname.iscsi

Aggiungi il tuo nome LUN di destinazione iSCSI come mostrato di seguito:

InitiatorName=iqn.2020-07.example.com:lun1

Salva e chiudi il file quando hai finito.

Successivamente, sarà necessario definire le informazioni CHAP configurate sulla destinazione iSCSI per accedere alla destinazione iSCSI dall'iniziatore iSCSI. Il file di configurazione del nodo esisterà nella directory '/etc/iscsi/nodes/' e avrà una directory per LUN disponibile.

Puoi definirlo modificando il seguente file:

nano /etc/iscsi/nodes/iqn.2020-07.example.com\:lun1/192.168.1.10\,3260\,1/default

Aggiungi / Modifica le seguenti righe:

node.session.auth.authmethod = CHAP  
node.session.auth.username = iscsi-user
node.session.auth.password = password          
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass         
node.startup = automatic

Salvare e chiudere il file, quindi riavviare il servizio iniziatore iSCSI con il seguente comando:

systemctl restart open-iscsi iscsid

Puoi anche verificare lo stato del servizio con il seguente comando:

systemctl status open-iscsi

Dovresti ottenere il seguente output:

? open-iscsi.service - Login to default iSCSI targets
     Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2020-07-11 07:24:19 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 3861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 3867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 3867 (code=exited, status=0/SUCCESS)

Jul 11 07:24:19 initiator systemd[1]: Starting Login to default iSCSI targets...
Jul 11 07:24:19 initiator iscsiadm[3861]: Logging in to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jul 11 07:24:19 initiator iscsiadm[3861]: Login to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] success>
Jul 11 07:24:19 initiator systemd[1]: Finished Login to default iSCSI targets.

Puoi anche verificare la connessione iSCSI con il seguente comando:

iscsiadm -m session -o show

Dovresti ottenere il seguente output:

tcp: [2] 192.168.1.10:3260,1 iqn.2020-07.example.com:lun1 (non-flash)

Puoi anche verificare il dispositivo di archiviazione condiviso dalla destinazione iSCSI con il comando seguente:

lsblk

Dovresti vedere l'sdb del dispositivo condiviso nel seguente output:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
??sda1   8:1    0   80G  0 part /
sdb      8:16   0 1000M  0 disk

Crea un file system su un dispositivo condiviso

Per utilizzare il dispositivo condiviso sull'iniziatore iSCSI, dovrai creare un file system sul dispositivo condiviso (sdb) e montarlo per rendere utile questo dispositivo.

Innanzitutto, crea un file system sul dispositivo condiviso (sdb) con il seguente comando:

fdisk /dev/sdb

Rispondi a tutte le domande come mostrato di seguito per creare un file system:

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9743ddcf.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-2047999, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2047999, default 2047999): 

Created a new partition 1 of type 'Linux' and of size 999 MiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Quindi, formatta la partizione con il seguente comando:

mkfs.ext4 /dev/sdb1

Dovresti ottenere il seguente output:

mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 255744 4k blocks and 64000 inodes
Filesystem UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Quindi, monta la partizione nella directory /mnt con il seguente comando:

mount /dev/sdb1 /mnt

Ora puoi verificare la partizione montata con il seguente comando:

df -h

Dovresti ottenere il seguente output:

Filesystem      Size  Used Avail Use% Mounted on
udev            981M     0  981M   0% /dev
tmpfs           199M  588K  199M   1% /run
/dev/sda1        79G  1.8G   74G   3% /
tmpfs           994M     0  994M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           994M     0  994M   0% /sys/fs/cgroup
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1       968M  2.5M  899M   1% /mnt

Conclusione

Nella guida sopra, hai imparato come configurare la destinazione e l'iniziatore iSCSI sul server Ubuntu 20.04. Hai anche imparato a condividere un dispositivo sul server di destinazione e ad accedervi dall'iniziatore. Sentiti libero di chiedermi se hai domande.


Ubuntu
  1. Come configurare server e client Kerberos su Ubuntu 18.04 LTS

  2. Come configurare iSCSI Storage Server su Ubuntu 18.04 LTS

  3. Come configurare il server Rsyslog su Ubuntu 18.04 LTS

  4. Come configurare Elasticsearch su Ubuntu 18.04 e 16.04 LTS

  5. Imposta il server Rsyslog su Ubuntu 20.04 - Come farlo?

Come configurare Git Server su Ubuntu 20.04

Come configurare il server Rsyslog su Ubuntu

Come configurare il server DHCP su Ubuntu

Come eseguire l'aggiornamento a Ubuntu Server 22.04 LTS

Come installare Jellyfin Media Server su Ubuntu 20.04 LTS Server/Desktop

Come configurare server e client NTP su Ubuntu 20.04 LTS