Kako nastaviti strežnik iSCSI (cilj) in odjemalca (pobudnik) v Debianu 9


V svetu podatkovnih centrov so omrežja za shranjevanje velikih zmogljivosti (SAN) postala minimalni standard. Ker ponudniki oblakov in virtualizacija še naprej močno vplivajo na tehnološki svet, je postala očitna potreba po še več prostora za shranjevanje SAN.

Večino strojne opreme SAN sestavljajo minimalistični krmilnik (ali niz krmilnikov) in velika zbirka pogonov velike zmogljivosti, ki so konfigurirani tako, da podpirajo velike količine razpoložljivosti in celovitosti podatkov.

Številne od teh specializiranih izdelkov izdelujejo znani prodajalci, kot so Netapp, Dell Equalogic, HP Storageworks ali EMC, na njih pa so pritrjene oznake cen, ki si jih lahko privoščijo le največja podjetja.

V resnici te naprave niso nič drugega kot veliki nizi trdega diska s krmilnikom, ki zagotavlja prostor teh trdih diskov zunanjim odjemalcem. V preteklih letih obstaja veliko tehnologij, ki ponujajo to ali podobno funkcionalnost po bistveno nižji ceni.

Distribucija Debian GNU/Linux ponuja pakete, ki sistemu Debian omogočajo, da služi le namenu shranjevalne naprave SAN na ravni podjetja, le za del stroškov! To omogoča vsem, od osnovnih domačih uporabnikov ali velikih podatkovnih centrov, da izkoristijo prednosti shranjevanja SAN, ne da bi morali zapraviti bogastvo za lastniško rešitev prodajalca.

Ta članek bo obravnaval, kako je mogoče sistem Debian 9 (raztezanje) nastaviti tako, da bo s pomočjo sistema, znanega kot vmesnik za male računalniške sisteme v internetu ali na kratko iSCSI, namenjen servisiranju prostora na disku. iSCSI je standard, ki temelji na internetnem protokolu (IP) za zagotavljanje blokovskega (trdega diska) prostora za shranjevanje drugim sistemom. iSCSI deluje v modelu odjemalskega strežnika, vendar uporablja različna imena za razlikovanje odjemalca od strežnika.

V terminologiji iSCSI je strežnik, ki streže „prostor na disku“, znan kot „cilj“ iSCSI, sistem, ki zahteva/uporablja prostor na disku, pa je imenovan „pobudnik“ iSCSI. Z drugimi besedami, "pobudnik" zahteva shranjevanje bloka od "cilja".

Ta priročnik bo predstavil osnovno nastavitev, ki vključuje preprost strežnik iSCSI (cilj) in odjemalca (pobudnika), ki izvajata 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

Omrežje si lahko ogledate na naslednji način:

Konfiguracija cilja Debian iSCSI

V svetu iSCSI se cilj šteje za gostitelja, ki vsebuje pomnilniške naprave, ki jih mora uporabiti pobudnik.

V tem članku se za cilj uporablja strežnik z IP 192.168.56.101. Za ta razdelek bodo izvedene vse konfiguracije na tem gostitelju.

Prvi korak je namestitev potrebnih paketov, ki sistemu Debian omogočajo, da služi ciljem iSCSI. Ta programski paket je znan kot Target Framework (TGT).

Drugi element, ki se uporablja za ta priročnik, so orodja za upravljanje logičnih nosilcev (LVM), saj bodo kot podlaga za shranjevanje za cilj iSCSI uporabljeni logični nosilci (LV).

Oba paketa je mogoče namestiti z naslednjimi ukazi.

# apt-get update
# apt-get install tgt lvm2

Ko so paketi nameščeni, bo LVM uporabljen za pripravo trdih diskov na tarči za uporabo kot iSCSI LUN. Prvi ukaz se uporablja za pripravo diskov za vključitev v nastavitev LVM. Ukaz po potrebi spremenite za različne scenarije!

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

Ko so diski pripravljeni z zgornjim ukazom 'pvcreate', je čas, da iz teh diskov ustvarite skupino nosilcev. Skupina nosilcev je potrebna za ustvarjanje logičnih nosilcev, ki bodo kasneje delovali kot shramba iSCSI.

Za ustvarjanje skupine nosilcev je potreben ukaz 'vgcreate'.

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

V zgornjem izpisu opazite, da se sistem odziva, da je bila skupina glasnosti ustvarjena, vendar je vedno dobro, da dvakrat preverite, kot je prikazano zgoraj, z ukazom 'vgs'. Zmogljivost te skupine nosilcev je le 9,99 GB. Čeprav je to posebej majhna skupina, bi bil postopek enak za diske večje prostornine!

Naslednji korak je ustvarjanje logičnega nosilca, ki bo deloval kot disk odjemalca (pobudnika) iSCSI. V tem primeru bo uporabljena celotna skupina nosilcev, vendar ni nujna.

Logični nosilec bo ustvarjen z ukazom 'lvcreate'.

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

Zgornji ukaz 'lvcreate' je lahko na prvi pogled nekoliko zmeden, vendar je razčlenitev taka:

  • lvcreate - Ukaz za ustvarjanje logičnega nosilca.
  • -l 100%BREZPLAČNO-Ustvarite logični nosilec z uporabo prostega prostora skupine nosilcev.
  • -n tecmint_lun1-Ime logičnega nosilca za ustvarjanje.
  • tecmint_iscsi - Ime skupine nosilcev za ustvarjanje logičnega nosilca znotraj.

Ko je logični nosilec ustvarjen, je čas, da ustvarite dejanski LUN (številka logične enote). LUN bo naprava za shranjevanje, s katero se bo pobudnik povezal in uporabil pozneje.

Ustvarjanje LUN -a je zelo preprosto in zahteva le nekaj korakov. Prvi korak bo ustvarjanje konfiguracijske datoteke. Ta datoteka bo v imeniku '/etc/tgt/conf.d' in za ta članek se bo imenovala 'TecMint_iscsi.conf'.

Če želite ustvariti to datoteko, uporabite urejevalnik besedil.

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

V tej datoteki bodo konfigurirane vse potrebne konfiguracijske informacije za ta LUN. V to datoteko je mogoče vstaviti veliko možnosti, vendar bo za zdaj konfiguriran osnovni LUN z medsebojnim protokolom overjanja pristnosti pri rokovanju (CHAP).

Opredelitev LUN bo obstajala med dvema „ciljnima“ izjavama. Za več parametrov, ki jih lahko vključite v ciljno izjavo, si oglejte stran z navodili za datoteko »goals.conf« tako, da izdate »man 5 goals.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>

Zgoraj se veliko dogaja. Hitra razlaga je lahko večini v pomoč.

  • Prva vrstica začne posebno konfiguracijo iSCSI LUN. V tem primeru je LUN označen z 'iqn.2018-02.linux-console.net:lun1'. Del 'iqn' označuje, da bo to kvalificirano ime za iSCSI. "2018-02" je poljubno izbrana kombinacija datuma. „linux-console.net“ je domena, ki ji pripada ta LUN. Nazadnje se za ime tega cilja uporabi „lun1“.
  • Druga vrstica zgoraj prikazuje komentar. Komentarji lahko obstajajo v ciljnih konfiguracijskih datotekah in morajo biti opremljeni s simbolom "#".
  • V tretji vrstici je dejanski prostor za shranjevanje, ki ga bo uporabil pobudnik. V tem primeru bo podlaga za shranjevanje logični nosilec, ki je bil ustvarjen prej v priročniku.
  • Četrta vrstica je naslov IP, ki se pričakuje od pobudnika. Čeprav to ni obvezen element konfiguracije, lahko pomaga povečati varnost.
  • Peta vrstica je vhodno uporabniško ime/geslo. Podobno kot zgornji naslov pobudnika tudi ta parameter ni potreben, lahko pa pomaga zaščititi LUN. Ker ta priročnik zajema tudi vzajemni CHAP iSCSI, je ta parameter obvezen. Ta vrstica označuje uporabniško ime in geslo, ki jih bo cilj pričakoval od pobudnika za povezavo s tem LUN -om.
  • Šesta vrstica je uporabniško ime/geslo, ki ga bo cilj posredoval pobudniku za medsebojno preverjanje pristnosti CHAP. Običajno ta parameter ni potreben, vendar ta članek zajema vzajemno preverjanje pristnosti CHAP, zato je ta parameter obvezen.
  • Zadnja vrstica je zaključna izjava za definicijo cilja. Bodite pozorni na zaključno poševnico pred ciljno besedo!

Ko so ustrezne konfiguracije za LUN vnesene, shranite spremembe in zapustite urejevalnik besedil. Če uporabljate nano, pritisnite ctrl+o za shranjevanje in nato ctrl+x za izhod iz nano.

Ko je konfiguracijska datoteka ustvarjena, je treba storitev tgt znova zagnati, da se tgt zaveda novih ciljev in s tem povezane konfiguracije.

To je mogoče storiti z enim od naslednjih ukazov in je odvisno od uporabljenega sistema init.

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

Ko je tgt znova zagnan, je pomembno preveriti, ali je cilj iSCSI na voljo v skladu z ustvarjeno konfiguracijsko datoteko.

To lahko dosežete z ukazom 'tgtadm'.

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

S tem je konfiguracija cilja zaključena. Naslednji razdelek bo deloval skozi konfiguracijo pobudnika.

Konfiguracija iniciatorja Debian iSCSI

Naslednji korak pri uporabi prej konfiguriranega cilja iSCSI je konfiguracija pobudnika iSCSI.

Drugačna različica XenServer/ESXi ali druge distribucije, kot so Red Hat, Debian ali Ubuntu.

Prvi korak v tem postopku za tega pobudnika Debian je namestitev ustreznih paketov za iSCSI.

# apt-get update
# apt-get install open-iscsi

Ko je apt končal konfiguracijo paketov open-iscsi, se lahko začne konfiguracija pobudnika iSCSI. Prvi korak bo komunikacija s ciljem, da dobimo začetne konfiguracijske informacije za cilj.

# iscsiadm -m discovery -t st -p 192.168.56.101

Ko se ta ukaz zažene, se bo odzval z imenom predhodno konfiguriranega luna za tega gostitelja. Zgornji ukaz bo ustvaril tudi dve datoteki za na novo odkrite podatke LUN.

Zdaj bo morala datoteka, ustvarjena za to vozlišče, konfigurirati podatke CHAP, da bo lahko pobudnik dejansko dosegel ta cilj iSCSI.

Tehnično bi te informacije lahko nastavili za celoten sistem kot celoto, če pa se gostitelj poveže z različnimi LUN -i z različnimi poverilnicami, lahko umestitev teh poverilnic v določeno konfiguracijsko datoteko vozlišča omili vse težave.

Konfiguracijska datoteka vozlišča bo obstajala v imeniku '/etc/iscsi/nodes/' in bo imela na voljo imenik po LUN -u. V primeru tega članka (upoštevajte, da se bodo poti spremenile, če spremenite imena/naslove IP).

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

Za delo s to datoteko lahko uporabite kateri koli urejevalnik besedil.

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

V tej datoteki bo več že konfiguriranih možnosti za ustrezen cilj, ki so bile določene med prej izvedenim ukazom „iscsiadm“.

Ker ta nastavitev cilja/pobudnika Debian uporablja vzajemni CHAP, je treba v to datoteko spremeniti še nekaj možnosti in nato opraviti prijavo v cilj iSCSI.

Spremembe te datoteke so:

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

Zgornje možnosti bodo temu cilju omogočile preverjanje pristnosti pobudnika, prav tako pa lahko pobudniku omogoči avtentikacijo cilja.

V tej datoteki obstaja še ena možnost, ki jo bo morda treba spremeniti glede na nastavitve skrbnika, in sicer parameter 'node.startup'.

Če sledite tem navodilom, bo možnost »node.startup« na tej točki nastavljena na »ročno«. To morda ni zaželeno. Če želi skrbnik pri zagonu sistema povezati cilj iSCSI, spremenite »ročno« v »samodejno«:

node.startup = automatic

Ko so zgornje spremembe narejene, shranite datoteko in zapustite. Na tej točki je treba znova zagnati pobudniško storitev open-iscsi, da lahko preberete te nove spremembe in se povežete s ciljem iSCSI.

To je mogoče doseči z enim od naslednjih ukazov, odvisno od uporabljenega sistema init.

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

V zgornjem zelenem polju opazite, da se je pobudnik iSCSI lahko prijavil v cilj. Za dodatno potrditev, da je cilj iSCSI res na voljo pobudniku, lahko v sistemu preverimo, ali so na voljo dodatni diski, ki so na voljo, z ukazom 'lsblk' in preverimo izhod za dodatne pogone.

# lsblk

Drugi ukaz, ki ga lahko uporabite na pobudniku za potrditev povezave s ciljem, je "iscsiadm" kot tak:

# iscsiadm -m session

Končno mesto za potrditev povezave bi bilo na samem cilju z uporabo ukaza 'tgtadm' za seznam vseh povezav iSCSI.

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

Od tega trenutka lahko novo priključeno napravo iSCSI uporabljate podobno kot kateri koli običajno priključen disk! Razdelitev, ustvarjanje datotečnega sistema, nameščanje in/ali vztrajno nameščanje je mogoče normalno upravljati.

Ena velika previdnost pri napravah iSCSI je, da če cilj iSCSI vsebuje pomembne datotečne sisteme, ki so potrebni med zagonom pobudnika, uporabite vnos '_netdev' v datoteki '/etc/fstab', da zagotovite, da iSCSI naprava je povezana, preden se sistem zažene!