A drága és körülményes SAN leváltására hozták létre a hálózati alapokon működő iSCSI technológiát. Megpróbálnám bemutatni azt, mi is az iSCSI, milyen komponensekből áll, illetve Solaris alatt milyen egyszerű beállítani.
Felépítés
Az iSCSI ügyfél-kiszolgáló architektúrák követ. Az „initiator” (kezdeményező, vagy kliens) szoftveres vagy hardveres lehet, és az ügyfél oldalán végzi az iSCSI protokoll kezelését. A „target” (cél, vagy server) a kéréseket fogadó kiszolgáló végpont , ez vezérli az adattároló eszközöket.
A target oldalon egy IP-cím és portszám (az alapértelmezett port a TCP 3260) párost jelent, ügyfél oldalon pedig egy IP-címet. Egy-egy target esetében több cél is elérhető lehet; egy célon belül több (logikai) egység is lehet, ezeket a LUN (Logical Unit Number) különbözteti meg.
Az iSCSI protokoll a célok több útvonalon történő elérését is támogatja, ekkor egy-egy cél több portálon keresztül is hozzáférhető, a különféle útvonalakkal redundáns hozzáférés valósítható meg.
Az iSCSI forgalmat hagyományos Ethernet switcheken és kábeleken keresztül bonyolíthatjuk. Azonban érdemes külön hálózati szegmenst használni erre a célra, amin más forgalom nem megy. A klienseken közönséges hálózati kártyákat is használhatunk, ilyenkor a protokollal kapcsolatos
feladatokat az initiator szoftver végzi el. Nagyobb teljesítmény érdekében speciális iSCSI kártyákat (iSCSI Host Bus Adapter) is használhatunk, ilyenkor ezek a TCP/IP stack feldolgozásának egyes lépéseit átvehetik, és ezzel tehermentesítik a CPU-t.
Nézzünk egy két fogalmat még:
Discovery: A Discovery az a tevékenység, amikor az initiator (kliens) feltérképezi a targeten elérhető számára kiajánlott LUNokat.
Discovery method: Két mód is létezik a LUNok feltérképezésére. Az első a Dynamic Device Discovery, amikor elég csupán a target IP-jét megadni, és automatikusan lekéri az összes hozzá tartózó LUN-t, míg a másik módban Static Device Discovery, amikor az initiatoron meg kell adni a target nevét is az IP címén túl, statikusan.
Előfeltételek
Én a következőkben Solaris 10-et fogok használni és ZFS-t egy iSCSI target és egy másik Solaris 10 gépet Solaris initiator bemutatására.
A következőekben bemutatott technológiar Solaris 10 U4-től elérhetőek.
Én ZFS filerendszerrel fogom felépíteni azokat a LUNokat, melyeket iSCSI-n keresztül fogok megosztani egy másik géppel. Az én esetemben a Valter lesz a szerver (target) a Sunny a kliens (initiator).
Szerver oldali target beállítás ZFS-el
Először is létre kell hozni, legalább egy disk bevonásával egy zpoolt. Ez nálam már régebben megvolt, ha valakinek ez kihívást okozna, akkor olvassa el a részletes ZFS írásomat.
A következő lépés a leendő iSCSI tárhelyek létrehozása.
# zfs create -V 5G store/iscsi/vol01 # zfs create -V 5G store/iscsi/vol01 # zfs list | grep iscsi
A következő parancsokkal hoztam létre két datasetet. A path és a név lehet akármi, én az egyértelműség kedvéért az iscsi dataset alá kezdtem el számozni a „vol” nevű volumeket, és 5GB méretekben.
Ezek után elegendő csupán ezen datasetek shareiscsi attribútumát megváltoztatni.
valter# zfs set shareiscsi=on store/iscsi/vol01 valter# zfs set shareiscsi=on store/iscsi/vol02
Ezek után már nincs más dolgunk, mint ellenőrizni, hogy valóban ki van-e ajánlva a LUN, amit beállítottunk.
valter# iscsitadm list target
Illetve a részletesebb kimenet:
valter# iscsitadm list target -v
Kliens oldali initator beállítás
Nézzük az initiator beállítása előtt milyen diskeket is lát a rendszerünk:
Ahogy látszik is felül, csupán a két belső disk látszik. Most akkor konfiguráljuk be az initiatort. Először definiáljuk, milyen IP címen, és milyen porton érhető el a targetünk. Majd kapcsoljuk be a Discovery módot.
sunny# iscsiadm add discovery-address 192.168.132.1:3260 sunny# iscsiadm modify discovery -t enable sunny# devfsadm -C -i iscsi
Az utolsó parancs, csak arra való, hogy újra generáltassuk a szükséges device linkeket. Ezek után pedig:
sunny# echo | format
Természetesen az iostat kimenetelében is látszani fog a disk a megfelelő méretével:
sunny# iostat -En
Szerver oldali target beállítás ZFS nélkül
Természetesen, ha valaki ódzkodik a ZFS használatától, vagy régebbi Solaris-al van dolga, akkor sem kell megijedni.
A következő parancsokkal tetszőleges mountolt filerendszeren elérhető file alapú LUN-okat is létrehozhatunk. Persze itt is két lehetőség van. Vagy mi előre elkészítjük a file-t, ami a LUN-t fogja reprezentálni, vagy ezt is a parancsra bízzuk.
valter# mkfile 100m /test valter# iscsitadm create target -z 100M -b /test test valter# iscsitadm list target -v
Egy meglévő file használata természetesen akkor lehet hasznos, amennyiben már egy adatokkal teli LUN-t akarunk máshova kiajánlani. Most meg nézzük meg, hogy lehet automatikusan generáltatni vele egyet, hasonló módon:
valter# iscsitadm create target -z 200M -b /test1 test1 valter# iscsitadm list target -v
ZFS esetén
Mivel a ZFS vezérli magát a iSCSI target beállításait, ezért egyszerűen csak elég ha kikapcsoljuk a megfelelő attributumot, vagy eltávolítjuk a megfelelő datasetet.
valter# zfs set shareiscsi=off store/iscsi/vol01 valter# zfs set shareiscsi=off store/iscsi/vol02
valter# zfs destroy store/iscsi/vol01 valter# zfs destroy store/iscsi/vol02
NEM ZFS esetén
Nem ZFS esetén se túl bonyolult. A csupán meg kell adnunk, melyik targeten lévő, hanyas LUN-t akarjuk elvetetni:
valter# iscsitadm delete target -u 0 test valter# iscsitadm delete target -u 0 test1 root@valter10# ls -lah /test* -rw------T 1 root root 100M Apr 22 13:14 /test -rw------- 1 root sys 200M Apr 22 13:19 /test1 valter# rm /test valter# rm /test1
Korlátozások
Természetesen, ha kicsit nagyobba csináljuk ezt, akkor nem mindegy, hogy melyik targeten lévő LUNokat, mi láthatja.
Lehetőségünk van Target Portal Group-ot (TPGT) definiálni. Ebben megadjuk, milyen címtartományról érhető el ez a target.
valter# iscsitadm create tpgt 1 valter# iscsitadm modify tpgt -i 192.168.132.2 1 valter# iscsitadm list tpgt -v 1
Ezek után ezt az 1-es TPGT definíciót tudjuk hozzárendelni egy targethez:
valter# iscsitadm modify target -p 1 store/iscsi/vol01 valter# iscsitadm list target -v
Összesgzés
Az iSCSI nagyon jó dolog. Sajnálatos módon inkább a „szegény ember Storage” lett belőle, pont azért, mert hiába a kemény ajánlások, nem feltétlenül kell betartani őket, egy így-úgy működő iSCSI megoldásért. Mindenképp egyszerű beüzemelni, ahogy remélem sikerült bemutatnom is Solaris alatt.
Solaris alatt lehet az IQN elejet modositani?
Hi,
Talaltam egy ilyet neked:
First, find out what your initiators IQN is by default:
root@aeon ~$ iscsiadm list initiator-node
Initiator node name: iqn.1986-03.com.sun:01:e00000000000.464d05f9
Now change it like so:
root@aeon ~$ iscsiadm modify initiator-node –node-name iqn.1998-07.com.cuddletech:aeon
root@aeon ~$ iscsiadm list initiator-node
Initiator node name: iqn.1998-07.com.cuddletech:aeon
Remelem segit.
MiszterX
Igen, koszi.