Vyhledávání na webu

Jak nastavit server iSCSI (cíl) a klienta (iniciátor) na Debianu 9


Ve světě datových center se minimálním standardem staly velkokapacitní sítě Storage Area Network (SAN). Vzhledem k tomu, že poskytovatelé cloudu a virtualizace mají i nadále masivní dopady na technologický svět, je potřeba ještě větší úložný prostor SAN.

Většina hardwaru SAN se skládá z minimalistického řadiče (nebo sady řadičů) a velké kolekce vysokokapacitních disků, které jsou všechny konfigurovány tak, aby podporovaly vysokou dostupnost a integritu dat.

Mnoho z těchto specializovaných produktů je vyráběno velkými dodavateli, jako jsou Netapp, Dell Equalogic, HP Storageworks nebo EMC, a jsou k nim připojeny cenovky, které si mohou dovolit jen ty největší podniky.

Realisticky tato zařízení nejsou nic jiného než velká pole pevných disků s řadičem, který poskytuje prostor těchto pevných disků klientům v síti. V průběhu let existovalo mnoho technologií, které tuto funkcionalitu nebo podobnou funkcionalitu poskytují za podstatně levnější cenu.

Distribuce Debian GNU/Linux poskytuje balíčky, které umožňují systému Debian sloužit účelu úložiště SAN na podnikové úrovni za pouhý zlomek ceny! To umožňuje každému, od základních domácích uživatelů nebo velkých datových center, získat výhody úložiště SAN, aniž by museli utrácet jmění za proprietární řešení dodavatele.

Tento článek se podívá na to, jak lze systém Debian 9 (Stretch) nastavit tak, aby obsluhoval místo na disku pomocí systému známého jako Internet Small Computer Systems Interface nebo zkráceně iSCSI. iSCSI je standard založený na Internet Protocol (IP) pro poskytování blokového (pevného disku) úložiště jiným systémům. iSCSI funguje v modelu klientského serveru, ale k odlišení klienta od serveru používá různé názvy.

V terminologii iSCSI je server, který poskytuje 'místo na disku', známý jako iSCSI 'Target' a systém, který požaduje /využití místa na disku se nazývá iSCSI 'Iniciátor'. Jinými slovy, „Iniciátor“ požaduje blokové úložiště od „Cíle“.

Nastavení prostředí

Tato příručka vás provede základním nastavením, které zahrnuje jednoduchý iSCSI server (cíl) a klient (iniciátor), obojí běží 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

Síť lze zobrazit následovně:

Debian iSCSI Target Configuration

Ve světě iSCSI se za cíl považuje hostitel, který obsahuje úložná zařízení, která má použít iniciátor.

V tomto článku je jako cíl použit server s IP adresou 192.168.56.101. Všechny konfigurace pro tuto sekci budou provedeny na tomto hostiteli.

Prvním krokem je instalace potřebných balíčků, které umožní systému Debian obsluhovat cíle iSCSI. Tento softwarový balíček je známý jako Target Framework (TGT).

Další položkou, která se v této příručce používá, jsou nástroje Logical Volume Management (LVM) jako Logical Volumes (LVs) bude použit jako záloha úložiště pro cíl iSCSI.

Oba balíčky lze nainstalovat pomocí následujících příkazů.


apt-get update
apt-get install tgt lvm2

Po instalaci balíčků se LVM použije k přípravě pevných disků na cíli pro použití jako iSCSI LUN. První příkaz se používá k přípravě disků pro zahrnutí do nastavení LVM. Nezapomeňte příkaz upravit podle potřeby pro různé scénáře!


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

Jakmile jsou disky připraveny pomocí výše uvedeného příkazu „pvcreate“, je čas vytvořit skupinu svazků z těchto konkrétních disků. Skupina svazků je nutná k vytvoření logických svazků, které budou později fungovat jako úložiště iSCSI.

Chcete-li vytvořit skupinu svazků, je zapotřebí příkaz „vgcreate“.


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

Všimněte si ve výše uvedeném výstupu, že systém odpovídá, že Skupina svazků byla vytvořena, ale vždy je dobré to znovu zkontrolovat, jak je vidět výše, pomocí příkazu „vgs“. Kapacita této skupiny svazků je pouze 9,99 GB. I když se jedná o obzvláště malou skupinu svazků, postup by byl stejný pro disky s větší kapacitou!

Dalším krokem je vytvoření logického svazku, který bude fungovat jako disk pro klienta iSCSI (iniciátor). V tomto příkladu bude použita celá skupina svazků, ale není to nutné.

Logický svazek bude vytvořen pomocí příkazu „lvcreate“.


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

Výše uvedený příkaz „lvcreate“ může být na první pohled trochu matoucí, ale rozdělení je takové:

  • lvcreate – Příkaz používaný k vytvoření logického svazku.
  • -l 100% ZDARMA – Vytvořte logický svazek s využitím veškerého volného místa ve skupině svazků.
  • -n tecmint_lun1 – Název logického svazku, který má být vytvořen.
  • tecmint_iscsi – Název skupiny disků, ve které se má vytvořit logický disk.

Po vytvoření logického svazku je čas vytvořit skutečný LUN (Číslo logické jednotky). LUN bude úložné zařízení, ke kterému se iniciátor připojí a použije jej později.

Vytvoření LUN je velmi jednoduché a vyžaduje jen několik kroků. Prvním krokem bude vytvoření konfiguračního souboru. Tento soubor bude umístěn v adresáři ‚/etc/tgt/conf.d‘ a pro tento článek se bude jmenovat ‚TecMint_iscsi.conf‘.

K vytvoření tohoto souboru použijte textový editor.


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

V tomto souboru budou nakonfigurovány všechny potřebné konfigurační informace pro tuto LUN. Existuje mnoho možností, které lze umístit do tohoto souboru, ale prozatím bude základní LUN se vzájemným Challenge Handshake Authentication Protocol (CHAP) být nakonfigurován.

Definice LUN bude existovat mezi dvěma příkazy „cíl“. Další parametry, které lze vložit do příkazu target, naleznete na stránce manuálu pro soubor „targets.conf“ zadáním „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>

Nahoře se toho děje hodně. Rychlé vysvětlení může být užitečné pro většinu.

  • První řádek začíná konkrétní konfiguraci iSCSI LUN. V tomto případě LUN označený jako „iqn.2018-02.linux-console.net:lun1“. Část „iqn“ označuje, že se bude jednat o kvalifikovaný název iSCSI. „2018-02“ je libovolně zvolená kombinace dat. „linux-console.net“ je doména, do které tato konkrétní LUN patří. Nakonec se jako název pro tento konkrétní cíl používá „lun1“.
  • Druhý řádek výše znázorňuje komentář. Komentáře mohou existovat v cílových konfiguračních souborech a musí jim předcházet symbol „#“.
  • Třetí řádek je místo, kde existuje skutečný úložný prostor, který bude použit iniciátorem. V tomto případě bude zálohou úložiště logický svazek, který byl vytvořen dříve v průvodci.
  • Čtvrtý řádek je adresa IP, která se očekává od iniciátora. I když to není povinná položka konfigurace, může to pomoci zvýšit zabezpečení.
  • Pátý řádek je příchozí uživatelské jméno/heslo. Stejně jako výše uvedená adresa iniciátoru není ani tento parametr vyžadován, ale může pomoci zajistit LUN. Vzhledem k tomu, že tato příručka také pokrývá vzájemný protokol iSCSI CHAP, je tento parametr povinný. Tento řádek označuje uživatelské jméno a heslo, které bude cíl očekávat od iniciátora, aby se mohl připojit k této LUN.
  • Šestý řádek je uživatelské jméno/heslo, které cíl poskytne iniciátorovi, aby umožnil vzájemné ověření CHAP. Normálně tento parametr není vyžadován, ale tento článek se zabývá vzájemným ověřováním CHAP, takže je tento parametr povinný.
  • Poslední řádek je závěrečným příkazem pro definici cíle. Pozor na závěrečné lomítko před cílem klíčového slova!

Jakmile zadáte příslušné konfigurace pro LUN, uložte změny a ukončete textový editor. Pokud používáte nano, stiskněte ctrl+o pro uložení a poté stiskněte ctrl+x pro ukončení nano.

Po vytvoření konfiguračního souboru by měla být služba tgt restartována, aby tgt věděla o nových cílech a související konfiguraci.

To lze provést jedním z následujících příkazů a závisí na používaném systému init.


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

Po restartování tgt je důležité zkontrolovat, zda je cíl iSCSI zpřístupněn podle vytvořeného konfiguračního souboru.

To lze provést pomocí příkazu „tgtadm“.


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

Tím je konfigurace cíle ukončena. V další části bude provedena konfigurace iniciátoru.

Konfigurace Debian iSCSI Initiator

Dalším krokem při použití dříve nakonfigurovaného cíle iSCSI je konfigurace iniciátoru iSCSI.

V tomto článku bude jako iniciátor použit jiný systém Debian 9, ale jakýkoli systém, který může využívat protokol iSCSI, se může připojit k dříve nakonfigurovanému cíli; to může zahrnovat hypervizory jako XenServer/ESXi nebo jiné distribuce jako Red Hat, Debian nebo Ubuntu.

Prvním krokem v tomto procesu pro tento iniciátor Debian je instalace správných balíčků pro iSCSI.


apt-get update
apt-get install open-iscsi

Jakmile apt dokončí konfiguraci balíčků open-iscsi, může začít konfigurace iSCSI iniciátoru. Prvním krokem bude komunikace s cílem, aby byly připraveny počáteční konfigurační informace pro cíl.


iscsiadm -m discovery -t st -p 192.168.56.101

Když se tento příkaz spustí, odpoví zpět s názvem lun nakonfigurovaného dříve pro tohoto konkrétního hostitele. Výše uvedený příkaz také vygeneruje dva soubory pro nově objevené informace LUN.

Soubor vytvořený pro tento uzel nyní bude muset mít nakonfigurovány informace CHAP, aby byl tento cíl iSCSI skutečně dostupný pro iniciátor.

Technicky lze tyto informace nastavit pro celý systém jako celek, ale v případě, že se hostitel připojí k různým LUN s různými pověřeními, umístění těchto pověření do konkrétního konfiguračního souboru uzlu může zmírnit jakékoli problémy.

Konfigurační soubor uzlu bude existovat v adresáři „/etc/iscsi/nodes/“ a bude mít k dispozici adresář pro každou LUN. V případě tohoto článku (všimněte si, že cesty se změní, pokud se změní jména/IP adresy).


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

Pro práci s tímto souborem lze použít libovolný textový editor.


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

V tomto souboru bude několik již nakonfigurovaných možností pro příslušný cíl, které byly určeny při dřívějším spuštění příkazu „iscsiadm“.

Protože toto konkrétní nastavení cíl/iniciátor Debianu používá vzájemný CHAP, je třeba změnit některé další možnosti a přidat je do tohoto souboru a poté se přihlásit k cíli iSCSI provedeny.

Změny v tomto souboru jsou:


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

Výše uvedené možnosti umožní tomuto cíli ověřit se vůči iniciátorovi a také umožní iniciátorovi ověřit se vůči cíli .

V tomto konkrétním souboru je další možnost, kterou může být nutné změnit v závislosti na preferencích správce, a to je parametr ‚node.startup‘.

Pokud budete postupovat podle tohoto návodu, bude v tomto okamžiku možnost „node.startup“ nastavena na „manuální“. To nemusí být žádoucí. Pokud si administrátor přeje mít cíl iSCSI připojený při spuštění systému, změňte „manuální“ na „automaticky“ takto:


node.startup = automatic

Po provedení výše uvedených změn soubor uložte a ukončete. V tomto okamžiku je třeba restartovat službu open-iscsi iniciátor, aby bylo možné přečíst tyto nové změny a připojit se k cíle iSCSI.

To lze provést jedním z následujících příkazů v závislosti na používaném systému init.


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

V zeleném poli výše si všimněte, že iniciátor iSCSI se dokázal přihlásit do cíle. Abychom dále potvrdili, že cíl iSCSI je skutečně k dispozici iniciátorovi, můžeme pomocí 'lsblk zkontrolovat, zda v systému nejsou k dispozici další diskové jednotky. >' a kontrola výstupu pro další jednotky.


lsblk

Dalším příkazem, který lze na iniciátoru potvrdit připojení k cíli, je „iscsiadm“ jako takový:


iscsiadm -m session

Posledním místem pro potvrzení připojení by byl samotný cíl pomocí příkazu „tgtadm“ k vypsání všech připojení iSCSI.


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

Od tohoto okamžiku lze nově připojené zařízení iSCSI používat podobně jako jakýkoli běžně připojený disk! Rozdělování, vytváření souborového systému, připojování a/nebo trvalé připojování lze zvládnout normálně.

U zařízení iSCSI je třeba si uvědomit jednu velkou opatrnost, pokud cíl iSCSI obsahuje důležité souborové systémy, které jsou potřebné při spouštění iniciátoru, ujistěte se, že pomocí položky '_netdev' v souboru '/etc/fstab' zajistíte, že zařízení iSCSI je připojeno, než bude systém pokračovat v zavádění!