ISCSI kasutamine Debianiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 21. juuni 2009, kell 21:29 kasutajalt Imre (arutelu | kaastöö) (Kasulikud lisamaterjalid)

Sissejuhatus

iSCSI tehnoloogia võimaldab üle TCP/IP võrgu kasutada SCSI protkolli, mille tulemusena saab ühes arvutis (klient) kasutada teise arvuti (server) plokkseadet. Kombeks on kasutada selliseid nimetusi kliendi ja serveri kohta

  • initiator (ingl. k. algataja) - iSCSI klient
  • target (ingl. k. sihtmärk) - iSCSI server

Reeglina target ja initiator arvutid võivad kasutada erinevaid operatsioonisüsteeme ning asuda ka erinevatel riistvaralistel platvormidel. Kuna andmevahetuse maht ja sellest tulenev koormus etherneti võrgule võib kujuneda suureks, siis võib olla mõistlik pidada iSCSI servereid ja kliente samas subnetis, isegi kasutada arvutites mitut võrgukaarti ning eraldada iSCSI'i liiklusele eraldi võrgusegment.

iSCSI tehnoloogia eelisteks peetakse

  • funktsionaalne - praktiliselt saab tekitada nn korporatiivse SAN funktsionaalsusele sarnase asjakorralduse (storage on esineb eraldi teenusena, otspunkte saab autentida, multipathing kasutamise võimalus jms)
  • odav - piisab kasutada nö tavalist riistvara, nt ethernet võrku ja pc servereid
  • levinud - paljud populaarsed operatsioonisüsteemid sisaldavad iSCSI tuge

Tundub, et initiatori osas on suurem arendajate tähelepanu koondunud projektile [http://www.open-iscsi.org/ ] ning targeti osas projektile [http://iscsitarget.sourceforge.net/]. 2009 suve seisuga esineb iSCSI tarkvara tugi levinud tasuta jagatavates operatsioonisüsteemides/distributsioonides selliselt

  • Linux (nt Debian GNU/Linux) - täielikult olemas
  • Solaris - täielikult olemas
  • FreeBSD - täielikult olemas
  • OpenBSD - täielikult puudub, ei saa teadaolevalt lisada lihtsasti

Käesolev tekst käsitleb iSCSI serveri ja kliendi kasutamist operatsioonisüsteemiga Debian GNU/Linux Lenny AMD64 platvormil.

iSCSI lahenduse näite skeem

Olgu kasutada kolm arvutit, mis peavad saama kasutada üle iSCSI plokkseadme ressurssi selliselt

    klient0          klient1              klient2  -  iSCSI initiator'id
 
    --|----------------|---------------------|---- teenuste klientide poolne subnet --- > internet
      |                |                     |
     _|_  www         _|_  db               _|_  smtp
    |   |            |   |                 |   |
    |___|            |___|                 |___|
      |    /dev/sda    |    /dev/sda         |    /dev/sda
      | -> /srv/www1   | -> /srv/postgresql  | -> /srv/cyrus
      |    /dev/sdb    |                     |
      | -> /srv/www2   |                     |
    --|----------------|---------------------|--------|-----
              iSCSI subnet                            |
                                                     _|_
                                                    |   |  iqn.2009-06.ee.tartu.loomaaed:storage.www1
                                                    |___|  iqn.2009-06.ee.tartu.loomaaed:storage.www2
                                                           iqn.2009-06.ee.tartu.loomaaed:storage.db
                                                           iqn.2009-06.ee.tartu.loomaaed:storage.smtp
                                                
                                                    server - iSCSI targets

Laiemas tähenduses nimetatakse iSCSI targetiks kogu iSCSI serverit, kitsamas tähenduses nimetatakse iSCSI targetiks iga serveris välja jagatud plokkseadet.

Target ehk server

iSCSI target pakub võrgus nö plokkseadme teenust, mida kasutavad iSCSI kliendid. Reeglina on iSCSI target arvutil

  • piisavalt lokaalset plokkseadet
  • kiire võrguühendus
  • plokkseadme haldamiseks kasutusel LVM tarkvara

Targeti tarkvara ettevalmistamine

Targeti tarkvara koosneb kahest osast

  • tuumamoodulid - pakett iscsitarget-modules-2.6-xen-amd64 (iscsi_trgt)
  • serverprogramm ja utiliidid - pakett iscsitarget (deemon, tema seadistusfail ning juhtprogramm, vastavalt ietd, ietd.conf ning ietdadm)

iSCSI target'i ehk serveri kasutamiseks vajalik tarkvara paigaldatakse öeldes, tuleb tähelepanelikult jälgida, et paigaldatakse sama tuuma moodul, mida kasutatakse

 # apt-get install iscsitarget iscsitarget-modules-2.6-xen-amd64

Väljajagatavate plokkseadmete ettevalmistamine

Väljajagatav plokkseade võib iseenesest olla mistahes plokkseade, ehk on kõige praktilisem moodustada iSCSI serveris LVM voluumid ning neid välja jagada, nt sellised voluumid volume group iscsi korral

  • /dev/iscsi/www1
  • /dev/iscsi/www2
  • /dev/iscsi/db
  • /dev/iscsi/smtp

Plokkseadme jagamisel on mõistlik mitte korraldada mitmekihilise LVM'i kasutamist.

iSCSI ressursi väljajagamise seadistamine

Igal väljajagatud plokkseadmele omistatakse teda kui iSCSI ressurssi identifitseeriv nimi, mida nimetatakse IQN (iSCSI Qualified Name), antud juhul on otsustatud kasutada selliseid nimesid

  • iqn.2009-06.ee.tartu.loomaaed:storage.www1
  • iqn.2009-06.ee.tartu.loomaaed:storage.www2
  • iqn.2009-06.ee.tartu.loomaaed:storage.db
  • iqn.2009-06.ee.tartu.loomaaed:storage.smtp

Nime formaat on oluline, tavaliselt kasutatakse domeeninime ees kuupäeva, sest domeeninimede omamine on ajalik.

iSCSI serveri seadistusfaili /etc/ietd.conf abil viiakse kokku IQN nimi ja konkreetne plokkseade, nt selliselt

 Target iqn.2009-06.ee.loomaaed.tartu:storage.www1
         Lun 0 Path=/dev/iscsi/www1,Type=fileio
         Alias iscsi_www1
 
 Target iqn.2009-06.ee.loomaaed.tartu:storage.www2
         Lun 0 Path=/dev/iscsi/www2,Type=fileio
         Alias iscsi_www2
 
 Target iqn.2009-06.ee.loomaaed.tartu:storage.db
         Lun 0 Path=/dev/iscsi/db,Type=fileio
         Alias iscsi_db
 
 Target iqn.2009-06.ee.loomaaed.tartu:storage.smtp
         Lun 0 Path=/dev/iscsi/smtp,Type=fileio
         Alias iscsi_smtp

iSCSI target teenuse käivitamine

Fail /etc/default/iscsitarget peab sisaldama rida

 ISCSITARGET_ENABLE=true

ning target'i käivitamiseks tuleb öelda

 # /etc/init.d/iscsitarget start

Käivitamisel tekkib tuuma logisse

 iSCSI Enterprise Target Software - version 0.4.16
 iscsi_trgt: Registered io type fileio
 iscsi_trgt: Registered io type blockio
 iscsi_trgt: Registered io type nullio

Targeti poole pöördumiseks peab saama serverile ligi üle port 3260/tcp.

iSCSI targeti ressursile juurdepääsu piiramine kliendi ip aadressi täpsusega

iSCSI klientide ligipääsu piiramiseks on kaks võimalust

  • lubatud ip aadresside näitamisega
  • kasutajanime ja parooli kasutamisel põhinev

ip aadressi täpsusega piiramiseks tuleb failis /etc/initiators.deny näidata, et vaikimisi on ligipääs keelatu

 # cat /etc/initiators.deny
 ALL ALL

ning faili /etc/initiators.allow kirjeldada millistele ressurssidele on ligipääs millistelt ip aadressidelt lubatud, nt

 # cat /etc/initiators.allow
 iqn.2009-06.ee.tartu.loomaaed:storage.www1 10.0.6.247, 10.0.6.248
 iqn.2009-06.ee.tartu.loomaaed:storage.www2 10.0.6.247, 10.0.6.248

Serveri töö jälgimine

Serveris kirjeldatud ressursside nimekirja näeb öeldes

 # cat /proc/net/iet/volume 
 tid:4 name:iqn.2009-06.ee.tartu.loomaaed:storage.www1
         lun:0 state:0 iotype:fileio iomode:wt path:/dev/iscsi/www1
 tid:3 name:iqn.2009-06.ee.tartu.loomaaed:storage.www2
         lun:0 state:0 iotype:fileio iomode:wt path:/dev/iscsi/www2
 tid:2 name:iqn.2009-06.ee.tartu.loomaaed:storage.db
         lun:0 state:0 iotype:fileio iomode:wt path:/dev/iscsi/db
 tid:1 name:iqn.2009-06.ee.tartu.loomaaed:storage.smtp
         lun:0 state:0 iotype:fileio iomode:wt path:/dev/iscsi/smtp

Parasjagu aktiivsete sessioonide nimekirja saab esitada öeldes

 # cat /proc/net/iet/session 
 tid:3 name:iqn.2009-06.ee.tartu.loomaaed:storage.www2
       sid:13510799003550208 initiator:iqn.1993-08.org.debian:01:6e18c7e277ac
               cid:0 ip:10.0.6.250 state:active hd:none dd:none
 tid:4 name:iqn.2009-06.ee.tartu.loomaaed:storage.db
       sid:14073748973748736 initiator:iqn.1993-08.org.debian:01:bc111b9ee56f
               cid:0 ip:10.0.6.248 state:active hd:none dd:none
 ...

Serveri töötamist ajas võimaldab jälgida sysstat paketi koosseisu kuuluv programm iostat. Nö normaalsete arvutite ja võrguseadmete kasutamisel on tavaline saavautada üle iSCSI andmevahetuse kiiruseks kümneid MBait/s kiirusi.

Targeti kasutajanime ja parooliga autentimise seadistamine

IET ja Open-iSCSI target-initiator paar võimaldavad korraldada üksteise kasutajanime ja parooliga autentimist. Selleks tuleb targeti ietd.conf faili lisada Target sektsiooni read

 IncomingUser init initsaladus
 OutgoingUser target trgtsaladus

kus

  • IncomingUser - näitatud kasutanime ja parooliga peavad klappima iSCSI kliendi poolt esitatud kasutajanimi ja parool
  • OutgoingUser - näitatud kasutanimi ja parooli peavad klappima iSCSI kliendi poolt nõutud kasutajanime ja parooliga

Targetite lisamine ietd töötamise ajal

ietadm programmi abil saab IET serveri töötamise ajal targeteid seadistada, sh neid lisada ja eemaldada. Lisamine toimub selliselt

 bash# ietadm --op new --tid=5 --params Name=iqn.2009-06.ee.tartu.loomaaed:storage.www3
 bash# ietadm --op new --tid=5 --lun=0 --params Path=/dev/iscsi/www3

Autentimise tarvis saab öelda sedasi

 bash# ietadm --op new --tid=5 --user --params=IncomingUser=init,Password=initsaladus
 bash# ietadm --op new --tid=5 --user --params=OutgoingUser=target,Password=trgtsaladus

Eemaldamine toimub nt selliselt

 bash# ietadm --op delete --tid=5

Initiator ehk klient

iSCSI klient kasutab võrgust nö plokkseadme teenust, mida pakub iSCSI server. Reeglina on iSCSI klient arvutil kiire võrguühendus.

iSCSI kliendil on

  • faili /etc/iscsi/initiatorname.iscsi abil kirjeldatud unikaalne kliendi IQN nimi
  • töötab deemonprotsess iscsid, mida juhib seadistusfail /etc/iscsi/iscsid.conf
  • kirjeldatud kasutatavate targetite anmebaas, kataloogis /etc/iscsi/nodes

iSCSI kliendi tööd juhitakse icsciadm programmi abi, mis töötab mitmes režhiimis, käesolevas palas kasutatakse kolme

  • discovery - küsitakse iSCSI serverilt, milliseid ressursse ta pakub
  • node - seadistakse targeti kasutamine
  • session - küsitakse millised iSCSI ühendused on parasjagu kasutusel

Kliendi tarkvara ettevalmistamine

Kliendi tarkvara paigaldatakse öeldes

 # apt-get install open-iscsi

Kliendi tarkvara käivitamine

Tõenäoliselt sobib alustuseks kasutada olemasolevat seadistusfaili

 /etc/iscsi/iscsid.conf

kui soovitaks, et kasutatavate targetite andmebaasi lisatud targetid võetakse kasutusele arvuti alglaadimisel automaatselt, tuleb kasutada seadistusfailis rida (see muudatus kehtestub peale muudatust baasi lisatud targetite jaoks)

 node.startup = automatic

Ja samuti tõenäoliselt sobib olemasolev initiatorname.iscsi sisu

 # cat  /etc/iscsi/initiatorname.iscsi
 InitiatorName=iqn.1993-08.org.debian:01:6e18c7e277ac

Kui aga arvuteid valmistatakse kopeerimise teel, siis saab uue unikaalse nime tekitada utiliidiga

 # iscsi-iname 
 iqn.2005-03.org.open-iscsi:48b1992a24e7

iSCSI kliendi deemoni käivitamiseks tuleb öelda

 # /etc/init.d/open-iscsi start
 Starting iSCSI initiator service: iscsid.
 Setting up iSCSI targets:
 iscsiadm: No records found!
 .
 Mounting network filesystems:.

Väljundis tähendab rida 'iscsiadm: No records found!', et kliendis pole veel kasutatavate targetite andmebaasi moodustatud.

Targetis väljajagatud ressursside nimekirja küsimine

Esmalt küsime milliseid ressursse jagab aadressil 10.0.6.14 töötav server, kliendis peab iscsid deemon käima

 # iscsiadm -m discovery -t sendtargets -p 10.0.6.14
 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.www1
 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.www2
 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.db
 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.smtp

Kliendis targetitega seotud sessioonide haldamine

Targeti kasutamine algab targetisse nö sisselogimise teel sessiooni alustamisega ning lõpeb targetist väljalogimise ehk sessiooni lõpetamisega, nt selliselt

 # iscsiadm -m node -T iqn.2009-06.ee.tartu.loomaaed:storage.www1 -p 10.0.6.14:3260 -l

Tulemusena tekib uus scsi seade, nt /dev/sda, mida saab kasutada nii nagu tavalist plokkseadet

 scsi0 : iSCSI Initiator over TCP/IP
 scsi 0:0:0:0: Direct-Access     IET      VIRTUAL-DISK     0    PQ: 0 ANSI: 4
 Driver 'sd' needs updating - please use bus_type methods
 sd 0:0:0:0: [sda] 83886080 512-byte hardware sectors (42950 MB)
 sd 0:0:0:0: [sda] Write Protect is off
 sd 0:0:0:0: [sda] Mode Sense: 77 00 00 08
 sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
 sd 0:0:0:0: [sda] 83886080 512-byte hardware sectors (42950 MB)
 sd 0:0:0:0: [sda] Write Protect is off
 sd 0:0:0:0: [sda] Mode Sense: 77 00 00 08
 sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA

Kasutamise lõpetamiseks tuleb sisuline iSCSI seadme kasutamine lõpetada, nt failisüsteemid plokkseadmelt lahti ühendada ning öelda

 # iscsiadm -m node -T iqn.2009-06.ee.tartu.loomaaed:storage.www1 -p 10.0.6.14:3260 -u

Parajagu töötavate sessioonide nimekirja saab küsida öeldes

 # iscsiadm -m session
 tcp: [1] 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.www1
 tcp: [2] 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.www2

Konkreetse sessiooni kohta saab küsida infot käsuga

 # iscsiadm -m session -r 2 -P 1
 Target: iqn.2009-06.ee.tartu.loomaaed:storage.www2
       Current Portal: 10.0.6.14:3260,1
       Persistent Portal: 10.0.6.14:3260,1
               **********
               Interface:
               **********
               Iface Name: default
               Iface Transport: tcp
               Iface Initiatorname: iqn.1993-08.org.debian:01:6e18c7e277ac
               Iface IPaddress: 10.0.6.250
               Iface HWaddress: default
               Iface Netdev: default
               SID: 1
               iSCSI Connection State: LOGGED IN
               iSCSI Session State: LOGGED_IN
               Internal iscsid Session State: NO CHANGE

kus

  • -r 2 - näitab, et küsitakse teise sessiooni kohta, jättes selle parameetri ära, esitatakse info kõigi sessioonide kohta
  • -P 1 - näitab, et küsitakse nö number 1 põhjalikkusega infot, võimalikud väärtused on 0, 1, 2, 3

Kliendis targetite andmebaasi haldamine

Kataloogis /etc/iscsi/nodes asub sellest kliendist kasutatavat targetite andmebaas. Seda andmebaasi saab hallata käsitsi vastavaid tekstifaili redigeerides, aga soovitav on seda teha haldusprogrami iscsiadm abil.

iSCSI serveri poole discovery abil pöördumisel salvestatakse kõik targetid kliendi targetite andmebaasi, andmebaasis sisalduvate targetite nimekirja saab küsida öeldes

 # iscsiadm -m node
 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.www1
 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.www2

Andmebaasist saab sissekandeid kustutada öeldes nt

 # iscsiadm -m node -T iqn.2009-06.ee.tartu.loomaaed:storage.www2 -p 10.0.6.14:3260 -o delete

Käesolevas punktid esitatud haldustegevuste ajal ei pea iscsid deemon käima.

Automaatne iSCSI targetite külgeühendamine

Selle asemel, et peale arvuti alglaadimist käsitsi targetitesse sisse logida ja sessioonid moodustada on võimalik näidata enne kliendis andmebaasi moodustamist /etc/iscsi/iscsid.conf parameeter

 node.startup = automatic

Või andmebaasis olemasolevate sissekandeid muuta öeldes

 # iscsiadm -m node -T iqn.2009-06.ee.tartu.loomaaed:storage.www2 -p 10.0.6.14:3260 --op update -n node.startup -v automatic

Seejärel saab targetitele vastavad sessioonid tekitada ja lõpetada käivitusskriptiga

 # /etc/init.d/open-iscsi start
 Starting iSCSI initiator service: iscsid.
 Setting up iSCSI targets:
 Logging in to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.www1, portal: 10.0.6.14,3260]
 Logging in to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.www2, portal: 10.0.6.14,3260]
 Logging in to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.db, portal: 10.0.6.14,3260]
 Logging in to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.smtp, portal: 10.0.6.14,3260]
 Login to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.www1, portal: 10.0.6.14,3260]: successful
 Login to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.www2, portal: 10.0.6.14,3260]: successful
 Login to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.db, portal: 10.0.6.14,3260]: successful
 Login to [iface: default, target: iqn.2009-06.ee.tartu.loomaaed:storage.smtp, portal: 10.0.6.14,3260]: successful
 .
 Mounting network filesystems:.

Seejuures tuleb jälgida, et enne sessioonide lõpetamist oleks vastavate plokkseadmete kasutus lõppenud ja nad oleksid lahti monteeritud.

Initiatori kasutajanime ja parooliga autentimise seadistamine

Initiatori /etc/iscsi/iscsid.conf failis tuleb kasutada ridu

 node.session.auth.authmethod = CHAP
 node.session.auth.username = init
 node.session.auth.password = initsaladus
 node.session.auth.username_in = target
 node.session.auth.password_in = trgtsaladus

Muudatuste kehtestamise üheks võimaluseks on programmi iscsid seisata ja käivitada.

Kusjuures, iscsid logib initiatori syslogi juhul kui inititator ei suuda ennast targetile autentida

 Oct 31 21:56:43 arvuti iscsid: Login failed to authenticate with target iqn.2009-06.ee.tartu.loomaaed:storage.www2

ning juhul kui target ei suuda ennast initiatori vastu autentida

 Oct 31 21:55:17 arvuti iscsid: failing authentication, received incorrect username from target iqn.2009-06.ee.tartu.loomaaed:storage.www2
 Oct 31 21:55:17 arvuti iscsid: Login authentication failed with target iqn.2009-06.ee.tartu.loomaaed:storage.www2

Valmislahendused

Aadressil [1] jagatakse arvutipõhist nö storage lahendust, lisaks iSCSI targeti tekitamise võimalusele tegeleb see ka CIFS ja NFS'iga. Olemas on ka spetsiaalsed riistvaralised iSCSI targeteid ja nende manageerimise vahendeid sisaldavad kastid erinevatelt tootjatelt, nt EMC ja NetApp.

Kasulikud lisamaterjalid