Multipath puust ja punaseks

Allikas: Kuutõrvaja

Ilmselt on allpool toodud skeemi alusel ühendamine kõige lollikindlam. Nii võib meil rikneda nii üks switch, storage kontroller kui ka võrgukaart ilma, et kaotaksime ühenduse storagega.

Iscsipath.png

Tekitame storagesse ühe 20 terabaidi suuruse ketta nimega disk1 ja haagime selle kaks korda üle erinevate võrgukaartide, switchide ja kummagi storage kontrolleri arvutile külge. Teoreetiliselt saaks ühte storage jaotist ülaloleva skeemi alusel isegi neli korda sama arvuti külge ühendada aga praktikas pole sellel enam erilist mõtet. Oleme juba isegi välistanud kõigi ahelas paikevate füüsiliste seadmete rikked.

Ühendame ketta üle esimese võrgukaardi

# iscsiadm -m node -T katsetaja.eenet.ee:storage.disk1 -p 192.168.1.20:3260 -l

Ja üle teise võrgukaardi

# iscsiadm -m node -T katsetaja.eenet.ee:storage.disk1 -p 192.168.2.21:3260 -l

Selleks, et teenuse käivitamisel ja/või arvuti taaskäivitamisel kettad uuesti automaatselt külge võetaks, tuleb pärast ühendust kirjutada. Loomulikult vastavalt kõigi ühendatud ketaste jaoks.

# iscsiadm -m node -T katsetaja.eenet.ee:storage.disk1 -p 192.168.2.20:3260 --op update -n node.startup -v automatic


Dmesg kinnitab, et oleme võtnud tõepoolest kahelt IP aadressilt ühe ja sama iSCSI jaotise kaks korda arvutile külge

[ 7141.803287] sd 29:0:0:10: [sdab] 42949672960 512-byte logical blocks: (21.9 TB/20.0 TiB)
[11607.430171] sd 31:0:0:10: [sdac] 42949672960 512-byte logical blocks: (21.9 TB/20.0 TiB)

Nüüd läheb meil vaja multipath-tools nimelist paketti. Selle instaliks Debianis:

# apt-get install multipath-tools

Gentoos

# emerge multipath-tools

multipath -ll käsk annab meile infot kõigi ketaste kohta

3600143801259c4710000800002b20000 dm-26 HP,HSV360
size=20T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
|`- 29:0:0:10 sdab 65:176 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 31:0:0:10 sdac 65:192 active ready running

Lisaks muule infole võib näha, et multipath on meie äsja lisatud kaks ketast sarnase WWID (The World Wide Identifier) numbri tõttu paariks 3600143801259c4710000800002b20000 kokku liigitanud. WWID numbrit saab üldiselt vaadata käsurealt ka spetsiaalse utiliidiga näiteks:

/lib/udev/scsi_id -g -u -d /dev/sdab
3600143801259c4710000800002b20000

Selle mõlemale kettale ühise WWID numbri kirjutame järgnevalt blacklist expectionisse kui multipathi ülaloleva ID. Ülejäänud masinas leiduda võivad wwid ehk kettad keelame igaksjuhuks ära.

# mõned vaikeseadistused, neid pole vaja üldiselt muuta.
defaults {
        polling_interval        2
        path_selector           "round-robin 0"
        path_grouping_policy    multibus
        uid_attribute           "ID_SERIAL"
        rr_min_io               100
        failback                immediate
        no_path_retry           queue
}
# paneme absoluutselt kõik WWIDd musta nimekirja
blacklist {
        wwid "^[*]"
}

# Teeme ühele WWIDle mida kasutama hakkame erandi
blacklist_exceptions {
        wwid "3600143801259c4710000800002b20000"
}

# defineerime WWID millega olevad kettad tuleb kokku üheks seadmeks liita (seesama millele enne erandi tegime). Aliase real määratu saab seadme nimeks.
multipaths {
  multipath {
        wwid "3600143801259c4710000800002b20000"
        alias multi0  
  }
}

Teeme multipathi deemonile restardi

# /etc/init.d/multipath-tools restart
Stopping multipath daemon: multipathd.
Starting multipath daemon: multipathd.

Nüüd ei tohiks multipth -ll enam näidata muid kettaid, peale eranditesse lisatud ketaste. PS! Väljund on ka teistsugusel kujul

# multipath -ll
multi0 (3600143801259c4710000800002b20000) dm-26 HP,HSV360
size=20T features='1 queue_if_no_path' hwhandler='0' wp=rw
 `-+- policy='round-robin 0' prio=0 status=active
   | 29:0:0:10 sdab 65:176 active ready running
   | 31:0:0:10 sdac 65:192 active ready running

Lisaks nagu näha on nimeks kenasti konfifailis defineeritud multi0

Anname käsu

# multipath -v3
Oct 15 15:10:47 | sdx: (IET:VIRTUAL-DISK) wwid blacklisted
Oct 15 15:10:47 | directio checker refcount 6
Oct 15 15:10:47 | sdy: (IET:VIRTUAL-DISK) wwid blacklisted
Oct 15 15:10:47 | directio checker refcount 5
Oct 15 15:10:47 | sdz: (IET:VIRTUAL-DISK) wwid blacklisted
Oct 15 15:10:47 | directio checker refcount 4
Oct 15 15:10:47 | sdaa: (IET:VIRTUAL-DISK) wwid blacklisted
Oct 15 15:10:47 | directio checker refcount 3
Oct 15 15:10:47 | sdab: (HP:HSV360) wwid whitelisted
Oct 15 15:10:47 | sdac: (HP:HSV360) wwid whitelisted

Siit on näha, et vaid sdab ja sdac on konfifaili alusel whitelistud ja kõigi teiste ketastega multipathil tegelemine keelatud

# ls /dev/mapper/
control  multi0

Kettale nt LVM viilaka saame tekitada käsuga:

# pvcreate /dev/mapper/multi0
  Physical volume "/dev/mapper/multi0" successfully created

NB! Kasutatavale iSCSI blokkseadmele võib olla failisüsteem tehtud enne multipathi juurutamist. Multipath ise ei kirjuta mingit täiendavat omapoolset infot enam lisaks.

detailse info saamiseks ühendatud iscsist

# iscsiadm -m session -P 3

Kõikide iscasi targetite korraga väljalogimine

# iscsiadm -m node -U all

Ükski blockseadmetest ei tohi olla eelnevalt mounditud, muidu teatab süsteem veaks:

kernel: device-mapper: ioctl: error adding target to table

Peenhäälestusest ja jõudluse suurendamisest

Vaikimisi nt nelja pathiga jagab multipath need active/passive ehk siis active ja enabled

multi0 (3600143801259c4710000800002b20000) dm-0 HP,HSV360
size=20T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 10:0:0:10 sdg 8:96  active ready running
| `- 9:0:0:10  sdf 8:80  active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 7:0:0:10  sdi 8:128 active ready running
  `- 8:0:0:10  sde 8:64  active ready running

Active/active jaoks kus kõiki teesid kasutatakse on multipath.confi võti

    prio            const

Seejärel olles multipath deemoni restartinud näeb järgnevat pilti

multi0 (3600143801259c4710000800002b20000) dm-0 HP,HSV360
size=20T features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 10:0:0:10 sdg 8:96  active ready running
  |- 7:0:0:10  sdi 8:128 active ready running
  |- 8:0:0:10  sde 8:64  active ready running
  `- 9:0:0:10  sdf 8:80  active ready running

Nüüd kirjutab round-robiniga üle kõigi nelja pathi

Rohkem ja põhjalikumat juttu leiab samast kuutõrvaja tekstist DM-Multipath