GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit Linux iSCSI Storage Target a vzdálený klientský přístup

iSCSI znamená Internet Small Computer System Interface.

To funguje na vrstvě TCP/IP a umožňuje odesílání příkazů SCSI přes místní sítě (LAN).

Používá se pro přístup k úložišti ve vaší síti přes TCP/IP pomocí přenosů dat na úrovni bloku.

Často existuje srovnání mezi NFS vs iSCSI. Klíčovým rozdílem je, že NFS je implementace na úrovni souborů, zatímco iSCSI je implementace na úrovni bloků.

V implementacích na úrovni bloků, jako je iSCSI a Fibre Channel, nabízí pole úložiště kolekci bloků klientovi, který pak zformátuje toto nezpracované úložiště jakýmkoli souborovým systémem, který se rozhodne použít.

V daném pořadí pro přístup k úložišti přes iscsi potřebujeme mít následující komponenty:

  1. Iniciátor iSCSI (hardware/software) – Toto je klient iscsi, který může odesílat příkazy iscsi přes síť TCP/IP. Obvykle je to váš síťový adaptér na vašem serveru a může být fyzický nebo virtuální s IP konfigurovanou ve stejné podsíti s rozhraním iscsi pole úložiště.
  2. Cíl iSCSI (váš uzel úložiště) – Toto je váš uzel úložiště, který si můžete nakonfigurovat sami, nebo to může být fyzické pole od dodavatele, který podporuje konfiguraci iscsi
  3. Přepínač iSCSI (volitelný) – Přepínač iscsi je zde volitelný, ale aby bylo možné oddělit provoz hostitele od provozu iscsi v podnikových nasazeních, doporučuje se pro provoz iscsi použít samostatný přepínač.

V tomto tutoriálu se podíváme, jak nastavit vlastní uzel úložiště, který podporuje konfiguraci iscsi a přistupovat k úložišti z klienta iscsi na počítači Centos 6.

Stejné postupy by měly fungovat pro verzi RHEL 6 (CentOS 6). Pro CentOS 7 je postup mírně odlišný pomocí targetcli, kterému se budeme věnovat v jiném článku.

1. Nainstalujte SCSI Target Utils a Start tgtd

Nejprve nainstalujte scsi-target-utils pomocí příkazu yum na storage node, který je nutný pro konfiguraci iSCSI.

yum install scsi-target-utils

Pokud ve svém systému ještě nemáte nainstalovaný Perl, výše uvedený příkaz nainstaluje perl a několik dalších závislostí (například:sg3_utils) automaticky.

Tím se nainstaluje příkaz tgtadm, jak je znázorněno níže.

# which tgtadm
/usr/sbin/tgtadm

Spusťte cílového démona SCSI, jak je znázorněno níže.

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

Pomocí příkazu chkconfig se ujistěte, že se spouští automaticky během spouštění systému.

chkconfig tgtd on

2. Přidat nový cíl iSCSI Target pomocí tgtadm

Pomocí příkazu tgtadm přidejte nový cíl iSCSI na storage node pomocí následující syntaxe:

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

Následující příklad vytvoří cíl s id cíle 1 s níže uvedeným iqn,

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

Ve výše uvedeném příkazu:

  • Příkaz tgtadm je nástroj pro správu cíle SCSI pro Linux
  • –lld iscsi určuje, že používáme ovladač iscsi (Můžete také použít -L místo –lld)
  • –op new určuje operaci, v tomto případě vytváříme nový cíl (Můžete také použít -o místo –op)
  • – režim cíl označuje, že vytváříme cíl. Další možné režimy jsou:logicalunit, account, portal, conn, sys. (Můžete také použít -m místo -mode)
  • –tid 1 určuje cílové id, které je v tomto příkladu 1 (můžete také použít -t místo –tid)
  • -T určuje název cíle (můžete také použít –targetname místo -T)

3. Zobrazit konfiguraci cíle iSCSI Target

Jakmile je cíl vytvořen, můžete zobrazit podrobnosti pomocí operace „zobrazit“, jak je znázorněno níže. Tím získáte systémové informace a informace o LUN o všech cílech dostupných ve vašem systému.

Jak vidíte z následujícího výstupu, máme pouze jeden cíl (Target 1), což je ovladač iSCSI, s jednou 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:

Poznámka:Ve výše uvedeném výstupu je „Cesta zálohovacího úložiště“ aktuálně Žádná, protože jsme k tomuto iSCSI zatím nepřidružili žádnou cestu fyzického úložiště.

4. Přidejte LUN do cíle iSCSI

V následujícím příkladu přidáme existující lun, což je /storage/lun01, který je připojený a dostupný na našem storage nodu, do cíle iSCSI, který jsme vytvořili.

Pro existující LUN (/storage/lun01) byste také měli vhodně nastavit kontext SELinux, jak je uvedeno níže.

semanage fcontext -a -t tgtd_var_lib_t /storage/lun01

restorecon -Rv /storage/lun01

Pokud se vám za účelem dočasného testování zobrazuje „Neplatný požadavek“, možná budete chtít deaktivovat SELinux nastavením SELinuxu do permisivního režimu, abyste zjistili, zda to problém vyřeší, a zúžit problém na oprávnění SELinux.

Nyní pomocí příkazu tgtadm přidejte /storage/lun01 do cíle iSCSI, který jsme vytvořili dříve.

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

Ve výše uvedeném příkazu:

  • většina možností je stejná, jak jsme vysvětlili v předchozím příkazu tgtadm výše.
  • – logická jednotka v režimu. Upozorňujeme, že dříve jsme pro režim používali „target“, ale zde pro režim používáme logickou jednotku.
  • –lun označuje id LUN, které je v tomto příkladu 1 (můžete také použít -l místo –lun)
  • –backing-store označuje cestu fyzického úložiště na serveru úložiště. V našem příkladu je to /storage/lun01 (Můžete také použít -b místo volby –backing-store)
  • –tid 1 znamená, že tuto danou LUN připojujete ke stávajícímu cílovému ID 1, které jsme vytvořili dříve.

Nyní si znovu prohlédněte podrobnosti o iSCSI ve vašem systému.

Tentokrát však v LUN 1 bude „Cesta zálohovacího úložiště“ v následujícím výstupu ukazovat na cestu úložiště, kterou jsme přidružili k tomuto iSCSI. V našem příkladu je to /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:

Z nějakého důvodu, pokud jste ve výše uvedeném příkazu udělali chybu a chtěli byste smazat přidružení LUN1, které jsme vytvořili výše, použijte následující příkaz.

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

Ve výše uvedeném příkazu:

  • Vše je stejné jako u předchozího příkazu
  • Ale zde je parametr -op (což je operace) delete.
  • Tímto smažete lun1 z iSCSI tid 1 (cíl 1)

5. Nastavte omezení ACL pro iSCSI

Dále musíte nastavit ACL, abyste umožnili iniciátorům, kteří mají přístup k tomuto cíli scsi.

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

Ve výše uvedeném příkazu:

  • Většina možností je do značné míry podobná našim předchozím příkazům
  • Volba -I VŠECHNY znamená, že cíli umožňujeme přijímat VŠECHNY iniciátory (Můžete také použít –initiator-address místo -I)

Když zobrazíte podrobnosti iSCSI pomocí operace „zobrazit“, všimnete si informací ACL na konci výstupu, jak je uvedeno níže.

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

Pokud chcete omezit pouze klienta, který potřebuje přístup k úložišti, můžete použít následující příkaz a zadat konkrétní ip-adresu.

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

Pokud chcete omezit přístup k určité podsíti, můžete zadat podsíť místo ip-adresy, jak je uvedeno níže.

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

6. Povolit přístup k portu 3260

Pokud používáte ip-tables, přidejte pravidla ip-tables a povolte port 3260, jak je uvedeno níže.

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

Ověřte, že je port 3260 otevřený pomocí příkazu netstat, jak je znázorněno níže.

# 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

Poznámka:Až do tohoto okamžiku byly všechny výše uvedené příkazy prováděny na uzlu storage serveru. Od nynějška budou všechny příkazy v následující sekci prováděny na klientském počítači, který se musí připojit k úložnému serveru.

7. Na klientovi:Objevte iSCSI

Na klientovi, než objevíte iSCSI, neuvidíte nový disk iSCSI. Například následující výstup nic nezobrazí.

fdisk -l /dev/sdb

Nyní je veškerá konfigurace cílové strany dokončena a k lun lze přistupovat přes iscsi z klienta. Níže uvedené postupy vám ukážou, jak nakonfigurovat klientskou stranu pro přístup k úložišti.

Na klientský server nainstalujte balíček iscsi-initiator-utils, jak je znázorněno níže.

yum install iscsi-initiator-utils

Dále zjistěte cíl iSCSI pomocí příkazu iscsiadm, jak je znázorněno níže.

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

Výše uvedený příkaz zobrazí následující výstup:

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

Ve výše uvedeném příkazu:

  • Příkaz iscsiadm je nástroj pro správu open-iscsi
  • –mode discover označuje, že zde zjišťujeme server iSCSI. Další možné režimy jsou:discoverydb, node, fw, host iface nebo session. (Můžete také použít -m místo -mode)
  • – zde zadejte cíle pro odeslání. Další možné hodnoty jsou:sendtargets, fw a iSNS. Místo sendtargets můžete také použít zkratku st. (Můžete také použít -t místo -type)
  • –portal zadejte ip-adresu uzlu úložiště iSCSI, který jsme nastavili dříve (Můžete také použít -p místo –portal).
  • Pokud používáte iSCSI na jiném než výchozím portu (jakýkoli jiný než 3260), zadejte ji pro adresu ip za adresu ip. Například 192.168.2.166:3261

Poznámka:Pokud se zobrazí chyba „No route to host“, pak iptables na cíli nebo klientovi nejsou správně nakonfigurovány.

8. Na klientovi:Přihlaste se k cílové relaci iSCSI

Jakmile je proces zjišťování úspěšně dokončen, musíte se přihlásit k cílové relaci iscsi pomocí následujícího příkazu:

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

Výše uvedený příkaz zobrazí následující výstup:

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.

Ve výše uvedeném příkazu:

  • Většina možností je podobná předchozímu příkazu.
  • Pro režim zde používáme uzel (místo zjišťování)
  • -targetname určuje název cíle. Toto je cílový název, který jsme zadali na storage nodu dříve, když jsme vytvářeli iSCSI (Můžete také použít -T místo –cílový název)
  • –možnost přihlášení se přihlásí ke všem nalezeným cílům. V našem případě se přihlásí k našemu serveru úložiště iSCSI specifikovanému ve volbě –portal.

Nyní byste měli na výstupu fdisku vidět své nové zařízení iscsi. Můžete jej naformátovat, přidat do lvm a použít podle potřeby.

Výstup příkazu fdisk nyní zobrazí zařízení.

[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

Poznámka:Výše ​​uvedený disk nepochází z klientského počítače, pochází z úložného serveru jako iSCSI.


Linux
  1. Jak nastavit NTP server a klienta na Debian 9 Stretch Linux

  2. Jak nastavit iSCSI Storage Server na Ubuntu 20.04 LTS

  3. Jak získat přístup k souborovým systémům Linux ve Windows 10 a WSL 2

  1. Jak nastavit iSCSI Storage Server na Ubuntu 18.04 LTS

  2. Jak synchronizovat místní a vzdálené adresáře v Linuxu

  3. Jak nastavit VNC Server (Linux Remote Desktop Access) na CentOS/RHEL a Fedoře

  1. Jak nastavit NFS server a klienta na Rocky/Alma Linux 8

  2. Jak nainstalovat a nakonfigurovat klienta Putty SSH na ploše Linux

  3. Jak přenášet soubory v Linuxu pomocí SCP a Rsync