Erinevus lehekülje "ISCSI kasutamine" redaktsioonide vahel
(→Target kasutab ZFS voluumi) |
(→Multipath) |
||
340. rida: | 340. rida: | ||
Multipathi tööleseadmiseks on tarvis moodustada sobiva sisuga /etc/multipath.conf seadistusfail, näiteks selline | Multipathi tööleseadmiseks on tarvis moodustada sobiva sisuga /etc/multipath.conf seadistusfail, näiteks selline | ||
− | |||
− | |||
− | |||
defaults { | defaults { | ||
udev_dir /dev | udev_dir /dev | ||
349. rida: | 346. rida: | ||
default_getuid_callout "/lib/udev/scsi_id -g -u -s /block/%n" | default_getuid_callout "/lib/udev/scsi_id -g -u -s /block/%n" | ||
failback immediate | failback immediate | ||
+ | user_friendly_names yes | ||
} | } | ||
blacklist { | blacklist { | ||
416. rida: | 414. rida: | ||
Tundub, et Debiani puhul on testingus (Lenny) natuke uuem open-iscsi tarkvara, mis käitub multipath kasutamise jaoks sobivamalt. | Tundub, et Debiani puhul on testingus (Lenny) natuke uuem open-iscsi tarkvara, mis käitub multipath kasutamise jaoks sobivamalt. | ||
+ | |||
+ | ===Kasulikud lisamaterjalid=== | ||
+ | |||
+ | * https://www.redhat.com/docs/manuals/csgfs/browse/4.6/DM_Multipath/index.html |
Redaktsioon: 19. märts 2009, kell 23:15
Sisukord
Sissejuhatus
iSCSI tehnoloogia võimaldab üle TCP/IP võrgu ühendada klientarvutile külge plokk-seadme vastavat teenust pakkuvast serverist, kusjuures on kombeks kasutada selliseid nimetusi kliendi ja serveri kohta
- initiator - iSCSI klient
- target - iSCSI server
Target ja initiator arvutid võivad kasutada erinevaid operatsioonisüsteeme ning asuda ka erinevatel riistvaralistel platvormidel. Kuna andmevahetuse maht võib kujuneda suureks, siis võib olla mõistlik lisaks kasutusele võtta ainult iSCSI jaoks eraldatud võrgusegment.
Tundub, et initiatori osas on suurem arendajate tähelepanu koondunud projektile [http://www.open-iscsi.org/ ] ning targeti osas projektile [http://iscsitarget.sourceforge.net/]. 2008 alguse seisuga esineb iSCSI tarkvara tugi levinud tasuta jagatavates operatsioonisüsteemides/distributsioonides selliselt
- Linux'i distributsioonid - initiator olemas, target puudub, aga saab lähtetekstidest hõlpsasti juurde lisada
- Solaris - täielikult olemas
- NetBSD - target olemas
- OpenBSD - täielikult puudub, ei saa teadaolevalt lisada lihtsasti
iSCSI targeti paigaldamine
Target koosneb kahest osast
- iSCSI targeti utiliidid - deemon, tema seadistusfail ning juhtprogramm, vastavalt ietd, ietd.conf ning ietdadm
- kerneli moodulid - iscsi_trgt
Eelduseks on, et paigaldatud on 2.6.14 versioonist uuem Linuxi crypto võimega tuum ning tuuma lähtetekstid, sellisena nagu nad peale tuuma kompileerimist jäid, oleksid alles. Seejärel anda IET lähtetekstide kataloogis käsk 'make'.
Millegi katsetamiseks sobib selline ietd deemoni seadistusfail, eeldusel, et /dev/hda3 on katsetamiseks vaba partitsioon (block-device).
Target iqn.2006-01.com.example:storage.disk3 Lun 0 Path=/dev/hda3,Type=fileio Alias Test
Ning käivitada deemon
/etc/init.d/iscsi-target start
Targeti elutegevusest saab aimu sedasi
bash# cat /proc/net/iet/volume /proc/net/iet/session tid:1 name:iqn.2006-01.com.example:storage.disk3 lun:0 state:0 iotype:fileio path:/dev/hda3 tid:1 name:iqn.2006-01.com.example:storage.disk3 sid:3660274212864512 initiator:iqn.1987-05.com.cisco:01.b5f4204e93f cid:0 ip:192.168.10.26 state:active hd:none dd:none
ietadm programmi abil saab IET serveri töötamise ajal targeteid seadistada, sh neid lisada ja eemaldada. Lisamine toimub selliselt
bash# ietadm --op new --tid=14 --params Name=iqn.2006-01.com.example:storage.disk4 bash# ietadm --op new --tid=14 --lun=0 --params Path=/data/disk4.img
Autentimise tarvis saab öelda sedasi
bash# ietadm --op new --tid=14 --user --params=IncomingUser=init,Password=initsaladus bash# ietadm --op new --tid=14 --user --params=OutgoingUser=target,Password=trgtsaladus
Eemaldamine toimub nt selliselt
bash# ietadm --op delete --tid=9
iSCSI initiatori paigaldamine
Initiator koosneb kahest osast
- iSCSI initiatori utiliidid - deemon (nb! iscsi kliendi poolel töötab ka deemon), tema seadistusfail ning juhtprogramm, vastavalt iscsid, inititatorname.conf ning iscsiadm
- kerneli moodulid - scsi_transport_iscsi, iscsi_tcp
Eelduseks on, et paigaldatud on 2.6.14 versioonist uuem Linuxi crypto võimega tuum ning tuuma lähtetekstid, sellisena nagu nad peale tuuma kompileerimist jäid, oleksid alles. Seejärel anda lähtetekstide kataloogis käsk 'make'.
- (Serveris moodustada iSCSI shared ning anonüümselt subnetile välja jagada.)
- tekitada fail /etc/initiatorname.iscsi, nt sellise sisuga 'InitiatorName=iqn.1987-05.com.cisco.01.6727f456fe3f50c8274f4484bd7862d2'
- laadida moodulid scsi_transport_iscsi ja iscsi_tcp
- käivitada iscsid (seda saab käivitada logima ja nii et ta backgroundi ei lähe, vastavalt vajadusele), /etc/init.d/open-iscsi start | stop
- vaadake, mis shared on välja jagatud
bash# iscsiadm -m discovery -t sendtargets -p 192.168.10.19:3260 192.168.10.19:3260,1 iqn.2006-01.com.example:storage.disk1 192.168.10.19:3260,1 iqn.2006-01.com.example:storage.disk2 192.168.10.19:3260,1 iqn.2006-01.com.example:storage.disk3
Targeti registreerimine kettana klientmasinas (initiator)
bash# iscsiadm -m node -T iqn.2006-01.com.example:storage.disk1 -p 192.168.10.19:3260 -l
Targeti lahtiühendamine
bash# iscsiadm -m node -T iqn.2006-01.com.example:storage.disk1 -p 192.168.10.19:3260 -u
Kliendi poolt kõiki olemasolevaid sessioone saab vaadata käsuga, lisades veel võtme -i näeb üksikasjalisemat infot
bash# iscsiadm -m session
Valmislahendused
Aadressil [http://www.openfiler.com] 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.
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.
Initiatori kasutamine operatsioonisüsteemiga Solaris
Solaris 10 11/06 sisaldab pakette
system SUNWiscsiu Sun iSCSI Management Utilities (usr) system SUNWiscsir Sun iSCSI Device Driver (root)
mille abil on võimalik kasutada võrgus paiknevat iSCSI targetit.
bash# iscsiadm add discovery-address iscsi.tartu.loomaaed.ee:3260 bash# iscsiadm modify discovery --sendtargets enable
Ning kui seejärel seadmetele lingid tekitada, siis ongi lisandunud ressursi ligipääs paista
bash# devfsadm -i iscsi bash# format 9. c15t2d0 <IET-VIRTUAL-DISK-0 cyl 1905 alt 2 hd 64 sec 256> /iscsi/disk@0000iqn.2007-08.ee.tartu.loomaaed.iscsi%3Astorage.disk30001,0
Klienti poolt saab targetiga peetava ühenduse andmeid vaadata selliselt
bash# iscsiadm list target -v iqn.2007-08.ee.tartu.loomaaed.iscsi:storage.disk3 Target: iqn.2007-08.ee.tartu.loomaaed.iscsi:storage.disk3 Alias: - TPGT: 1 ISID: 4000002a0000 Connections: 1 CID: 0 IP address (Local): 10.0.7.6:42003 IP address (Peer): 10.0.6.74:3260 Discovery Method: SendTargets Login Parameters (Negotiated): Data Sequence In Order: yes Data PDU In Order: yes Default Time To Retain: 20 Default Time To Wait: 2 Error Recovery Level: 0 First Burst Length: 65536 Immediate Data: yes Initial Ready To Transfer (R2T): yes Max Burst Length: 262144 Max Outstanding R2T: 1 Max Receive Data Segment Length: 8192 Max Connections: 1 Header Digest: NONE Data Digest: NONE
Ühenduse lõpetamiseks tuleb ressurss lahti ühendada, tavalise failisüsteemi puhul umount ning ZFS pooli puhul
bash# zpool export poolinimi
ning öelda
bash# iscsiadm modify discovery --sendtargets disable bash# iscsiadm remove discovery-address iscsi.tartu.loomaaed.ee:3260
Samas või mõnes muus arvutis selle ZFS pooli sisaldav ressursi uuesti kasutusevõtmisel tuleb öelda
bash# zpool import poolinimi
iSCSI targeti kasutamine Solarisega
Targeti saab moodustada kahel viisil, mis erinevad selle poolest kuidas nn iSCSI serveri andmeid hoitakse
- kasutades failisüsteemi
- kasutades ZFS voluumi
Target kasutab failisüsteemi
Esmalt tuleb välja vaadata piisavalt vaba ruumi sisaldav failisüsteem, moodustada sinna kataloog
bash# mkdir /data/iscsi-targetid
ning öelda
bash# iscsitadm modify admin -d /data/iscsi-targetid ..
Target kasutab ZFS voluumi
Moodustame targetile vastava zfs volume (alates Solaris 10/08 ehk u6 versioonist)
# zfs create -V 2g tank/v2 # zfs set shareiscsi=on tank/v2 # iscsitadm list target Target: tank/v2 iSCSI Name: iqn.1986-03.com.sun:02:4392122e-42d7-c319-befc-b115cfc605d0 Connections: 0
Tulemuse kohta saab küsida infot sedasi
# zfs get all tank/v2 NAME PROPERTY VALUE SOURCE tank/v2 type volume - tank/v2 creation Fri Nov 21 15:38 2008 - tank/v2 used 744M - tank/v2 available 158G - tank/v2 referenced 744M - tank/v2 compressratio 1.00x - tank/v2 reservation 2G local tank/v2 volsize 2G - tank/v2 volblocksize 8K - tank/v2 checksum on default tank/v2 compression off default tank/v2 readonly off default tank/v2 shareiscsi on local tank/v2 copies 1 default tank/v2 refreservation none default
ning
# iscsitadm list target Target: tank/v2 iSCSI Name: iqn.1986-03.com.sun:02:4392122e-42d7-c319-befc-b115cfc605d0 Connections: 1
iSCSI kliendi arvutis tuleb öelda
# iscsiadm add discovery-address 10.0.6.170:3260 # iscsiadm modify discovery --sendtargets enable
Tulemus peaks olema näha selliselt
# iscsiadm list initiator-node Initiator node name: iqn.1986-03.com.sun:01:00e000c4e136.454ce2d9 Initiator node alias: - Login Parameters (Default/Configured): Header Digest: NONE/- Data Digest: NONE/- Authentication Type: NONE RADIUS Server: NONE RADIUS access: unknown Configured Sessions: 1
Moodustame seadmed
# devfsadm -i iscsi
ning nüüd nt käsuga format peaks olema paista iSCSI seade, mida saab kasutada
# format ... 9. c15t4d0 <SUN-SOLARIS-1-2.00GB> /iscsi/disk@0000iqn.1986-03.com.sun%3A02%3A4392122e-42d7-c319-befc-b115cfc605d00001,0
nt moodustada sinna zfs failisüsteem
# zpool create testiscsi c15t4d0
iSCSI kliendist targeti kasutamise lõpetamiseks tuleb öelda
# iscsiadm modify discovery --sendtargets disable # iscsiadm remove discovery-address 10.0.6.170:3260
Tulemusena format enam ei esita iSCSI kettaressurssi.
iSCSI targeti arvutis targeti eemaldamiseks tuleb öelda
# zfs set shareiscsi=off tank/v2
Tulemusena ei ütle list target midagi
# iscsitadm list target #
Ning eemaldada voluum
# zfs destroy tank/v2
Autentimine
IET ja Open-iSCSI target-initiator paar (tõenäoliselt ka muud võimalikud paarid) võimaldavad korraldada üksteise autentimist. Selleks tuleb targeti ietd.conf faili lisada Target sektsiooni read
IncomingUser init initsaladus OutgoingUser target trgtsaladus
ning initiatori /etc/iscsi/iscsid.conf faili read
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 programmid ietd ning iscsid seisata ja käivitada ning initiatori poolel viia labi uuesti discovery.
Kusjuures, iscsid logib initiatori syslogi juhul kui inititator ei suuda ennast targetile autentida
Oct 31 21:56:43 loomla iscsid: Login failed to authenticate with target iqn.2006-01.com.example:storage.disk1
ning juhul kui target ei suuda ennast initiatori vastu autentida
Oct 31 21:55:17 loomla iscsid: failing authentication, received incorrect username from target iqn.2006-01.com.example:storage.disk1 Oct 31 21:55:17 loomla iscsid: Login authentication failed with target iqn.2006-01.com.example:storage.disk1
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.