Solaris iSCSI kezelése ZFS-el

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

iSCSI LUN-ok eltávolítása

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 iSCSI kezelése ZFS-el” bejegyzéshez 3 hozzászólás

    1. 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

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük