Kako postaviti iSCSI poslužitelj (cilj) i klijenta (inicijator) na Debianu 9


U svijetu podatkovnih centara, Storage Area Networks (SAN) su postale minimalni standard. Kako dobavljači oblaka i virtuelizacija takođe nastavljaju da ostvaruju ogroman uticaj u svetu tehnologije, potreba za još više SAN prostora za skladištenje postala je očigledna.

Većina SAN hardvera se sastoji od minimalističkog kontrolera (ili skupa kontrolera) i velike kolekcije diskova velikog kapaciteta koji su svi konfigurisani da podržavaju velike količine podataka dostupnosti i integriteta.

Mnoge od ovih specijalizovanih proizvoda proizvode veliki proizvođači kao što su Netapp, Dell Equalogic, HP Storageworks ili EMC i imaju prikačene cene koje samo najveća preduzeća mogu da priušte.

Realno, ovi uređaji nisu ništa drugo do veliki nizovi tvrdih diskova s kontrolerom koji pruža prostor tih tvrdih diskova umreženim klijentima. Mnoge tehnologije su postojale tokom godina koje pružaju ovu funkcionalnost ili sličnu funkcionalnost po znatno nižoj ceni.

Debian GNU/Linux distribucija pruža pakete koji omogućavaju Debian sistemu da služi svrsi SAN uređaja za pohranu na razini poduzeća uz samo djelić cijene! Ovo omogućava svima, od osnovnih kućnih korisnika ili velikih data centara, da dobiju prednosti SAN skladištenja bez potrebe da troše bogatstvo na vlasnička rješenja proizvođača.

Ovaj članak će se osvrnuti na to kako se Debian 9 (Stretch) sustav može postaviti da opslužuje prostor na disku pomoću sustava poznatog kao Internet Small Computer Systems Interface ili skraćeno iSCSI. iSCSI je standard baziran na Internet protokolu (IP) za obezbjeđivanje blok (hard disk) pohrane drugim sistemima. iSCSI radi u modelu klijent servera, ali koristi različita imena da razlikuje klijenta od servera.

U iSCSI terminologiji, server koji opslužuje 'prostor na disku' poznat je kao iSCSI 'Cilj' i sistem koji zahtijeva /koristeći prostor na disku poznato je kao iSCSI 'Inicijator'. Drugim riječima, 'Inicijator' traži blok memoriju od 'Cilja'.

Environment Setup

Ovaj vodič će proći kroz osnovnu postavku koja uključuje jednostavan iSCSI server (cilj) i klijent (inicijator) oba pokrenut 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žu možete pogledati na sljedeći način:

Debian iSCSI ciljna konfiguracija

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

U ovom članku server sa IP-om 192.168.56.101 se koristi kao cilja. Sve konfiguracije će se obaviti na tom hostu za ovaj odjeljak.

Prvi korak je instalacija potrebnih paketa kako bi se omogućilo Debian sistemu da opslužuje iSCSI ciljeve. Ovaj softverski paket je poznat kao Target Framework (TGT).

Druga stavka koja se koristi za ovaj vodič su Upravljanje logičkim volumenom (LVM) alati kao Logički volumeni (LVs) će se koristiti kao podloga za pohranu za iSCSI cilj.

Oba paketa se mogu instalirati pomoću sljedećih naredbi.


apt-get update
apt-get install tgt lvm2

Jednom kada se paketi instaliraju, LVM će se koristiti za pripremu tvrdih diskova na cilji za upotrebu kao iSCSI LUN. Prva naredba se koristi za pripremu diskova za uključivanje u LVM postavku. Obavezno modificirajte 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 gornjom naredbom „pvcreate“, vrijeme je da kreirate grupu volumena od ovih konkretnih diskova. Grupa volumena je potrebna da bi se kreirali Logički volumeni koji će kasnije djelovati kao iSCSI skladište.

Za kreiranje 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 izlazu iznad da sistem odgovara da je kreirana Grupa volumena, ali uvijek je dobro 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, proces bi bio isti za diskove većeg kapaciteta!

Sljedeći korak je kreiranje logičkog volumena koji će djelovati kao disk za iSCSI klijent (inicijator). Za ovaj primjer će se koristiti cijela grupa volumena, ali nije neophodna.

Logički volumen će biti kreiran 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 kvar je takav:

  • lvcreate – Naredba koja se koristi za kreiranje logičkog volumena.
  • -l 100% BESPLATNO – Kreirajte logički volumen koristeći sav slobodan prostor grupe volumena.
  • -n tecmint_lun1 – Ime logičkog volumena koji se kreira.
  • tecmint_iscsi – Ime grupe volumena za kreiranje logičkog volumena unutar.

Nakon što je kreiran logički volumen, vrijeme je da kreirate stvarni LUN (Broj logičke jedinice). LUN će biti uređaj za pohranu na koji će se inicijator povezati i koristiti kasnije.

Kreiranje LUN-a je vrlo jednostavno i zahtijeva samo nekoliko koraka. Prvi korak će biti kreiranje konfiguracionog fajla. Ova datoteka će se nalaziti u direktoriju ‘/etc/tgt/conf.d’ i za ovaj članak će se zvati ‘TecMint_iscsi.conf’.

Za kreiranje ove datoteke koristite uređivač teksta.


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

Unutar ove datoteke, sve potrebne informacije o konfiguraciji za ovaj LUN će biti konfigurisane. Postoji mnogo opcija koje se mogu smjestiti u ovaj fajl, ali za sada će osnovni LUN sa uzajamnim Protokolom provjere autentičnosti izazova rukovanja (CHAP) biti konfigurisan.

LUN-ova definicija će postojati između dvije „ciljne“ izjave. Za više parametara koji mogu ući u ciljni izraz, 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>

Mnogo toga se dešava gore. Brzo objašnjenje većini može pomoći.

  • Prva linija počinje konfiguraciju određene iSCSI LUN. U ovom slučaju LUN označen sa „iqn.2018-02.linux-console.net:lun1“. Dio „iqn“ označava da će ovo biti iSCSI kvalificirano ime. „2018-02“ je proizvoljno odabrana kombinacija datuma. 'linux-console.net' je domena kojoj pripada ovaj LUN. Konačno, „lun1“ se koristi kao naziv za ovu konkretnu metu.
  • Drugi red iznad ilustruje komentar. Komentari mogu postojati u ciljnim konfiguracijskim datotekama i moraju imati predgovor sa simbolom '#'.
  • Treći red je mjesto gdje postoji stvarni prostor za pohranu koji će koristiti inicijator. U ovom slučaju pohrana će biti logički volumen koji je kreiran 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 red je dolazno korisničko ime/lozinka. Slično kao i adresa inicijatora iznad, ni ovaj parametar nije potreban, ali može pomoći da se osigura LUN. Budući da ovaj vodič također pokriva iSCSI uzajamni CHAP, ovaj parametar je obavezan. Ova linija označava korisničko ime i lozinku koje će cilj očekivati od inicijatora da bi se spojio na ovaj LUN.
  • Šesti red je korisničko ime/lozinka koju će cilj dati inicijatoru kako bi se omogućila međusobna CHAP autentifikacija. Obično ovaj parametar nije potreban, ali ovaj članak pokriva međusobnu CHAP autentifikaciju pa je ovaj parametar obavezan.
  • Posljednji red je završni izraz za definiciju cilja. Obratite pažnju na završnu kosu crtu ispred ciljne ključne riječi!

Nakon što su odgovarajuće konfiguracije za LUN ukucane, sačuvajte promjene i izađite iz uređivača teksta. Ako koristite nano, pritisnite ctrl+o da sačuvate, a zatim pritisnite ctrl+x da izađete iz nano-a.

Nakon što je konfiguracijski fajl kreiran, uslugu tgt treba ponovo pokrenuti tako da tgt bude svjestan novih ciljeva i povezane konfiguracije.

Ovo se može učiniti jednom od sljedećih naredbi i ovisi o init sistemu koji se koristi.


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

Kada se tgt ponovo pokrene, važno je provjeriti da li je iSCSI cilj dostupan u skladu sa kreiranom konfiguracijskom datotekom.

Ovo se može postići naredbom „tgtadm“.


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

Ovim je konfiguracija cilja završena. Sljedeći odjeljak će raditi kroz konfiguraciju inicijatora.

Konfiguracija Debian iSCSI pokretača

Sljedeći korak u korištenju prethodno konfiguriranog iSCSI cilja je konfiguracija iSCSI inicijatora.

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

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


apt-get update
apt-get install open-iscsi

Kada apt završi konfiguraciju open-iscsi paketa, konfiguracija iSCSI pokretača može početi. Prvi korak će biti komunikacija sa ciljom kako bi se pripremile početne informacije o konfiguraciji za cilj.


iscsiadm -m discovery -t st -p 192.168.56.101

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

Sada će fajl kreiran za ovaj čvor morati da ima CHAP informacije konfigurisane da bi iSCSI cilj zaista bio dostupan inicijatoru.

Tehnički, ove informacije bi se mogle postaviti za cijeli sistem u cjelini, ali u slučaju da se host povezuje na različite LUN-ove sa različitim vjerodajnicama, postavljanje tih vjerodajnica u konfiguracijski fajl specifičnog čvora može ublažiti sve probleme.

Datoteka konfiguracije čvora će postojati u direktoriju '/etc/iscsi/nodes/' i imat će dostupan direktorij po LUN-u. U slučaju ovog članka (imajte na umu da će se putanje 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 sa 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 bit će nekoliko već konfiguriranih opcija za odgovarajući cilj koje su određene tokom ranijeg pokretanja naredbe „iscsiadm“.

Budući da ova konkretna postavka Debian cilja/inicijatora koristi zajednički CHAP, potrebno je promijeniti još neke opcije i dodati ovoj datoteci, a zatim prijavu na iSCSI cilj izvršeno.

Promjene ovog fajla 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 će omogućiti ovoj cilji da se autentifikuje inicijatoru, kao i inicijatoru da se autentifikuje 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 neće biti željeno. Ako administrator želi da iSCSI cilj bude povezan kada se sistem pokrene, promijenite 'ručno' u 'automatski' kao takav:


node.startup = automatic

Nakon što su gore navedene promjene napravljene, sačuvajte datoteku i izađite. U ovom trenutku uslugu open-iscsi inicijator treba ponovo pokrenuti kako bi pročitali ove nove promjene i povezali se na iSCSI cilj.

Ovo se može postići jednom od sljedećih naredbi ovisno o init sistemu koji se koristi.


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

Obratite pažnju u zelenom okviru iznad da je iSCSI inicijator mogao da se prijavi na cilj. Kako bismo dodatno potvrdili da je iSCSI cilj zaista dostupan inicijatoru, možemo provjeriti u sistemu ima li dodatnih diskova koji su dostupni pomoću 'lsblk >' i provjerava izlaz za dodatne pogone.


lsblk

Druga komanda koja se može koristiti na inicijatoru za potvrdu veze sa 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 tačke, novopriključeni iSCSI uređaj se može koristiti slično bilo kojem normalno priključenom disku! Particioniranje, kreiranje sistema datoteka, montiranje i/ili trajno montiranje može se normalno rukovati.

Jedan veliki oprez kojeg treba imati na umu kod iSCSI uređaja je ako iSCSI cilj sadrži važne sisteme datoteka koji su potrebni dok se inicijator pokreće, provjerite da koristite unos '_netdev' u datoteci '/etc/fstab' kako biste osigurali da je iSCSI uređaj povezan prije nego što sistem nastavi sa podizanjem sistema!