ISCSI kasutamine Debianiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 21. juuni 2009, kell 13:00 kasutajalt Imre (arutelu | kaastöö) (Kliendis targetite andmebaasi moodustamine)

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 eraldada iSCSI 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 tugi 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
  • NetBSD - target olemas
  • OpenBSD - täielikult puudub, ei saa teadaolevalt lisada lihtsasti

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/www    | -> /srv/postgresql  | -> /srv/cyrus
    --|----------------|---------------------|--------|-----
              iSCSI subnet                            |
                                                     _|_
                                                    |   |  iqn.2009-06.ee.tartu.loomaaed:storage.www
                                                    |___|  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äljajagatava plokkseadme ettevalmistamine

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

  • /dev/iscsi/www
  • /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.www
  • 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.www
         Lun 0 Path=/dev/iscsi/www,Type=fileio
         Alias iscsi_www
 
 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

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

 # cat /etc/initiators.allow
 iqn.2001-04.com.example:storage.iscsi_test_volume 192.168.1.110, 192.168.1.111

Serveri töö jälgimine

Serveris kirjeldatud ressursside nimekirja näeb öeldes

 # cat /proc/net/iet/volume 
 tid:3 name:iqn.2009-06.ee.tartu.loomaaed:storage.www
         lun:0 state:0 iotype:fileio iomode:wt path:/dev/iscsi/www
 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

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

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

Kliendis targetite andmebaasi haldamine

Kliendis kasutatavat targetite andmebaasi saab moodustada käsitsi, soovitav on seda teha haldusprogrami iscsiadm abil. icsciadm programm 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

Esmalt küsime milliseid ressursse jagab aadressil 10.0.6.14 töötav server

 # iscsiadm -m discovery -t sendtargets -p 10.0.6.14
 10.0.6.14:3260,1 iqn.2009-06.ee.tartu.loomaaed:storage.www
 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

Esmakordsel sisselogimisel salvestatakse target kliendi targetite andmebaasi, logime kõigist iSCSI arvutitest sisse näidates vastava ressursi nime, nt veebiserveris ütleme

 # iscsiadm -m node -T iqn.2009-06.ee.tartu.loomaaed:storage.www -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.www -p 10.0.6.14:3260 -u