Kako postaviti iSCSI poslužitelj (cilj) i klijent (pokretač) na Debianu 9


U svijetu podatkovnih centara Storage Area Networks (SAN) velikog kapaciteta postale su minimalni standard. Kako pružatelji usluga oblaka i virtualizacija također nastavljaju imati golem utjecaj u svijetu tehnologije, potreba za još više SAN prostora za pohranu postala je očita.

Većina SAN hardvera sastoji se od minimalističkog kontrolera (ili skupa kontrolera) i velike zbirke pogona velikog kapaciteta koji su svi konfigurirani za podršku velike količine podataka dostupnosti i integriteta.

Mnoge od ovih specijaliziranih proizvoda proizvode velika imena dobavljača kao što su Netapp, Dell Equalogic, HP Storageworks ili EMC i imaju priložene cijene koje si mogu priuštiti samo najveća poduzeća.

Realno, ovi uređaji nisu ništa više od velikih nizova tvrdih diskova s kontrolerom koji pruža prostor tih tvrdih diskova mrežnim klijentima. Tijekom godina postojale su mnoge tehnologije koje pružaju ovu funkcionalnost ili sličnu funkcionalnost po znatno nižoj cijeni.

Distribucija Debian GNU/Linux pruža pakete koji omogućuju Debian sustavu da služi u svrhu SAN uređaja za pohranu na razini poduzeća uz samo djelić cijene! To omogućuje svima, od osnovnih kućnih korisnika do velikih podatkovnih centara, da iskoriste prednosti SAN pohrane bez potrebe da troše bogatstvo na vlastito rješenje dobavljača.

Ovaj članak će pogledati kako se sustav Debian 9 (Stretch) može postaviti da opslužuje diskovni prostor koristeći sustav poznat kao Internet Small Computer Systems Interface ili skraćeno iSCSI. iSCSI je standard temeljen na Internetskom protokolu (IP) za pružanje blok (tvrdog diska) pohrane drugim sustavima. iSCSI radi u modelu klijent-poslužitelj, ali koristi različite nazive za razlikovanje klijenta od poslužitelja.

U terminologiji iSCSI, poslužitelj koji opslužuje 'prostor na disku' poznat je kao iSCSI 'Target', a sustav koji zahtijeva /iskorištavanje prostora na disku poznato je kao iSCSI 'Inicijator'. Dakle, drugim riječima, 'Inicijator' zahtijeva blokiranje pohrane od 'Cilja'.

Postavljanje okruženja

Ovaj će vodič proći kroz osnovno postavljanje koje uključuje jednostavan iSCSI poslužitelj (cilj) i klijent (pokretač) radi 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

Mreža se može vidjeti na sljedeći način:

Debian iSCSI ciljna konfiguracija

U iSCSI svijetu, cilj se smatra hostom koji sadrži uređaje za pohranu koje će koristiti inicijator.

U ovom članku poslužitelj s IP-om 192.168.56.101 koristi se kao cilj. Sve konfiguracije će se izvršiti na tom hostu za ovaj odjeljak.

Prvi korak je instalacija potrebnih paketa koji će omogućiti Debian sustavu da posluži iSCSI ciljevima. Ovaj softverski paket poznat je kao Target Framework (TGT).

Druga stavka koja se koristi za ovaj vodič su alati Logical Volume Management (LVM) kao Logical Volume (LVs) koristit će se kao podloga za pohranu za iSCSI cilj.

Oba paketa mogu se instalirati sa sljedećim naredbama.


apt-get update
apt-get install tgt lvm2

Nakon što su paketi instalirani, LVM koristit će se za pripremu tvrdih diskova na cilju za upotrebu kao iSCSI LUN. Prva naredba koristi se za pripremu diskova za uključivanje u LVM postavke. Svakako izmijenite naredbu prema potrebi za različite scenarije!


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

Nakon što su diskovi pripremljeni s gornjom naredbom ‘pvcreate’, vrijeme je da stvorite grupu volumena od ovih diskova. Grupa volumena potrebna je za stvaranje logičkih volumena koji će kasnije djelovati kao iSCSI pohrana.

Za stvaranje grupe volumena potrebna je naredba ‘vgcreate’.


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

Primijetite u gornjem izlazu da sustav odgovara da je Grupa volumena stvorena, ali uvijek je dobra ideja još jednom provjeriti kao što je gore prikazano pomoću naredbe ‘vgs’. Kapacitet ove grupe volumena je samo 9,99 GB. Iako je ovo posebno mala grupa volumena, postupak bi bio isti za diskove većeg kapaciteta!

Sljedeći korak je stvaranje logičkog volumena koji će djelovati kao disk za iSCSI klijent (inicijator). U ovom primjeru koristit će se cijela grupa volumena, ali nije neophodna.

Logički volumen kreirat će se pomoću naredbe ‘lvcreate’.


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

Gornja naredba 'lvcreate' može biti malo zbunjujuća na prvi pogled, ali raščlamba je takva:

  • lvcreate – Naredba koja se koristi za stvaranje logičkog volumena.
  • -l 100% BESPLATNO – Stvorite logički volumen koristeći sav slobodni prostor grupe volumena.
  • -n tecmint_lun1 – Naziv logičkog volumena koji će se stvoriti.
  • tecmint_iscsi – Naziv grupe volumena unutar koje se stvara logički volumen.

Nakon što je logički volumen kreiran, vrijeme je za stvaranje stvarnog LUN-a (Logički broj jedinice). LUN će biti uređaj za pohranu na koji će se inicijator spojiti i koristiti kasnije.

Stvaranje LUN-a vrlo je jednostavno i zahtijeva samo nekoliko koraka. Prvi korak bit će stvaranje konfiguracijske datoteke. Ova datoteka nalazit će se u direktoriju '/etc/tgt/conf.d' i za ovaj će se članak zvati 'TecMint_iscsi.conf'.

Za izradu ove datoteke koristite uređivač teksta.


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

Unutar ove datoteke bit će konfigurirane sve potrebne konfiguracijske informacije za ovaj LUN. Postoji mnogo opcija koje se mogu smjestiti u ovu datoteku, ali za sada će osnovni LUN sa zajedničkim Challenge Handshake Authentication Protocol (CHAP) biti konfiguriran.

Definicija LUN-a postojat će između dvije izjave "target". Za više parametara koji mogu ići u ciljnu izjavu, pregledajte stranicu priručnika za datoteku ‘targets.conf’ izdavanjem ‘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>

Gore se puno toga događa. Brzo objašnjenje može biti od pomoći većini.

  • Prvi redak započinje određenu konfiguraciju iSCSI LUN. U ovom slučaju LUN s oznakom "iqn.2018-02.linux-console.net:lun1". Dio 'iqn' označava da će ovo biti kvalificirano ime za iSCSI. '2018-02' proizvoljno je odabrana kombinacija datuma. ‘linux-console.net’ je domena kojoj ovaj LUN pripada. Na kraju, 'lun1' koristi se kao naziv za ovaj cilj.
  • Drugi redak iznad ilustrira komentar. Komentari mogu postojati u ciljnim konfiguracijskim datotekama i moraju imati prethodni simbol '#'.
  • Treći red je mjesto gdje postoji stvarni prostor za pohranu koji će koristiti inicijator. U ovom će slučaju podloga za pohranu biti logički volumen koji je stvoren ranije u vodiču.
  • Četvrti red je IP adresa koja se očekuje od inicijatora. Iako ovo nije obavezna stavka konfiguracije, može pomoći u povećanju sigurnosti.
  • Peti redak je dolazno korisničko ime/lozinka. Slično kao i adresa inicijatora iznad, ni ovaj parametar nije potreban, ali može pomoći u zaštiti LUN-a. Budući da ovaj vodič također pokriva iSCSI zajednički CHAP, ovaj je parametar obavezan. Ova linija označava korisničko ime i lozinku koje cilj očekuje od inicijatora kako bi se povezao na ovaj LUN.
  • Šesti redak je korisničko ime/lozinka koju će cilj dati inicijatoru kako bi se omogućila međusobna CHAP provjera autentičnosti. Obično ovaj parametar nije potreban, ali ovaj članak pokriva međusobnu CHAP provjeru autentičnosti pa je ovaj parametar obavezan.
  • Posljednji redak je završna izjava za definiciju cilja. Obratite pozornost na završnu kosu crtu ispred cilja ključne riječi!

Nakon što su ispisane odgovarajuće konfiguracije za LUN, spremite promjene i izađite iz uređivača teksta. Ako koristite nano, pritisnite ctrl+o za spremanje, a zatim pritisnite ctrl+x za izlaz iz nano-a.

Nakon što je konfiguracijska datoteka stvorena, uslugu tgt treba ponovno pokrenuti kako bi tgt bio svjestan novih cilja i pridružene konfiguracije.

To se može učiniti pomoću jedne od sljedećih naredbi i ovisi o sustavu pokretanja koji se koristi.


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

Nakon što se tgt ponovno pokrene, važno je provjeriti je li iSCSI cilj dostupan u skladu s kreiranom konfiguracijskom datotekom.

To se može postići naredbom ‘tgtadm’.


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

Ovime je konfiguracija cilja završena. Sljedeći odjeljak bavit će se konfiguracijom inicijatora.

Konfiguracija Debian iSCSI inicijatora

Sljedeći korak u korištenju prethodno konfiguriranog iSCSI cilja je konfiguracija iSCSI pokretača.

Drugi Debian 9 sustav koristit će se kao inicijator u ovom članku, ali svaki sustav koji može koristiti iSCSI protokol može se povezati s prethodno konfiguriranim ciljem; to može uključivati hipervizore kao što su XenServer/ESXi ili druge distribucije kao što su Red Hat, Debian ili Ubuntu.

Prvi korak u ovom procesu za ovaj Debian inicijator je instalacija odgovarajućih paketa za iSCSI.


apt-get update
apt-get install open-iscsi

Nakon što apt završi konfiguraciju open-iscsi paketa, konfiguracija iSCSI pokretača može započeti. Prvi korak bit će komunikacija s ciljom kako bi se pripremile informacije o početnoj konfiguraciji za metu.


iscsiadm -m discovery -t st -p 192.168.56.101

Kada se ova naredba pokrene, ona će odgovoriti s imenom lun konfiguriranog ranije za ovaj određeni host. Gornja naredba također će generirati dvije datoteke za novootkrivene LUN informacije.

Sada će datoteka stvorena za ovaj čvor morati imati konfigurirane informacije CHAP kako bi ovaj iSCSI cilj stvarno bio dostupan inicijatoru.

Tehnički ove informacije mogu se postaviti za cijeli sustav kao cjelinu, ali u slučaju da se glavno računalo povezuje na različite LUN-ove s različitim vjerodajnicama, postavljanje tih vjerodajnica u konfiguracijsku datoteku određenog čvora može ublažiti probleme.

Konfiguracijska datoteka čvora postojat će u direktoriju '/etc/iscsi/nodes/' i imat će dostupan direktorij po LUN-u. U slučaju ovog članka (imajte na umu da će se staze promijeniti ako se promijene imena/IP adrese).


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

Za rad s ovom datotekom može se koristiti bilo koji uređivač teksta.


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

Unutar ove datoteke nalazit će se nekoliko već konfiguriranih opcija za odgovarajući cilj koje su određene tijekom ranijeg pokretanja naredbe ‘iscsiadm’.

Budući da ovaj određeni Debianov cilj/pokretač postava koristi međusobni CHAP, potrebno je promijeniti još neke opcije i dodati ovoj datoteci, a zatim se prijaviti na iSCSI cilj izvedeno.

Promjene ove datoteke su:


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

Gore navedene opcije omogućit će ovom cilju autentifikaciju inicijatoru kao i dopustiti inicijatoru autentifikaciju cilju >.

Postoji još jedna opcija u ovoj konkretnoj datoteci koju će možda trebati promijeniti ovisno o preferencijama administratora, a to je parametar ‘node.startup’.

Ako slijedite ovaj vodič, opcija ‘node.startup’ će u ovom trenutku biti postavljena na ‘ručno’. Ovo možda nije poželjno. Ako administrator želi da iSCSI cilj bude povezan kada se sustav pokrene, promijenite 'ručno' u 'automatski' kao takav:


node.startup = automatic

Nakon što su gore navedene promjene napravljene, spremite datoteku i izađite. U ovom trenutku uslugu open-iscsi pokretača treba ponovno pokrenuti kako bi se pročitale ove nove promjene i povezalo s iSCSI ciljem.

Ovo se može postići jednom od sljedećih naredbi, ovisno o sustavu pokretanja koji se koristi.


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

Primijetite u gornjem zelenom okviru da se iSCSI pokretač mogao prijaviti na cilj. Da dodatno potvrdimo da je iSCSI cilj doista dostupan inicijatoru, možemo provjeriti sustav za dodatne diskove koji su dostupni pomoću 'lsblk >' naredba i provjera izlaza za dodatne pogone.


lsblk

Druga naredba koja se može koristiti na inicijatoru za potvrdu veze s ciljom je ‘iscsiadm’ kao takva:


iscsiadm -m session

Posljednje mjesto za potvrdu veze bilo bi na samom cilju pomoću naredbe ‘tgtadm’ za popis svih iSCSI veza.


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

Od ove točke, novo priključeni iSCSI uređaj može se koristiti slično kao bilo koji normalno priključeni disk! Particioniranjem, stvaranjem datotečnog sustava, montiranjem i/ili trajnim montiranjem može se rukovati normalno.

Jedan veliki oprez koji treba imati na umu kod iSCSI uređaja je da ako iSCSI cilj sadrži važne datotečne sustave koji su potrebni dok se inicijator diže, provjerite da koristite unos '_netdev' u datoteci '/etc/fstab' kako biste osigurali da je iSCSI uređaj spojen prije nego što se sustav nastavi dizati!