ISCSI kasutamine

Allikas: Kuutõrvaja
Redaktsioon seisuga 12. november 2010, kell 13:31 kasutajalt Jj (arutelu | kaastöö)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)

Sissejuhatus

Siin palas olnud Debian GNU/Linux osa asub oluliselt täiendatud kujul aadressil http://kuutorvaja.eenet.ee/wiki/ISCSI_kasutamine_Debianiga

iSCSI ietd targeti paigaldamine Debian Etch puhul

2007 aastal on see õnnelik aeg, kui ietd versioon 0.4.15 sobib kokku Debian Etchiga kaasneva 2.6 tuumaga. ietd serveri ehk targeti lähtetekstist kompileerimiseks tuleb esmalt paigaldada vajalikud vahendid, toimetame Xen tuuma näitel (kui on kasutusel mõni muu tuum, siis saab tuuma nime kindlaks teha 'uname -a' käsuga, muu tegevus on sarnane)

bash# cd /usr/src
bash# apt-get build-dep linux-image-2.6.18-4-xen-686
bash# apt-get install linux-headers-2.6.18-4-xen-686
bash# apt-get install libssl-dev
bash# tar zxf iscsitarget-0.4.15.tar.gz
bash# cd iscsitarget-0.4.15

Tarkvara kompileerimiseks ning paigaldamiseks tuleb öelda

bash:/usr/src/iscsitarget-0.4.15# make KSRC=/usr/src/linux-headers-2.6.18-4-xen-686
bash:/usr/src/iscsitarget-0.4.15# make KSRC=/usr/src/linux-headers-2.6.18-4-xen-686 install
install: creating directory `/lib/modules/2.6.18-4-xen-686/kernel/iscsi'
`kernel/iscsi_trgt.ko' -> `/lib/modules/2.6.18-4-xen-686/kernel/iscsi/iscsi_trgt.ko'
depmod -aq
`usr/ietd' -> `/usr/sbin/ietd'
`usr/ietadm' -> `/usr/sbin/ietadm'
`etc/initd/initd.debian' -> `/etc/init.d/iscsi-target'
`etc/ietd.conf' -> `/etc/ietd.conf'
`etc/initiators.allow' -> `/etc/initiators.allow'
`etc/initiators.deny' -> `/etc/initiators.deny'
`doc/manpages/ietadm.8' -> `/usr/share/man/man8/ietadm.8'
`doc/manpages/ietd.8' -> `/usr/share/man/man8/ietd.8'
`doc/manpages/ietd.conf.5' -> `/usr/share/man/man5/ietd.conf.5'
install: creating directory `/usr/share/doc/iscsitarget'
`ChangeLog' -> `/usr/share/doc/iscsitarget/ChangeLog'
`COPYING' -> `/usr/share/doc/iscsitarget/COPYING'
`README' -> `/usr/share/doc/iscsitarget/README'
`README.vmware' -> `/usr/share/doc/iscsitarget/README.vmware'

Kuigi antud juhul on tegu mõne tuuma mooduli, seadistusfaili ning programmifailiga ei ole üldiselt ilma paketihalduseta tarkvara paigaldamine korrektne.

Debian Etch puhul sobib paketihalduse 2.6 tuumaga kasutada operatsioonisüsteemi paketihalduses olevat open-iscsi initiatorit.


Multipath

Multipath tehnika kasutamine võimaldab korraldada iSCSI kliendi ja serveri vahele mitu paralleelset ühendust, mis suurendab andmevahetuse kiirust ja teenuse redundantsust. Näiteks võiks korraldada seda nii serveri ja kliendi poolel, et kummaski otsas on kasutusel kolm füüsilist võrgukaarti: üle ühe võrgukaartide paari liiguvad tavalised andmed ning kaks ülejäänud paari on kasutusel vaid iSCSI ressursi kliendile kättesaadavaks tegemiseks. Et süsteem töötaks tuleks kõik paarid seadistada erinevatesse ip subnettidesse.

iSCSI serveri poolel ei ole seoses multipath kasutamisega tarvis midagi erinevat teha võrreldes tavalise iSCSI teenuse pakkumisega. iSCSI kliendi poolele tuleb lisaks paigaldada multipath tarkvara, Debian GNU/Linux puhul pakett multipath-tools (udev tarkvara on samuti oluline, aga see peaks olema olemas juba niigi seoses iSCSI tarkvaraga).

Enne multipath seadistamist peab klient nägema ühte ja sama iSCSI serveri ressurssi (targetit) üle kummagi etherneti-ühenduse, nt seadmetena /dev/sda ja /dev/sdb. See olukord saavutatakse tavapärasel moel, midagi erilist ei ole selleks kliendi ega serveri poolel tarvis teha

bash# iscsiadm -m node -T iqn.2008-01.com.example:storage.shared1 -p 192.168.10.251:3260 -l
bash# iscsiadm -m node -T iqn.2008-01.com.example:storage.shared1 -p 192.168.11.251:3260 -l

Kuna iSCSI abil toimub blokk-seadmetega toimetamine, siis ei ole probleemiks failide lukustamise küsimused ega muud sellist, sest need probleemib kuuluvat loogilises mõttes kõrgemasse, failisüsteemi kihti.

Multipathi tööleseadmiseks on tarvis moodustada sobiva sisuga /etc/multipath.conf seadistusfail, näiteks selline

 defaults {
    udev_dir                /dev
    polling_interval        5
    default_selector        "round-robin 0"
    default_getuid_callout  "/lib/udev/scsi_id -g -u -s /block/%n"
    failback                immediate
    user_friendly_names yes
 }
 blacklist {
    wwid    200d04efd1804f38e
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^hd[a-z][[0-9]*]"
    devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
 }
 multipaths {
    multipath {
       wwid                    149455400000000000000000002000000d45f38000d000000
       alias                   shared1
       path_grouping_policy    failover
       path_checker            readsector0
 }

kusjuures multipath sektsiooni wwid väärtuse saab kindlaks teha küsides, mõlemal juhul peab tagastatama sama väärtus kuna tegu on ühe ja sama füüsilise ressurssiga

 bash# /lib/udev/scsi_id -g -u -s /block/sda
 149455400000000000000000002000000d45f38000d000000
 bash# /lib/udev/scsi_id -g -u -s /block/sdb
 149455400000000000000000002000000d45f38000d000000

Seejärel tuleb multipath tarkvara käivitada öeldes

 bash# /etc/init.d/multipath-tools start

Seadistusfaili muutmisel piisab reload'ist. Kui kõik läks õieti, siis annab käsk multipath sarnase väljundi

 bash # multipath -ll
 shared1 (149455400000000000000000002000000d45f38000d000000) dm-0 IET     ,VIRTUAL-DISK  
 [size=2.0G][features=0][hwhandler=0]
 \_ round-robin 0 [prio=1][enabled]
  \_ 26:0:0:0 sdb 8:32  [active][ready]
 \_ round-robin 0 [prio=1][enabled]
  \_ 25:0:0:0 sda 8:16  [active][ready]

ning on tekkinud kasutamiseks uus seade /dev/mapper/shared1

 bash# fdisk /dev/mapper/shared1 -l
 
 Disk /dev/mapper/shared1: 2147 MB, 2147483648 bytes
 255 heads, 63 sectors/track, 261 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Disk identifier: 0x00000000
 
 Disk /dev/mapper/shared1 doesn't contain a valid partition table

Seda seadet saab tavapärasel moel kasutama hakata, aga enne maksab veenduda, et tõepoolest, katkestades ühele seadmele vastava võrguühenduse, nt blokeerides liiklust iptables'iga või võrgukaabli eemaldamisega peaks jääma seade kasutusele, samal ajal multipaht käsk ütleb

 bash# multipath -l 
 shared1 (149455400000000000000000002000000d45f38000d000000) dm-0 IET     ,VIRTUAL-DISK  
 [size=2.0G][features=0][hwhandler=0]
 \_ round-robin 0 [prio=0][enabled]
  \_ 26:0:0:0 sdb 8:32  [failed][undef]
 \_ round-robin 0 [prio=0][enabled]
  \_ 25:0:0:0 sda 8:16  [active][undef]

Ning peale ühenduse tagasi tekkimist taastub endine olukord. Seejuures on oluline iscsid.conf failis parameetri node.conn[0].timeo.noop_out_timeout väärtus, see ei tohiks liiga pikka olla, selle jooksul on iSCSI ressurss mitte-kasutatavas olekus.

 # To specify the time to wait for a Nop-out response before failing
 # the connection, edit this line. Failing the connection will
 # cause IO to be failed back to the SCSI layer. If using dm-multipath
 # this will cause the IO to be failed to the multipath layer.
 # The value is in seconds and the default is 15 seconds.
 node.conn[0].timeo.noop_out_timeout = 15

Tundub, et Debiani puhul on testingus (Lenny) natuke uuem open-iscsi tarkvara, mis käitub multipath kasutamise jaoks sobivamalt.

Kõigi multipath seadmete eemaldamiseks tuleb öelda

 # multipath -F

Kasulikud lisamaterjalid