DM-Multipath
Sisukord
- 1 Sissejuhatus
- 2 Multipath lahenduse kirjelduse näide
- 3 Arvuti FC kontrolleri draiveri kasutamine
- 4 Multipath tarkvara paigaldamine
- 5 Multipath seadmete moodustamine
- 6 Multipathd deemoni kasutamine
- 7 Multipath seadmete kasutamine
- 8 Multipath seadmete ümberseadistamine
- 9 Multipath lahenduse testimine
- 10 Logi
- 11 Juurfailisüsteemi kasutamine multipath seadmelt
- 12 Debian Etch kasutamise iseärasused
- 13 Debian Squeeze kasutamise iseärasused
- 14 Multipath kasutamine iSCSI seadmete nimede fikseerimiseks
- 15 SCSI seadmetega töötamine
- 16 Märkused
- 17 TODO
- 18 Hitachi DF600F kettakasti ja QLogic ISP2532 FC kontrolleri kasutamine
- 19 iSCSI multipath üle mitme interface samas subnetis
- 20 Kasulikud lisamaterjalid
Sissejuhatus
Multipathing ehk täpsemini DM-Multipathing (device-mapper multipath), aga ka tuntud kui Linux Native Multipath ja DM-MPIO (device-mapper multipath I/O), viitab üldiselt võimalusele arvutist ühe ja sama salvestusressurssi (ingl. k. storage; nt kettakastist välja jagatud LUN või iSCSI target) kasutada erinevaid teid (ingl. k. path) mööda. Tavaliselt on sel juhul salvestusressurss arvuti külge ühendatud FC või iSCSI transpordi meedia abil.
Multipath plokkseade on operatsioonisüsteemi kõrgemate kihtide jaoks moodustatud loogiline seade, mille komponentideks on erinevad teed arvutist kettakastis asuva loogise plokkseadme ehk LUN'ini (Logical Unit).
Sõltuvalt multipath seadistusest võib multipath seadmel olla selliseid omadusi
- redundantsus - töötab vaatamata mõne arvuti ja salvestusressursi vahel oleva ühenduse riknemisele
- jõudlus - võimaldab kiiremat andmevahetust kui üksik arvuti ja salvestusressursi vaheline ühenduskanal
Multipath lahendus keskendub arvuti ja salvestusressursi vaheliste ühenduste redundantsuse tagamisele.
Multipath lahenduse juures töötavad koostöös neli komponenti
- salvestusressurssi arvutiga ühendava seadme draiver - nt FC ühenduse puhul QLogic kontrolleri (ehk HBA - host bus adapter) draiver qla2xxx
- tuuma dm_multipath moodul - tuuma device-mapperi, mis üldiselt võimaldab konstrueerida mitmekihilisi loogilisi plokkseadmeid (sh nt füüsilistest seadmetest erinevate omadustega loogilisi seadmeid), multipath komponent
- udev - dünaamiline plokkseadmete moodustamine, vastavalt toimuvatele sündmustele, nt arvuti ja salvestusressursi vahel ühenduse kadumine
- multipath tarkvara - võimaldab muudustada seadistusfaili alusel multpath plokkseadet ning juhib udev ja device mapperi tööd kontrollides multipath plokkseadet moodustavate seadmete kättesaadavust
Multipath tarkvara ülesandeks on ära tunda, et erinevaid teid mööda on arvutiga ühendatud üks ja sama salvestusressurss ning moodustada loogiline seade, tavaliselt on sellel seadmel nimi kujul, nime viimase komponendi väärtus on juhitav
/dev/mapper/pgdata
Lisaks multipath tarkvara jälgib ühenduste korrasolekut ning teeb vastavaid ümberlülitusi.
Multipath seadmete kasutamiseks on lisaks vaba tarkvara DM-Multipath lahendusele olemas ka kommertslahendusi, nt EMC PowerPath. Ühe või teise implementatsiooni eelistamine sõltub konkreetselt kasutusel olevast riistavarast, operatsioonisüsteemist ja eelkõige nõuetest lahendusele.
Multipath lahenduse kirjelduse näide
Et käesolev tekst hoida terviklikumana ja mitte liialt valguda üldistustesse, esitamne konkreetse multipath lahenduse kirjelduse, millele toetutakse ka järgmistes punktides.
Kasutada olev riistvara
- üks EMC CLARiiON CX3 kettakast
- üks CISCO MDS9505 FC lüliti
- igas arvutis üks QLogic QLA2432 kahe pordine FC kontroller
Multipath lahenduse omadused
- arvutis võib rikneda kuni üks FC kontrolleri port
- rikneda võib kuni üks kaabel arvuti ja FC lüliti vahel
- rikneda võib kuni üks kaabel lüliti ja kettakasti vahel
- rikneda võib kuni üks FC port kettakastil
- hooldustööde ajal saab LUN'isid kolida ühe SP (service processor) juurest teise juurde
- normaalses olekus kasutab arvuti andmevahetuseks mõlemat FC kontrollerit
Multipath juures võib põhimõtteliselt kasutada igasuguseid SCSI protokolli kasutavaid seadmeid, sh lokaalseid seadmeid. Reeglina pakuvad aga praktilist huvi sellised juhtumid, kus arvuti ja salvestusressursi vahel on tõepoolest mitu erinevat füüsilist teed. Levinud on nt selline skeem, kus on FC meedia abil ühendatud FC lülitiga (ingl. k. switch) omavahel üks kettakast ja mitu arvutit, kusjuures kõik ühendused arvutitest ja kettakastist lülitini on füüsiliselt dubleeritud
_____________ | Kettakast | |_____________| SPA || SPB || ___||_______________________ | | | FC lüliti | |____________________________| || || || || || || || || || FC port 1 || FC port 2 || || /dev/sda || /dev/sdc || ..... arvuti n /dev/sdb || /dev/sdd || _||_ || arvuti 1 | | || |____| || || _||_ | | arvuti 2 |____|
Skeemil esitatud asjakorralduse puhul näeb iga arvuti nelja SCSI seadet seetõttu, et arvutist salvestusressursini on neli võimalikku ühendusteed.
Samaväärne on rääkida kas mõne tee (ingl. k. path) riknemisest või multipath seadmele vastava komponendi (nt sda antud juhul) riknemisest.
Arvuti FC kontrolleri draiveri kasutamine
FC kontrolleri tarkvara jagatakse tavaliselt mitmel moel, kusjuures ta võib esineda nö kahe komponendiliselt, draiver ning firmware
- distributsiooni paketihalduses
- tootja kodulehel
- draiver kopeerib firmware FC kontrollerilt
Debian GNU/Linux puhul soovitatakse QLogic FC kontrolleri jaoks kasutada non-free repositooriumist paketti firmware-qlogic
# apt-get install firmware-qlogic
Tulemusena peab peale arvuti järgmist alglaadimist olema näha FC ressurssidele vastavad SCSI seadmed, nt /dev/sda, /dev/sdb, /dev/sdc ja /dev/sdd eeldusel, et arvuti lokaalne kõvaketas on mingi muu nimega SCSI seade, nt /dev/cciss/c0d0, dmesgi ilmuvad teated kahe FC kontrolleri kohta
Üks kontroller
qla2xxx 0000:49:00.0: Found an ISP2432, irq 57, iobase 0xffffc20007972000 qla2xxx 0000:49:00.0: Configuring PCI space... PCI: Setting latency timer of device 0000:49:00.0 to 64 qla2xxx 0000:49:00.0: Configure NVRAM parameters... qla2xxx 0000:49:00.0: Verifying loaded RISC code... firmware: requesting ql2400_fw.bin qla2xxx 0000:49:00.0: Allocated (64 KB) for EFT... qla2xxx 0000:49:00.0: Allocated (1413 KB) for firmware dump... scsi0 : qla2xxx qla2xxx 0000:49:00.0: QLogic Fibre Channel HBA Driver: 8.02.01-k4 QLogic HPAE312A - ISP2432: PCIe (2.5GT/s x4) @ 0000:49:00.0 hdma+, host#=0, fw=4.04.00 [IP] [84XX] ... qla2xxx 0000:49:00.0: LIP reset occured (f7f7). qla2xxx 0000:49:00.0: LOOP UP detected (4 Gbps). scsi 0:0:0:0: Direct-Access DGC RAID 5 0326 PQ: 0 ANSI: 4 scsi 0:0:1:0: Direct-Access DGC RAID 5 0326 PQ: 0 ANSI: 4 .. sd 0:0:0:0: [sda] READ CAPACITY failed sd 0:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK sd 0:0:0:0: [sda] Sense Key : Illegal Request [current] sd 0:0:0:0: [sda] Add. Sense: Logical unit not supported sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled sd 0:0:0:0: [sda] Asking for cache data failed sd 0:0:0:0: [sda] Assuming drive cache: write through sd 0:0:0:0: [sda] Attached SCSI disk sd 0:0:1:0: [sdb] READ CAPACITY failed sd 0:0:1:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK sd 0:0:1:0: [sdb] Sense Key : Illegal Request [current] sd 0:0:1:0: [sdb] Add. Sense: Logical unit not supported sd 0:0:1:0: [sdb] Test WP failed, assume Write Enabled sd 0:0:1:0: [sdb] Asking for cache data failed sd 0:0:1:0: [sdb] Assuming drive cache: write through sd 0:0:1:0: [sdb] Attached SCSI disk
Teine kontroller
qla2xxx 0000:49:00.1: Found an ISP2432, irq 54, iobase 0xffffc20007974000 qla2xxx 0000:49:00.1: Configuring PCI space... PCI: Setting latency timer of device 0000:49:00.1 to 64 qla2xxx 0000:49:00.1: Configure NVRAM parameters... qla2xxx 0000:49:00.1: Verifying loaded RISC code... qla2xxx 0000:49:00.1: Allocated (64 KB) for EFT... qla2xxx 0000:49:00.1: Allocated (1413 KB) for firmware dump... scsi1 : qla2xxx qla2xxx 0000:49:00.1: QLogic Fibre Channel HBA Driver: 8.02.01-k4 QLogic HPAE312A - ISP2432: PCIe (2.5GT/s x4) @ 0000:49:00.1 hdma+, host#=1, fw=4.04.00 [IP] [84XX] .. qla2xxx 0000:49:00.1: LIP reset occured (f7f7). qla2xxx 0000:49:00.1: LOOP UP detected (4 Gbps). scsi 1:0:0:0: Direct-Access DGC RAID 5 0326 PQ: 0 ANSI: 4 scsi 1:0:1:0: Direct-Access DGC RAID 5 0326 PQ: 0 ANSI: 4 .. sd 1:0:0:0: [sdc] READ CAPACITY failed sd 1:0:0:0: [sdc] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK sd 1:0:0:0: [sdc] Sense Key : Illegal Request [current] sd 1:0:0:0: [sdc] Add. Sense: Logical unit not supported sd 1:0:0:0: [sdc] Test WP failed, assume Write Enabled sd 1:0:0:0: [sdc] Asking for cache data failed sd 1:0:0:0: [sdc] Assuming drive cache: write through sd 1:0:0:0: [sdc] Attached SCSI disk sd 1:0:1:0: [sdd] READ CAPACITY failed sd 1:0:1:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK sd 1:0:1:0: [sdd] Sense Key : Illegal Request [current] sd 1:0:1:0: [sdd] Add. Sense: Logical unit not supported sd 1:0:1:0: [sdd] Test WP failed, assume Write Enabled sd 1:0:1:0: [sdd] Asking for cache data failed sd 1:0:1:0: [sdd] Assuming drive cache: write through sd 1:0:1:0: [sdd] Attached SCSI disk
Väljundist võiks panna tähele järgmisi asjaolusid
- firmware: requesting ql2400_fw.bin - firmware laaditakse failisüsteemist, mitte kontrolleri flash'ilt; vastasel korral esineks teade
qla2xxx 0000:49:00.0: Firmware image unavailable. qla2xxx 0000:49:00.0: Firmware images can be retrieved from: ftp://ftp.qlogic.com/outgoing/linux/firmware/. qla2xxx 0000:49:00.0: Attempting to load (potentially outdated) firmware from flash.
- LOOP UP detected (4 Gbps) - kasutatakse 4Gbps fiibriühendust
- üle FC on kättesaadavad neli SCSI plokkseadet: /dev/sda, /dev/sdb, /dev/sdc ja /dev/sdd
Lisaks, toodud andmed klapivad ilusti lspci väljundiga, nt langevad kokku FC kontrollerite PCI identifikaatorid
49:00.0 Fibre Channel: QLogic Corp. ISP2432-based 4Gb Fibre Channel to PCI Express HBA (rev 03) 49:00.1 Fibre Channel: QLogic Corp. ISP2432-based 4Gb Fibre Channel to PCI Express HBA (rev 03)
Multipath tarkvara paigaldamine
Kaasaegsed Linuxi distributsioonide sh Debian GNU/Linux paketihalduses sisaldub multipathing jaoks vajalik multipath tarkvara ja kui ei ole selget põhjust talitada muud moodi, tuleks eelistada seda. Debian GNU/Linux puhul tuleb paigaldada paketti multipath-tools öeldes (Etch ehk v 4.0 puhul on multipath tarkvara versioon 0.4.7, Lenny ehk v. 5.0 puhul 0.4.8)
# apt-get install multipath-tools
Lisaks kasutatakse automaatselt tuuma moodulit dm_multipath.
Paketi koosseisu kuuluvad
- dokumentatsioon ja seadistusnäited
/usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz /usr/share/doc/multipath-tools/examples/multipath.conf.synthetic
- multipathd deemon - /sbin/multipathd
- multipath seadmete seadistamise utiliit - /sbin/multipath
- käivitusskript - /etc/init.d/multipath-tools
Multipath seadmete moodustamine
Multipath tarkvara tööd kontrollib seadistusfail /etc/multipath.conf, milles on määratletud sektsioonides
- defaults - multipath seadmete üldised omadused
- blacklist - milliseid SCSI seadmeid ei kasutata multipath seadmete moodustamisel
- multipaths - konkreetsete multipath seadmete kirjeldused
- devices - salvestusressursside kirjeldused, nt fiibrivõrgus asuvad erinevate tootjate kettakastid
Multipath töötab mõnel juhul ka ilma seadistusfailita põhjusel, et tarkvarasse on nö hardcode'itud populaarsete kettakastide mõistlikud vaikeväärtused, kuid reeglina võiks siiski seadistusfailis kasutusel olevad väärtused ilmutatud kujul esitada ja vajadusel asjaolusid täpsustada. Üle seadistada ilmselt ei ole ka tarvis.
- Multipath seadet moodustavate komponentide SCSI unikaalne identifikaatori saab teha kindlaks selliselt ja seda scsi-id väärtust kasutatakse seadistusfailis wwid parameetrina, kusjuures kõigi plokkseadete scsi-id väärtus on sama kuna need plokkseadmed vastavad sama füüsilise salvestusressursi juurde viivatele erinevatele teedele
# /lib/udev/scsi_id -g -u -s /block/sda 3600601602cc01d008a360bdb7d14de11 # /lib/udev/scsi_id -g -u -s /block/sdb 3600601602cc01d008a360bdb7d14de11 # /lib/udev/scsi_id -g -u -s /block/sdc 3600601602cc01d008a360bdb7d14de11 # /lib/udev/scsi_id -g -u -s /block/sdd 3600601602cc01d008a360bdb7d14de11
- Kasutatava kettakasti mudelit teades saab kirjeldada sobiva device'i devices sektsiooni, mis võib olla parem kui nö generic väärtusi kasutav juhtum
- Lähtudes lahendusele esitatavatest nõuetest saab valida muu seas sobiva nime tekkivale multipath seadmele, parameeter alias
Näiteks võiks ülalkirjeldatud riistvara puhul kasutada sellise sisuga seadistusfaili
defaults { udev_dir /dev polling_interval 5 default_selector "round-robin 0" 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 3600601602cc01d008a360bdb7d14de11 alias pgdata } } devices { device { vendor "DGC" product "*" path_grouping_policy group_by_prio getuid_callout "/lib/udev/scsi_id -g -u -s /block/%n" prio_callout "/sbin/mpath_prio_emc /dev/%n" hardware_handler "1 emc" features "1 queue_if_no_path" no_path_retry 300 path_checker emc_clariion failback immediate } }
Kommentaarid seadistusfailile
- Seadistusfailis esineb neli sektsiooni: default, blacklist, multipaths ja devices
- multipaths all kirjeldatakse süsteemile kättesaadavad multipath seadmed
- devices all kirjeldatakse süsteemile kättesaadavad salvestusressurssid, nt kui sama fiibri küljes on erinevate tootjate kettakastid
- antud juhul on kirjeldatud ühele salvestusressursi tüübile vastav device
- antud juhul on kirjeldatud üks multipath seade pgdata, millele vastab plokkseade nimega /dev/mapper/pgdata
Selleks, et seadistusfaili põhjal moodustada multipath seade, tuleb öelda multipath seadmete seadistamise utiliidi multipath abil öelda
# multipath -v2 create: pgdata (3600601602cc01d008a360bdb7d14de11) DGC ,RAID 5 [size=250G][features=1 queue_if_no_path][hwhandler=1 emc] \_ round-robin 0 [prio=2][undef] \_ 0:0:1:0 sdb 8:16 [undef][ready] \_ 1:0:1:0 sdd 8:48 [undef][ready] \_ round-robin 0 [prio=0][undef] \_ 0:0:0:0 sda 8:0 [undef][ready] \_ 1:0:0:0 sdc 8:32 [undef][ready] libdevmapper: libdm-common.c(312): Created /dev/mapper/pgdata
Kui käsk õnnestus, siis antud juhul peaks olema ilmunud seade nimega /dev/mapper/pgdata
# fdisk /dev/mapper/pgdata -l Disk /dev/mapper/pgdata: 268.4 GB, 268435456000 bytes 255 heads, 63 sectors/track, 32635 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Disk /dev/mapper/pgdata doesn't contain a valid partition table
multipath programmiga saab muu hulgas küsida millised seadmed on parasjagu aktiivsed
- -l argumendi kasutamisel kasutatakse esitatakse tulemus sysfs ja device mapper käest saadud info põhjal, on vähem-informatiivsem
# multipath -l pgdata (3600601602cc01d008a360bdb7d14de11) dm-6 DGC ,RAID 5 [size=250G][features=1 queue_if_no_path][hwhandler=1 emc] \_ round-robin 0 [prio=0][active] \_ 0:0:1:0 sdb 8:16 [active][undef] \_ 1:0:1:0 sdd 8:48 [active][undef] \_ round-robin 0 [prio=0][enabled] \_ 0:0:0:0 sda 8:0 [active][undef] \_ 1:0:0:0 sdc 8:32 [active][undef]
- -ll argumendi kasutamisel kasutatakse esitatakse tulemus kõigi olemasolevate allikate käest saadud info põhjal, on informatiivsem
# multipath -ll pgdata (3600601602cc01d008a360bdb7d14de11) dm-6 DGC ,RAID 5 [size=250G][features=1 queue_if_no_path][hwhandler=1 emc] \_ round-robin 0 [prio=2][active] \_ 1:0:1:0 sdb 8:16 [active][ready] \_ 0:0:1:0 sdd 8:48 [active][ready] \_ round-robin 0 [prio=0][enabled] \_ 1:0:0:0 sda 8:0 [active][ready] \_ 0:0:0:0 sdc 8:32 [active][ready]
Multipath seadme omadusi saab küsida ka dmsetup programmi abil, kus seadme minor väärtus 6 esineb ka seadme nimes, dm-6
# dmsetup status -v pgdata Name: pgdata State: ACTIVE Read Ahead: 256 Tables present: LIVE Open count: 0 Event number: 0 Major, minor: 254, 6 Number of targets: 1 UUID: mpath-3600601602cc01d008a360bdb7d14de11 0 524288000 multipath 2 0 1 0 2 1 A 0 2 0 8:16 A 0 8:48 A 0 E 0 2 0 8:0 A 0 8:32 A 0
Multipath seadme eemaldamiseks sobib öelda
# multipath -v2 -F libdevmapper: libdm-common.c(374): Removed /dev/mapper/pgdata
Probleemide korral on abiks uurida käsu väljundit
# multipath -v3 -d
Multipathd deemoni kasutamine
Seadistusfaili testimiseks on hea multipath seadme moodustamiseks kasutada vahetult utiliiti multipath. Kuid multipath seadme kasutamisel on oluline, et süsteem automaatselt avastaks, kui mõni multipath seadmeni viiv tee on läinud kakti või on uuesti saanud korda ning automaatselt kohendatataks multipath seadet vastavaks kujunenud olukorrale.
Multipathd deemoni ülesanne on jälgida multipath seadmetega seotud teede olekut ning reageerida sündmustele. Kui selline sündmus aset leiab, kasutab multipathd välist multipath utiliiti vajaliku muudatuse tegemiseks.
Multipath deemoni käivitamist ja seiskamist sobib juhtida skriptiga, tavaliselt käivitatakse see süsteemi alglaadimisel
# /etc/init.d/multipath-tools start|stop
multipathd programmi saab lisaks kasutada töötava multipathd deemoni kontrollimiseks, interaktiivsesse rezhiimi sattumiseks peab deemon töötama ning lisaks tuleb käivitada multipathd võtmega -k
# multipathd -k # multipathd>
Väljumiseks tuleb öelda Ctrl+D
- Esitada teede nimekiri
# multipathd> show paths hcil dev dev_t pri dm_st chk_st next_check 0:0:0:0 sda 8:0 0 [active][ready] XXXXXXX... 14/20 0:0:1:0 sdb 8:16 1 [active][ready] XXXXX..... 10/20 1:0:0:0 sdc 8:32 0 [active][ready] XXXXXX.... 13/20 1:0:1:0 sdd 8:48 1 [active][ready] XXXXX..... 10/20
- märkida tee sda katkiseks
# multipathd> fail path sda ok multipathd> show paths hcil dev dev_t pri dm_st chk_st next_check 0:0:0:0 sda 8:0 0 [failed][ready] XXXXXXXXXX 5/5 0:0:1:0 sdb 8:16 1 [active][ready] XXXXX..... 11/20 1:0:0:0 sdc 8:32 0 [active][ready] XXXXXXX... 14/20 1:0:1:0 sdd 8:48 1 [active][ready] XXXXX..... 11/20
- vaadata kehtivat konfiguratsiooni
multipathd> show config
Multipath seadmete kasutamine
Üldiselt soovitatakse multipath seadmetele moodustada LVM kusjuures on abiks kirjeldada LVM seadistusfailis sobiv filter, et mitte saada veateateid /dev/sda, /dev/sdb, /dev/sdc ja /dev/sdd kohta, nt
filter = [ "r/disk/", "r/sd.*/", "a/.*/" ]
LVM moodustamine toimub iseensest tavalisel moel, nt
# pvcreate /dev/mapper/pgdata # vgcreate pgdata /dev/mapper/pgdata # lvcreate -L 160G -n pgdata pgdata
Multipath seadmete ümberseadistamine
Selleks, et multipath seadme seadistusi muuta, sobib tegutseda sellises järjekorras
- lõpetada seadme kasutamine, nt ühendada lahti failisüsteem
# umount /dev/pgdata/pgdata
- märkida vastav LVM grupp mitteaktiivseks, sellised io teated on normaalsed kui /dev/sda ja /dev/sdc ei ole parasjagu aktiivses kasutuses ja /etc/lvm/lvm.conf filter parameeter on korrastamata
# vgchange -a n pgdata /dev/sda: read failed after 0 of 4096 at 0: Input/output error /dev/sdc: read failed after 0 of 4096 at 0: Input/output error /dev/sdc: read failed after 0 of 4096 at 268435390464: Input/output error /dev/sdc: read failed after 0 of 4096 at 0: Input/output error 0 logical volume(s) in volume group "pgdata" now active
- seisata multipathd deemon
# /etc/init.d/multipath-tools stop Stopping multipath daemon: multipathd.
- eemaldada kõik olemasolevad multipath seadmed
# multipath -F libdevmapper: libdm-common.c(374): Removed /dev/mapper/pgdata
või konkreetne seade
# multipath -f multpathressursinimi
- muuta seadistusfaili /etc/multipath.conf
- multipath seadmete tekitamiseks käivitada multipathd deemon
# /etc/init.d/multipath-tools start
- lülitame LVM grupi aktiivseks
# vgchange -a y pgdata /dev/sda: read failed after 0 of 4096 at 0: Input/output error /dev/sdc: read failed after 0 of 4096 at 0: Input/output error 1 logical volume(s) in volume group "pgdata" now active
- ühendada failisüsteemid külge ja jätkata failisüsteemide kasutamist
Multipath lahenduse testimine
- dd & iostat - näiteks võiks ülaltoodud riistvara ja seadistuste kasutamisele vastata selline io väljund dd abil andmete kopeerimisele, kust on näha, et kasutatakse mõlemat FC porti paralleelselt, dm-6 on multipath seade ise ning dm-7 multipath seadmele moodustatud LVM voluum
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn .. sda 0.00 0.00 0.00 0 0 sdb 89.50 0.00 39.79 0 159 dm-6 21353.00 0.00 83.41 0 333 dm-7 21348.50 0.00 83.39 0 333 sdc 0.00 0.00 0.00 0 0 sdd 90.50 0.00 39.71 0 158
Edasi võiks multipathd -k abil määrata teid riknenuks ja jälgida, et salvestusressurss on jätkuvalt nii nagu tarvis kasutatav.
- FC kaablite ükshaaval lahtiühendamine või samaväärne tegevust nt FC lülitis vastavate portide olekute muutmiseks
- kettakastis LUN'ide liigutamine teine SP (service processor) külge
Logi
Reegline tekib multipath seadet kasutava arvuti bootimisel dmesg logisse rikkalikult sarnaseid teateid, mis iseenesest ei viita veasituatsioonile
sd 1:0:0:0: [sda] Device not ready: Sense Key : Not Ready [current] sd 1:0:0:0: [sda] Device not ready: Add. Sense: Logical unit not ready, manual intervention required end_request: I/O error, dev sda, sector 0 Buffer I/O error on device sda, logical block 0 ...
Juurfailisüsteemi kasutamine multipath seadmelt
Juurfailisüsteemi kasutamine multipath seadmelt võimaldab nt paindlikumalt migreerida operatsioonisüsteemi teisele riistavarale.
Kuigi juurfailisüsteem asub multipath seadmel, asub antud juhtumil arvuti lokaalsel kõvakettal kataloog /boot, milles on bootloader sh bootloaderi seadistusfail (nt GRUB puhul /boot/grub/grub.lst), operatsioonisüsteemi tuum ja ramdisk.
Juurfailisüsteemi multipath seadmelt kasutava arvuti alglaadimisel toimuvad sündmused sellises järjekorras
- arvuti lokaalselt kõvakettalt laaditakse bootloader
- bootloader laadib tuuma
- ajutiselt ühendatakse külge juurfailisüsteem ramdiskilt
- laaditakse ramdiskil olevad FC kontrolleri draiver ning muu multipath'i kasutamiseks vajalik tarkvara
- ühendakse külge juurfailisüsteem multipath seadmelt
Selliselt töötava süsteemi ettevalmistamiseks tuleb sooritada nt sellised sammud
- ühendada mõnele multipathiga töötavale arvutile külge ettevalmistatava ja multipath seadmelt bootima hakkava arvuti juurfailisüsteem
- kopeerida ettevalmistatava arvuti juurfailisüsteemi operatsioonisüsteem
- öelda
# mount -t proc /proc /mnt/proc # chroot /mnt
Paketi multipath-tools-boot paigaldamise käigus moodustatakse uus ramdisk
# apt-get install multipath-tools-boot
- redigeerida lokaalse ettevalmistatava arvuti bootloaderi seadistusfail /boot/grub/menu.lst sobivaks
Debian Etch kasutamise iseärasused
Kui Debian Etch puhul seletamatutel põhjustel ei ole multipath abil LUN paista, siis on tõenäoliselt abi sellise paiga http://kuutorvaja.eenet.ee/mw-1.9.3/images/4/44/Get_class_devices.patch rakendamisest
--- sysfsutils-2.1.0old/lib/sysfs_class.c 2006-08-07 08:08:01.000000000 +0300 +++ sysfsutils-2.1.0/lib/sysfs_class.c 2008-10-08 19:24:12.000000000 +0300 @@ -65,8 +65,7 @@ if (!a || !b) return 0; - if (strncmp((char *)a, ((struct sysfs_class_device *)b)->name, - strlen((char *)a)) == 0) + if (strcmp((char *)a, ((struct sysfs_class_device *)b)->name) == 0) return 1; return 0;
Rakendamine toimub sellise järgnevusena
- paigaldame libsysfs2 paketi kompileerimiseks vajalikud vahendid ning kopeerime paketi lähteteksti
# cd /usr/src # apt-get build-dep libsysfs2 # apt-get source libsysfs2
- kopeerime paiga lähteteksti juurde
# cp get_class_devices.patch sysfsutils-2.1.0/debian/patches
- kompileerime paketi
# dpkg-buildpackage -uc
- paigaldame paketi libsysfs2_2.1.0-5_amd64.deb
# dpkg -i libsysfs2_2.1.0-5_amd64.deb
Debian Squeeze kasutamise iseärasused
Debian Squeeze puhul tuleb kasutada scsi_id programmi muutunud parameetritega, nt
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
Multipath kasutamine iSCSI seadmete nimede fikseerimiseks
Tegu ei ole sisulise multipathinguga, multipath tarkvara kasutatakse lihtsalt plokkseadmete nimede fikseerimiseks.
Üle iSCSI külge ühendatud plokkseadmete nimed esinevad tavaliselt kujul /dev/sda, /dev/sdb jne kusjuures järjekord sõltub iSCSI ressursi külge ühendamise järjekorrast. Tundub, et sellise sisuga /etc/multipath.conf faili kasutamine sobib iSCSI abil külge ühendatud plokkseadmete nimede fikseerimiseks
defaults { udev_dir /dev polling_interval 60 default_selector "round-robin 0" 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 149455400000000000000000001000000228c50000d000000 alias shared1 } multipath { wwid 14945540000000000000000000200000049a529000d000000 alias shared2 } } devices { device { vendor "IET" product "*" path_grouping_policy failover getuid_callout "/lib/udev/scsi_id -g -u -s /block/%n" no_path_retry 300 path_checker readsector0 failback immediate } }
kus
- iSCSI seadmetel on reeglina vendori nimeks IET
- wwid väärtuse saab küsida sarnaselt, /lib/udev/scsi_id -g -u -s /block/sda
Multipath tarkvara kasutamine toimub eelpool kirjeldatud viisil, tulemusena tekivad sellised seadmed /dev/mapper/shared1 ja /dev/mapper/shared2
# multipath -ll shared2 (14945540000000000000000000200000049a529000d000000) dm-14 IET ,VIRTUAL-DISK [size=8.0G][features=1 queue_if_no_path][hwhandler=0] \_ round-robin 0 [prio=1][active] \_ 30:0:0:0 sda 8:0 [active][ready] shared1 (149455400000000000000000001000000228c50000d000000) dm-15 IET ,VIRTUAL-DISK [size=6.0G][features=1 queue_if_no_path][hwhandler=0] \_ round-robin 0 [prio=1][active] \_ 31:0:0:0 sdb 8:16 [active][ready]
SCSI seadmetega töötamine
NB! Käesoleva punkti sisu on testimata. SCSI seadmete eemaldamiseks sobib öelda
# echo 1 > /sys/block/seadmenimi/device/delete
SCSI seadmete re-skaneerimiseks sobib kasutada
/sys/class/scsi_host/hostN/scan
Lisaks on scsitools paketis skript rescan-scsi-bus.sh.
Märkused
- Põhimõtteliselt saab suvalist SCSI seadet kasutada multipath seadme moodustamiseks, aga praktiliselt ei ole sellel suurt mõtet kui välja jätta kastsetamise väärtus. Nt lokaalse ketta scsi-id väärtuse küsimine toimub nii
# /lib/udev/scsi_id -g -u -s /block/cciss/c0d0 3600508b1001050395357553155410002
- FC puhul on tavaline, et iostat ei näita midagi kuigi protsess kirjutab ägedalt; ja vastupidi, protsess ei kirjuta ning ometi on suur IO. Põhjuseks on tüüpiliselt FC kontrolleritel kasutatavad mitmesaja MBait suurused cache'id.
TODO
- Kettakasti seadistamine
- FC lüliti seadistamine
- Edasiarenenud kettakasti võimaluste kasutamine, snapshot, kloon
Hitachi DF600F kettakasti ja QLogic ISP2532 FC kontrolleri kasutamine
Hitachi DF600F kettakasti ja QLogic ISP2532 FC kontrolleri kasutamiseks sobivad Debian Lenny AMD64 paketihalduse vahendid
# apt-get install multipath-tools firmware-qlogic
Vaikimisi st ilma /etc/multipath.conf faili ettevalmistamata peaks paistama sarnane tulemus
# multipath # multipath -ll 360060e80102d1dc00511c56400000003dm-0 HITACHI ,DF600F [size=100G][features=1 queue_if_no_path][hwhandler=0] \_ round-robin 0 [prio=1][active] \_ 1:0:0:0 sda 8:0 [active][ready] \_ round-robin 0 [prio=0][enabled] \_ 2:0:0:0 sdb 8:16 [active][ready]
Näiteks selline ilmutatud kujul esitatud seadistusfail võiks töötada
defaults { udev_dir /dev polling_interval 5 default_selector "round-robin 0" 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 360060e80102d1dc00511c56400000003 alias test } } devices { device { vendor "HITACHI" product "DF.*" getuid_callout "/lib/udev/scsi_id -g -u -s /block/%n" prio_callout "/sbin/mpath_prio_hds_modular /dev/%n" path_grouping_policy multibus path_checker tur features "1 queue_if_no_path" failback immediate } }
iSCSI multipath üle mitme interface samas subnetis
Võib juhtuda, et me tahame ühendada iSCSI multipathi jaoks üle mitme võrgukaardi mis asuvad samas subnetis, ehk meil pole võimalusi vlane teha. Selleks tuleb võrgukaardid eraldi ära defineerida
# iscsiadm -m iface -I eth3 -o new New interface eth3 added # iscsiadm -m iface -I eth2 -o new New interface eth2 added
Võtame ketta külge
# iscsiadm -m discovery -t sendtargets -l eth3 -p 10.0.0.3 # iscsiadm -m node -T iqn.2000-01.com.synology:proxmox -l eth3 -p 10.0.0.3:3260 -l
Info pannakse kirja failidena nt /etc/iscsi/ifaces/eth3
Võrgukaardi seadistust saab vaadata käsuga
# iscsiadm -m iface -I IFACE_NAME # BEGIN RECORD 2.0-873 iface.iscsi_ifacename = cxgb4i.00:07:43:28:b2:58 iface.net_ifacename = <empty> iface.ipaddress = 102.50.50.80 iface.hwaddress = 00:07:43:28:b2:58 iface.transport_name = cxgb4i iface.initiatorname = <empty> # END RECORD
Seadistuste muutmiseks on käsk (paljude parameetrite muutmine ei pruugi tarkvaralise iscsi tarkvaralise iscsi kliendiga toimida)
# iscsiadm -m iface-I IFACE_NAME--op=update -n iface.SETTING -v VALUE
Kasulikud lisamaterjalid
- http://christophe.varoqui.free.fr/
- https://www.redhat.com/docs/manuals/csgfs/browse/4.6/DM_Multipath/index.html
- https://powerlink.emc.com/ - EMC registreeritud kasutajatele, tekst 'Native Multipath Failover Based on DM-MPIO for v2.6.x Linux Kernel and EMC® Storage Arrays'
- http://blog.core-it.com.au/?p=80
- http://blog.thilelli.net/post/2009/02/09/Comparison:-EMC-PowerPath-vs-GNU/Linux-dm-multipath
- http://www.tchetch.net/wiki/debian/multipath_ibm_ds4000
- http://kuutorvaja.eenet.ee/wiki/FAI_kasutamine_Debianiga#Multipath_kasutamine_FAI_kliendi_juurfailis.C3.BCsteemina
- http://www.hp.com/go/devicemapper