iSCSI szerver és kliens egyszerűen
Bizonyára sokakkal előfordult már, hogy egy tesztkörnyezet összeállításakor vagy az otthoni "szerverfarmon" jó lett volna egy kisebb-nagyobb SAN/NAS storage. Azok a szerencsések, akiknek a garázsában egy NetApp vagy más egyéb eszköz áll, nyugodtan továbblapozhatnak, a többiek számára viszont most hasznos bemutató következik.
A hálózati tárolók világában jónéhány éve használjuk az iSCSI technológiát, mint költséghatékony illesztési eljárást. Sok esetben valamilyen natív berendezés nyújtja a "szerver" funkcióit (ezt nevezzük targetnek), amelyhez kliensoldalról (ez az initiator) hardveres vagy szoftveres megoldással csatlakozunk. A szoftveres initiator használata viszonylag elterjedt, a legtöbb operációs rendszer tartalmaz valamilyen kész megoldást ehhez, target készítése azonban nem túl gyakori. Kerülhetünk azonban olyan helyzetbe, amelyben akár percek alatt össze kell dobnunk egy target-initiator környezetet (pl. virtuális gépek migrációja, cluster tesztelése). Lássuk, mi kell ehhez.
A Red Hat Enterprise Linux 5-ben jelent meg először a scsi-target-utils csomag, amelyben a tgt frameworknek köszönhetően lehetőségünk nyílik majd többek között iSCSI, Fibre Channel, SRP targetek készítésére, jelenleg azonban az alábbiak használhatók:
- IBM VIO server (ibmvstgt)
- iSCSI
- Xen vscsifront/back
Ne felejtsük el, hogy a tgt technology preview állapotban van, vagyis éles adatokon történő kísérletezgetésre nem javasolt, ugyanakkor mindenképpen meg kell említenünk, hogy többhetes működés, sok node-ról való egyidejű, intenzív terhelés alatt sem találkoztunk semmilyen problémával.
Fogjuk meg kedvenc rendszerünket és telepítsük fel a csomagot, majd indítsuk el a szervert:
[root@server1 ~]# yum install scsi-target-utils [root@server1 ~]# service tgtd start
A targetek, LUN-ok, backendek és ACL-ek beállítását egyaránt a tgtadm paranccsal fogjuk elvégezni, előtte azonban készítsük el azt a blokkeszközt, amelyet iSCSI-n szeretnénk kiosztani a klienseknek. Hozzunk létre például egy logikai kötetet:
[root@server1 ~]# lvcreate -L 1G -n back1 server1
Készítsük el az első targetünket:
[root@server1 ~]# tgtadm --lld iscsi --op new --mode target --tid 1 \ -T iqn.2001-04.com.example:storage
A target azonosítóját ún. iSCSI Qualified Name (IQN) formátumban adtuk meg.
Ellenőrizzük le, sikerült-e a művelet:
[root@server1 ~]# tgtadm --lld iscsi --op show --mode target
Target 2: iqn.2001-04.com.example:storage
System information:
Driver: iscsi
Status: running
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0
Backing store: No backing store
Account information:
ACL information:
Remek! Készítsük el az első LUN-unkat, amelyhez rögtön hozzá is rendeljük a fent létrejött LV-t:
[root@server1 ~]# tgtadm --lld iscsi --op new --mode logicalunit \ --tid 1 --lun 1 -b /dev/server1/back1
Ismételt lekérdezésnél ilyesmit kell látnunk:
[root@server1 ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.example:storage
System information:
Driver: iscsi
Status: running
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 1G
Backing store: /dev/server1/back1
Account information:
ACL information:
A biztonság kedvéért adjuk meg, mely hálózati tartomány számára tesszük elérhetővé a targetet:
[root@server1 ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.0.0/24
[root@server1 ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.example:storage
System information:
Driver: iscsi
Status: running
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 1G
Backing store: /dev/server1/back1
Account information:
ACL information:
192.168.0.0/24
Most következzék a másik oldal. Fogjunk egy klienst (a példánkban ez egy Fedora 10 lesz) és telepítsük rá az initiator csomagot:
[root@station10 ~]# yum install iscsi-initiator-utils
Egy kis konfiguráció következik: szerkesszük meg a /etc/iscsi/initiatorname.iscsi fájlt és tegyünk bele egy InitiatorAlias paramétert is:
[root@station10 ~]# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.fedora:f07785b4318 InitiatorAlias=station10
Indítsuk el a szolgáltatást a service iscsid start paranccsal.
Térképezzük fel, hogy a szerveren milyen targetek találhatóak:
[root@station10 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.0.254 192.168.0.254:3260,1 iqn.2001-04.com.example:storage
Jegyezzük meg az itt látható targetnevet (iqn.2001-04.com.example:storage), ugyanis a következő parancs használatakor ennek a megadásával kell belépnünk a targetre, vagyis rögzítenünk a kapcsolatot:
[root@station10 ~]# iscsiadm --mode node --targetname iqn.2001-04.com.example:storage \ --portal 192.168.0.254 --login Logging in to [iface: default, target: iqn.2001-04.com.example:storage, portal: 192.168.0.254,3260] Login to [iface: default, target: iqn.2001-04.com.example:storage, portal: 192.168.0.254,3260]: successful
Utolsó lépésként nézzük meg, lett-e új diszkünk:
[root@station10 ~]# tail -15 /var/log/messages Nov 23 19:48:38 station10 iscsid: iSCSI daemon with pid=2406 started! Nov 23 19:50:06 station10 kernel: scsi4 : iSCSI Initiator over TCP/IP Nov 23 19:50:06 station10 kernel: scsi 4:0:0:0: RAID IET Controler 0001 PQ: 0 ANSI: 5 Nov 23 19:50:06 station10 kernel: scsi 4:0:0:0: Attached scsi generic sg2 type 12 Nov 23 19:50:06 station10 kernel: scsi 4:0:0:1: Direct-Access IET VIRTUAL-DISK 0001 PQ: 0 ANSI: 5 Nov 23 19:50:06 station10 kernel: sd 4:0:0:1: [sdb] 25165824 512-byte hardware sectors (12885 MB) Nov 23 19:50:06 station10 kernel: sd 4:0:0:1: [sdb] Write Protect is off Nov 23 19:50:06 station10 kernel: sd 4:0:0:1: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA Nov 23 19:50:06 station10 kernel: sd 4:0:0:1: [sdb] 25165824 512-byte hardware sectors (12885 MB) Nov 23 19:50:06 station10 kernel: sd 4:0:0:1: [sdb] Write Protect is off Nov 23 19:50:06 station10 kernel: sd 4:0:0:1: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA Nov 23 19:50:07 station10 kernel: sdb: unknown partition table Nov 23 19:50:07 station10 kernel: sd 4:0:0:1: [sdb] Attached SCSI disk Nov 23 19:50:07 station10 kernel: sd 4:0:0:1: Attached scsi generic sg3 type 0 Nov 23 19:50:07 station10 iscsid: connection1:0 is operational now
A művelet sikerült, a kapott eszközt innentől fogva úgy használhatjuk, mint bármely más lokális diszkünket. Kellemes funkció, hogy a megszerzett eszköz(ök) azonosítóját a /var/lib/iscsi/nodes/ könyvtár alatt tárolja rendszerünk, így a jövőben a target használatához pusztán az iscsi nevű szolgáltatásnak kell elindulnia.
A target módosítása, további LUN-ok, ACL-ek hozzáadása a fenti logika alapján könnyedén elvégezhető. Jó kísérletezést kívánunk!
- A hozzászóláshoz regisztráció és belépés szükséges
- 2056 olvasás

