H´att´ert´ar Rendszerek M´er´esi Seg´edlet Informatikai technol´ogi´ak laborat´orium I. ¨ Ossze´ all´ıtotta: T´oth D´aniel M´er´estechnika ´es Inform´aci´os Rendszerek Tansz´ek 2009. m´arcius 25.
1.
H´ att´ ert´ ar alapok
1.1.
Gyakorlati elv´ ar´ asok
A h´ att´ert´ ar vagy m´ asodlagos t´ ar feladata a sz´am´ıt´og´epes rendszerekben a stabil adatt´ arol´as megval´os´ıt´asa. Az operat´ıv mem´ ori´ aval, azaz els˝ odleges t´ arral szemben a legfontosabb a nem felejt˝ o (non-volatile) tulajdons´ aga, vagyis a rendszer kikapcsol´asa ut´an is hossz´ u ideig meg˝orzi a rajta t´ arolt adatokat. Fontos jellemz˝ oje tov´abb´a a mem´ori´ ahoz k´epest alacsony fajlagos k¨ olts´ ege ´es a nagyobb kapacit´ asa. A h´ att´ert´ arakkal szemben t´ amasztott els˝ odleges funkcion´ alis k¨ ovetelm´ eny teh´at a nem felejt˝o adatt´arol´ as, ami r¨oviden annyit jelent, hogy a t´ arol´oba ´ırt adatot a k´es˝obbiekben pontosan vissza lehet olvasni. A gyakorlatban sz´amos ,,nemfunkcion´ alis” (m´ as sz´oval extrafunkcion´ alis, azaz az alapvet˝o funkcionalit´ason t´ uli) elv´ar´ast is t´ amasztunk a h´ att´ert´ arakkal szemben. P´eld´ aul: • Hozz´ af´ er´ esi id˝ o - mennyi id˝o telik el egy ´ır´ as vagy olvas´asi k´er´es kiad´asa ´es kiszolg´al´asa k¨oz¨ott. ´ • Atereszt˝ ok´ epess´ eg - adott id˝oegys´eg alatt olvashat´o illetve ´ırhat´ o adatmennyis´eg. • Fogyaszt´ as - az olvas´ as- ´es ´ır´ asm˝ uveletek illetve a t´etlen m˝ uk¨od´es energiaig´enye. H´ att´ ert´ arak meghib´ asod´ asa szigor´ uan v´eve azt jelenti, hogy nem k´epes kiszolg´alni olvas´as vagy ´ır´ asm˝ uveleteket, illetve az ´ırt adatokat nem k´epes pontosan visszaolvasni. Sokszor meghib´asod´ asr´ol besz´el¨ unk akkor is, ha a t´ arol´oeszk¨oz nemfunkcion´alis param´eterei olyan m´ert´ekben leromlanak (pl a m˝ uveletek nagyon lelassulnak), hogy az a rendszer¨ unk norm´alis m˝ uk¨od´es´et akad´alyozza. A gy´ art´ ok szok´ asosan megadj´ ak az eszk¨ oz¨ok v´arhat´o meghib´asod´ asi gyakoris´ ag´at, illetve tervezett ´elettartam´at. Fontos megjegyezni, hogy megadott meghib´asod´ asi param´etereket mindig a tervezett ´elettartamon (design lifetime) bel¨ ul kell ´erteni. Teh´at ha a gy´ art´ o a meghib´ asod´ asok k¨ oz¨ otti a ´tlagos id˝ ore (MTBF, Mean Time Between Failures) 1000000 u ¨ zem´or´at specifik´ al, akkor az nem jelenti azt, hogy egy eszk¨ oz v´arhat´oan 114 ´evig u ¨ zemk´epes lesz. A helyes ´ertelmez´es szerint az 5 ´eves tervezett ´elettartam lej´ arta el˝ ott v´arhat´oan 22 darabb´ol 1 fog meghib´asodni. A k¨onnyebb ´ertelmezhet˝ os´eg v´egett n´eh´any gy´ art´ o ´att´ert az MTBF-r˝ol az ´eves meghib´ asod´ asi gyakoris´ ag (annualized failure rate) megad´ as´ ara. A t´ arol´ oeszk¨oz¨ok k¨olts´ege ´ altal´ aban elt¨ orp¨ ul a rajtuk t´ arolt adat ´ert´ek´ehez k´epest, ez´ert k¨ ul¨on¨osen nagy probl´em´ at jelentenek az adatveszt´essel j´ar´o meghib´asod´ asok. Az adatveszt´esek kock´azat´at redund´ans t´ arak ki´ep´ıt´es´evel lehet m´ers´ekelni. Nagyv´allalati k¨ornyezetben sz´ amottev˝o k¨olts´eget jelent a h´ att´ ert´ arak karbantart´ asa. Ez nemcsak a meghib´asodott, illetve ´eletciklusuk v´eg´ere ´ert eszk¨ oz¨ok cser´ej´et jelenti. Az alkalmaz´asok n¨ ovekv˝o teljes´ıtm´eny ´es t´ arkapacit´ as ig´enyei miatt is gyakran sz¨ uks´eg van cser´ere, illetve b˝ ov´ıt´esre. A karbantart´as egyszer˝ us´ıt´es´ere jelentek meg a k¨ozpontos´ıtott t´ arrendszerek.
1
1.2.
Adatt´ arol´ o eszk¨ ozfajt´ ak ´ es tulajdons´ agaik
Merevlemez Manaps´ ag a legelterjedtebben alkalmazott t´ arol´oeszk¨ oz. Az adatokat m´agnesesen r¨ogz´ıti forg´ o lemezt´ any´erok fel¨ ulet´en. A lemez tartalm´at egy pozicion´alhat´o fejszerelv´eny olvassa ´es ´ırja. Alapvet˝oen mechanikus eszk¨ oz, ennek k¨ovetkezt´eben a v´eletlen hozz´ af´er´esi id˝ok k¨ozepesek, tipikusan 5-20 ms nagys´ agrend˝ uek, az ´atereszt˝ok´epess´eg is nagys´ agrendileg k¨ozepesen gyors, jellemz˝ oen 50-130 MB/s. A nagy sebess´eggel mozg´o alkatr´eszek, valamint a nagy adats˝ ur˝ us´eg miatt a fej ´es a t´ any´er k¨oz¨otti rendk´ıv¨ ul kis l´egr´es igen s´er¨ ul´ekenny´e teszi. K¨ uls˝ o er˝ohat´ asok, nagy gyorsul´ as (¨ utk¨ oz´es), magas (> 50 ℃) vagy ´eppen alacsony (< 20 ℃) h˝ om´ers´eklet, illetve a h˝ om´ers´eklet, l´egnyom´ as, p´ aratartalom gyors v´altoz´ asa mind adatveszt´essel j´ar´o u ¨ zemzavart okozhat. A merevlemezek jellemz˝ o param´eterei: lemezek ´atm´er˝oje (jellemz˝o v´altozatok: 3.5”, 2.5”, 1.8”), lemezt´any´erok fordulatsz´ama (jellemz˝o ´ert´ekek: 4200/min, 5400/min, 7200/min, 10000/min, 15000/min), lemezek sz´ ama (tipikusan 1-5), lemezenk´enti kapacit´ as (manaps´ag 80GB/lemezt˝ol 500GB/lemezig terjed) A hozz´ af´er´esi id˝ok alapvet˝oen k´et ¨osszetev˝ob˝ol ´allnak ¨ossze: fejmozgat´ asi id˝o ´es lemez al´afordul´ asi id˝o. A fejmozgat´ asi id˝o f¨ ugg att´ ol, hogy a v´eletlen el´er´esek mekkora t´ avols´agra t¨ ort´ennek, az al´ afordul´ asi id˝ok azonban 0 ´es egy teljes lemezfordulat ideje k¨oz¨ott v´eletlenszer˝ uen oszlik el. A gyors fejmozgat´ as nagyobb zajjal ´es energiafogyaszt´assal j´ar, tov´abb´a nagyobb teherb´ır´ as´ u mechanik´ at ig´enyel. Az ´ atlagos al´afordul´ asi id˝o csak a fordulatsz´am n¨ ovel´es´evel cs¨okkenthet˝o. A folyamatos szekvenci´alis ´ atereszt˝ok´epess´eg a lemezt´any´erok adats˝ ur˝ us´eg´et˝ol ´es fordulatsz´ am´ at´ol f¨ ugg. A lemezekre koncentrikus k¨or¨okben fel´ırt adats´avok ker¨ ulete f¨ ugg a k¨or sugar´ at´ol, ´ıgy az egyes adats´ avokon t´ arolhat´o adat mennyis´ege is v´altoz´ o. Mivel a lemez fordulatsz´ ama ´ alland´ o, ez´ert az ´ atereszt˝ok´epess´eg f¨ ugg att´ ol, hogy a fej ´eppen melyik adats´avot olvassa v´egig (kis ker¨ ulet˝ u adats´ avban egy fordulat alatt kevesebb adat halad el a fej alatt). Ennek a k¨ovetkezm´enye, hogy a line´aris ´ atereszt˝ok´epess´eg egy jellegzetes cs¨okken˝o g¨ orb´et mutat, amit figyelembe kell venni teljes´ıtm´enytervez´eskor. Optikai lemezek Sz´amos szabv´anyos ´es nem szabv´anyos optikai adatt´arol´o form´atum l´etezik, m´ara m´ar szinte teljesen egyeduralkod´ ov´ a v´altak a szabv´anyos, 12 illetve 8 cm-es lemezeket haszn´al´o megold´asok. Kapacit´ as, illetve az alkalmazott l´ezer hull´ amhossza szerint h´ arom gener´ aci´ oba sorolhat´oak: CD (700 MB), DVD (4.5 GB), HD-DVD (15 GB) ill. Blu-Ray (25 GB). Minden gener´ aci´ onak van el˝ oregy´artott (-ROM), egyszer ´ırhat´ o (-R), illetve u ´ jra´ırhat´ o (RW) alv´altozata. A merevlemezekn´el elmondottakhoz hasonl´ o mechanikai elven m˝ uk¨odnek, a teljes´ıtm´eny¨ uk is hasonl´ oan ´ırhat´ o le, ´ am a tipikus sz´am´ert´ekek l´enyegesen rosszabbak. A v´eletlen el´er´esi id˝o 100ms nagys´ agrend˝ u, a szekvenci´alis ´atereszt˝ok´epess´eg itt is poz´ıci´of¨ ugg˝o, CD-k eset´en legfeljebb 1-3 MB/s, DVD-k eset´en 2-8 MB/s ´erhet˝o el. Kis fajlagos k¨olts´eg´eb˝ol, de kedvez˝otlen teljes´ıtm´enyparam´etereib˝ol ad´od´oan optikai adatt´arol´ ast jellemz˝ oen adatok t¨ omeges terjeszt´es´ere, illetve archiv´al´asra haszn´alnak. Szalagos adatt´ arol´ as A merevlemezekhez hasonl´ oan a szalagos adatt´arol´as is m´agneses elven t¨ ort´enik. A szalag term´eszet´eb˝ol ad´od´oan a hozz´ af´er´es szekvenci´alis, v´eletlen hozz´ af´er´es csak a szalag hosszadalmas tekercsel´es´evel oldhat´ o meg. A kazett´ank´enti kapacit´ as (800GB LTO-4) ´es a szekvenci´alis ´ atereszt˝ok´epess´eg (120MB/s LTO-4) nagyj´ab´ol hasonl´ o a merevlemezek´ehez, a kazett´ak fajlagos k¨olts´ege azonban alacsonyabb, az optikai adatt´arol´ok´ehoz hasonl´ o. Tulajdons´ agai miatt szalagos adatt´arol´ ast manaps´ag kiz´ar´olag nagym´eret˝ u backup ´es archiv´al´asi feladatokra alkalmaznak. El´erhet˝ oek robotkaros szalagt´ arak (Autoloader, Tape Library), melyek nagy mennyis´eg˝ u kazetta t´ arol´ as´ at ´es a meghajt´ okba automatikus bet¨olt´es´et teszik lehet˝ov´e. A legnagyobb t´ arak ¨ osszkapacit´ asa el´erheti az 5 PetaByte-ot (IBM TS3500T). Szil´ ardtest adatt´ arol´ ok (Solid State Drive, SSD) Az eddig ismertetett adatt´arol´o eszk¨ oz¨ok mind mozg´ o alkatr´eszeket tartalmaznak, ami egyr´eszt s´er¨ ul´ekenny´e teszi, m´asr´eszt korl´atozza az el´erhet˝o sebess´eget, k¨ ul¨on¨osen a v´eletlen el´er´est. Ahol a k¨ornyezeti hat´asok miatt k¨ ul¨onleges t˝ ur˝ok´epess´eg˝ u t´ arol´ oeszk¨oz¨ok kellenek (pl. ipari be´ agyazott rendszerek, hordozhat´ o eszk¨ oz¨ok), vagy a merevlemezek v´eletlen el´er´esi idej´en´el l´enyegesen gyorsabb hozz´ af´er´esre van sz¨ uks´eg, ott mozg´oalkatr´esz n´elk¨ uli, szil´ ardtest adatt´arol´okat alkalmaznak. Ennek ma k´et elterjedt fajt´ aja van: a Flash mem´ oria ´es az akkumul´ atorral t´ apl´ alt RAM (Battery-Backed RAM). A flash
2
term´eszet´en´el fogva nem felejt˝o, elviekben az adatot ´eveken ´at is k´epes meg˝orizni ´es a k´eszenl´eti ´allapota sem ig´enyel energi´at. A flash alap´ u SSD-k hozz´ af´er´esi ideje nagyj´ab´ol 0.1 ms, a szekvenci´alis ´ atereszt˝ok´epess´eg 50-200 MB/s, b´ ar p´ arhuzamos´ıt´assal enn´el l´enyegesen nagyobb sebess´egek (1500 MB/s Fusion-io ioDrive Duo 640) is el´erhet˝ok. Jellemz˝o, hogy az ´ır´ as lassabb az olvas´asn´ al. Tov´abbi fontos jellemz˝ o a flash mem´oriacell´ak korl´atozott sz´am´ uu ´ jra´ır´ asi lehet˝os´ege (104 -106), a meghib´asod´ asokat t¨ obbnyire a cell´ak elhaszn´al´od´asa okozza. A flash SSD-k ´altal´ aban tartalmaznak terhel´eskiegyenl´ıt˝ o (wear-levelling) allok´aci´ os algoritmust, ami a gyakran fel¨ ul´ırt blokkokat rendszeresen ´ athelyezi, hogy megakad´alyozza a korai meghib´asod´ ast. A flash fajlagos k¨olts´ege nagyj´ab´ol t´ızszerese a merevlemezek´enek, ´am ez az ar´any folyamatosan cs¨okken, ´ıgy v´arhat´ o, hogy a k¨ozelj¨ov˝ oben a merevlemezeket nagy t¨ omegben fogja kiv´ altani, k¨ ul¨on¨osen a notebookokban, ahol fontos a kis fogyaszt´as. Nagyv´allalati IT rendszerekben olyan helyeken alkalmazz´ak, ahol nincs sz¨ uks´eg nagy helyi adatt´arol´asra (csak OS bet¨olt´eshez kell) vagy viszonylag kis adathalmazon merevlemezekn´el gyorsabb v´eletlen el´er´es kell, ahol f˝oleg az olvas´asm˝ uveletek a domin´ ansak. A RAM-alap´ u SSD-k folyamatos friss´ıt´est ig´enyelnek, ez´ert van sz¨ uks´eg be´ep´ıtett sz¨ unetmentes ´ t´ apell´at´asra. Altal´ aban egybe vannak ´ep´ıtve merevlemezzel is, hogy ´aramkimarad´as eset´en az akkumul´ator lemer¨ ul´ese el˝ ott m´eg stabil t´ arba tudja a mem´oria tartalm´at menteni. A k´eszenl´eti fogyaszt´asuk ´es fajlagos k¨olts´eg¨ uk is rendk´ıv¨ ul magas, ¨osszkapacit´ asuk viszonylag kicsi (1TB 4 egys´eg magas rack m´eretben $375000 ´aron!). Csak olyan esetekben alkalmazz´ak ˝oket, ahol kis adathalmazon rendk´ıv¨ ul gyors (< 5 µs) hozz´ af´er´esi id˝okre van sz¨ uks´eg, p´eld´ aul sok tranzakci´ot kiszolg´al´o adatb´azisok eset´eben. ´ Altal´ aban elmondhat´o, hogy a korszer˝ u t´ arol´oeszk¨oz¨ok rendelkeznek bels˝o hibadetekt´al´assal, bizonyos esetekben korl´atozott m´ert´ek˝ u hibajav´ıt´asi lehet˝os´eggel is. Meghib´asod´ as eset´en ´altal´ aban k´epesek jelezni a oper´ aci´ os rendszer fel´e, hogy a k´ert m˝ uveletet nem tudt´ ak v´egrehajtani. Ritka az olyan meghib´asod´ as, amikor egy eszk¨ oz hibajelz´es n´elk¨ ul hib´as adatot ad vissza.
2.
Hibat˝ ur˝ o megold´ asok, RAID
A RAID (Redundant Array of Independent Disks) olyan megold´ asok ¨osszefoglal´o neve, melyek t¨ obb k¨ ul¨on´all´o eszk¨ ozt kapcsolnak ¨ ossze a t´ arkapacit´ as, teljes´ıtm´eny illetve hibat˝ ur´esi tulajdons´ agok jav´ıt´asa ´erdek´eben. Manaps´ ag a k¨ovetkez˝o RAID szinteket haszn´alj´ak: JBOD ( just a bunch of disks”), egym´ as ut´an ¨osszef˝ uzi az egyes eszk¨ oz¨oket. Hibat˝ ur´est nem ” biztos´ıt, b´ armely eszk¨ oz kies´ese hib´ at okoz. RAID-0 (striping), az egyes eszk¨ oz¨oket blokkokra bontja, a blokkokat sorban sz´etosztja az egyes eszk¨ oz¨ok k¨oz¨ott, ´ıgy alak´ıtva ki s´avokat (stripe). Teljes´ıtm´eny- ´es kapacit´ asn¨ ovel˝o c´elt szolg´ al, hibat˝ ur´est ez sem biztos´ıt. A JBOD-hoz hasonl´ oan a RAID-0 is n¨ oveli a meghib´asod´ as val´ osz´ın˝ us´eg´et, mert a t¨ omb b´ armely tagj´anak hib´aja potenci´ alisan az ¨osszes adatot haszn´alhatatlann´ a teheti.1 Szekvenci´alis olvas´as ´es ´ır´ as ´atereszt˝ok´epess´ege az eszk¨ oz¨ok sz´am´ aval szoroz´odik, ha nincs egy´eb sz˝ uk keresztmetszet a rendszerben. V´eletlen el´er´esek akkor p´ arhuzamos´ıthat´ oak, ha az egyes m˝ uveletek ´altal ´erintett adat nem nagyobb a blokkm´eretn´el. RAID-1 (mirroring), t¨ ukr¨ozi az adatokat, azaz minden adatot minden eszk¨ ozre ki´ır. Els˝osorban hibat˝ ur´est biztos´ıt. A mai implement´ aci´ ok csak az ´ır´ asm˝ uveleteket t¨ obbsz¨or¨ozik, olvas´ast norm´ alis esetben csak egy eszk¨ oz v´egzi el, felt´etelezve, hogy ha az eszk¨ oz meghib´asodik, akkor a hib´ at jelzi a t¨ omb vez´erl˝oje fel´e, ´ıgy nem kell kompar´ alni. Ennek k¨ovetkezm´enye, hogy random olvas´ as m˝ uveleteket vagy t¨ obb egyidej˝ u szekvenci´ alis olvas´ast lehet p´ arhuzamosan is v´egezni. A teljes´ıtm´eny blokkm´erett˝ ol f¨ uggetlen. Leggyakrabban 2 diszkb˝ol ´ep´ıtenek RAID-1 t¨ omb¨ ot. 1 Gondoljuk arra, hogy ha egy f´ ajlrendszer t¨ obb eszk¨ ozre van sz´ etosztva, akkor b´ armelyik lemez kies´ ese eset´ en a f´ ajlrendszernek fontos metaadatai v´ alhatnak el´ erhetetlenn´ e, amik sz¨ uks´ egesek lehetnek a megmarad´ o eszk¨ oz¨ on t´ arolt f´ ajlokhoz val´ o hozz´ af´ er´ eshez is. Legrosszabb esetben a f´ ajlrendszert fel sem lehet csatolni, ha az alatta l´ ev˝ o blokkos eszk¨ oz c´ımtartom´ any´ anak jelent˝ os r´ esze hi´ anyzik. A gyakorlatban ilyen s´ er¨ ul´ esek ut´ an a f´ ajlrendszerekr˝ ol n´ eha m´ eg helyre´ all´ıthat´ o az adatok egy r´ esze, a ´m ez hosszadalmas, jelent˝ os emberi k¨ ozrem˝ uk¨ od´ est ig´ enyl˝ o, bizonytalan kimenetel˝ u proced´ ura, ez´ ert tervez´ esn´ el nem ´ ep´ıthet¨ unk r´ a.
3
RAID-5 (striping with parity), blokkokra bont´ as ´es hibajav´ıt´ as parit´ assal. Hasonl´o a RAID0 eset´en ismertetett s´avkialak´ıt´ ashoz. Minden s´avban az egyik blokk parit´ ast tartalmaz, ami a s´av t¨ obbi blokkja alapj´ an k´epz˝ odik. Egy eszk¨ oz kies´ese eset´en az adatok helyre´all´ıthat´oak a megmaradt adatblokkok ´es a parit´ as seg´ıts´eg´evel. Egyn´el t¨ obb eszk¨ oz kies´ese m´ar adatveszt´est okoz. Szekvenci´alis olvas´ as ´es ´ır´ as ´ atereszt˝ok´epess´ege az eszk¨ ozsz´am-1 szeres´ere sk´ al´az´odik. A random olvas´ asm˝ uveletek a RAID-0-hoz hasonl´ oan alakulnak, blokkm´erett˝ ol er˝osen f¨ uggenek. A random ´ır´ asm˝ uveletekn´el fontos, hogy minden blokknyi ´ır´ as ¨osszesen 2 blokk, egy adat ´es a parit´ as tartalm´anak friss´ıt´es´et ig´enyli. Mivel a parit´ ast minden ´ır´ asn´ al friss´ıteni kell, ez´ert fontos, hogy a parit´ asblokk s´avonk´ent m´as ´es m´as eszk¨ ozre ker¨ ul. Leggyakrabban a RAID-5 t¨ omb¨ ok 3 vagy 4 diszkb˝ol ´ep¨ ulnek fel, enn´el t¨ obbet ritk´ an raknak egy t¨ ombbe. RAID-6 (striping with dual parity), blokkokra bont´ as ´es k´etszeres parit´ as. A RAID-5-t˝ ol annyiban t´er el, hogy k´etf´ele parit´ as van s´avonk´ent, ez´altal a t¨ omb b´ armely k´et eszk¨ oz kies´es´et t´ ul´eli adatveszt´es n´elk¨ ul. Ez viszonylag u ´ j RAID szint, csak a leg´ ujabb eszk¨ oz¨ok t´ amogatj´ak. A haszn´alata elterjed˝ oben van, aminek a f˝o oka, hogy a mai kapacit´ asok mellett rendk´ıv¨ ul hossz´ u ideig tart egy RAID-5 t¨ ombben meghib´asod´ as ut´an helyre´all´ıtani az adatokat, ez id˝o alatt a t¨ ombnek m´eg nincs redundanci´ aja. Kombin´ alt RAID szintek legjellemz˝ obb a RAID-10 (RAID0+1 vagy RAID1+0), RAID50 (RAID5+0) RAID-512 (RAID5+1), RAID-60 (RAID6+0). Ezek t¨ omb¨ okb˝ ol k´epzett t¨ omb¨ ok, amiket k¨ ul¨on¨osen nagysz´am´ u (4-n´el t¨ obb, jellemz˝ oen 12) diszk eset´en alkalmaznak. Az els˝o sz´am az els˝odleges, fizikai eszk¨ oz¨okb˝ ol ´ep¨ ul˝o t¨ omb¨ ok jelleg´et adja meg, a m´asodik sz´am a t¨ omb¨ okb˝ ol k´epzett m´asodlagos t¨ omb t´ıpus´at. H´ al´ozati t´ arol´ oeszk¨oz¨okn´el (SAN, illetve NAS hardverek, l´asd k´es˝obb) gyakori a 2 egys´eg magas rack h´ azban 12 diszk ami RAID-10, RAID-50 vagy RAID-60 t¨ ombbe konfigur´ alhat´ o. RAID Szint
JBOD
RAID-0
RAID-1 RAID-5
RAID-6
lemezek sz´ ama
hibat˝ ur´ es
kapacit´ as
szekv. ´ atereszt. (legjobb esetben)
eszk¨ oz¨ ok egym´ as ut´ an kapcsol´ asa blokkokra bont´ as, eszk¨ oz¨ ok k¨ oz¨ ott sz´ etoszt´ as t¨ ukr¨ oz´ es
2..N
nincs
N szeres
1 szeres
v´ eletlen hozz´ af´ er´ es p´ arhuzamos´ıt´ as (legjobb esetben) ´ır´ as olvas´ as 1 szeres 1 szeres
2..N
nincs
N szeres
N szeres
N szeres
N szeres
2..N
1 szeres
1 szeres
1 szeres
N szeres
blokkokra bont´ as, sz´ etoszt´ as, egyszeres parit´ as blokkokra bont´ as, sz´ etoszt´ as, k´ etszeres parit´ as
3..N
N − 1 meghib´ asod´ asig 1 meghib´ asod´ asig
N − 1 szeres
N − 1 szeres
N/2 szeres
N − 1 szeres
2 meghib´ asod´ asig
N − 2 szeres
N − 2 szeres
N/3 szoros
N − 1 szeres
4..N
Redundanci´ aval rendelkez˝o RAID t¨ ombben meghib´asod´ as eset´en a k¨ovetkez˝o esem´enysor zajlik le: 1. Az egyik eszk¨ oz hib´ at jelez, vagy nem v´alaszol k´er´esre egy meghat´arozott ideig (timeout) 2. A RAID vez´erl˝o a k´erd´eses eszk¨ ozt hib´asnak jel¨oli ´es lev´alasztja a t¨ ombr˝ol 3. A t¨ omb ´ıgy degrad´ al´ odott ´ allapotba ker¨ ul. (T´ıpus´at´ol ´es az eszk¨ oz¨ok sz´am´at´ol f¨ ugg˝oen lehets´eges, hogy teljes redundanciaveszt´es l´ep fel, vagyis a t¨ omb m´ar nem k´epes tov´abbi meghib´ asod´ ast elviselni.) Degrad´al´ odott ´allapotban is k´epes kiszolg´alni ´ır´ as ´es olvas´as k´er´eseket, ´am a teljes´ıtm´eny cs¨ okkenhet. 2 N´ eh´ any
gy´ art´ o ezt RAID-53-nak nevezi
4
4. Egy karbantart´o a t¨ ombh¨ oz u ´ j diszket rendel hozz´ a, vagy fizikailag cser´eli a hib´asat. 5. Megkezd˝ odik a kiesett diszk tartalm´anak rekonstru´ al´asa az u ´ j eszk¨ ozre. Ez egy hossz´ u folyamat, a teljes diszket tele kell ´ırni, mik¨ ozben a t¨ ombh¨ oz ´erkezett k´er´eseket is ki kell szolg´ alni. 6. A rekonstrukci´ o v´egezt´evel a t¨ omb u ´ jra hib´atlan ´allapotba ker¨ ul. A redundanciavesztett ´ allapotban a t¨ omb s´er¨ ul´ekeny, ez´ert minimaliz´alni kell a redundancia n´elk¨ uli u ¨ zemid˝ot. Ezt az id˝ot nemcsak a rekonstrukci´ o id˝otartama hat´arozza meg, hanem az az id˝o is, ami a meghib´asod´ ast´ ol az u ´ j eszk¨ oz hozz´ aad´as´aig eltelik. Mivel a RAID feladata, hogy az oper´aci´ os rendszer sz´ am´ ara elfedje a meghib´asod´ ast, ez´ert a RAID rendszer akt´ıv fel¨ ugyelete n´elk¨ ul nem lehet ´eszrevenni a degrad´ al´ odott ´allapotot, ami hamis biztons´ag´erzetet okozhat. Tov´abbi neh´ezs´eg lehet a g´ephez fizikai hozz´ af´er´es biztos´ıt´asa, esetleg hossz´ u id˝obe ker¨ ulhet a g´ephez eljutni. Lehet˝os´eg van a g´epbe hideg- vagy melegtartal´ek eszk¨ ozt be´ep´ıteni, ami vagy kikapcsolt vagy bekapcsolt k´eszenl´eti ´ allapotban v´arakozik, hogy ´atvegye a hely´et egy s´er¨ ult eszk¨ oznek a t¨ ombben. ´Igy a kijav´ıt´ as fel¨ ugyelet n´elk¨ ul is automatikusan megkezd˝odik, a hib´as eszk¨ oz cser´eje k´es˝obb is elv´egezhet˝o.
3.
Dinamikus t´ arkioszt´ as
3.1.
Az alapprobl´ ema
A h´ att´ert´ arak lehets´eges kapacit´ as´ at az alkalmazott eszk¨ oz¨ok hat´arozz´ ak meg. Az alkalmaz´asok t´ arig´enye ett˝ ol elt´er˝ o, ami nagyon rossz kihaszn´ alts´agot eredm´enyez. Particion´al´assal r´eszekre lehet bontani az eszk¨ oz¨oket az alkalmaz´asok ig´enyeinek megfelel˝oen. A hagyom´ anyos, PC-ken alkalmazott particion´al´ asi s´ema rendk´ıv¨ ul r´egi, a mai k¨ovetelm´enyeknek gyakran nem felel meg. A f˝o probl´ema a part´ıci´ok statikuss´aga, azaz nem lehet ´atm´eretezni ˝oket, hogy k¨ovesse az alkalmaz´asok v´altoz´ o ig´enyeit. 3
3.2.
Logikai k¨ otetkezel´ es
Korszer˝ ubb, dinamikus particion´al´ ast biztos´ıtanak a logikai k¨ otetkezel˝ o (LVM, Logical Volume Manager ) rendszerek. M˝ uk¨ od´esi elve hasonl´ o az oper´aci´ os rendszerekn´el megismert virtu´alis mem´oriakezel´eshez. Az LVM alapfogalmai: • Fizikai k¨ otet (PV, physical volume) • K¨ otetcsoport (VG, volume group) • Logikai k¨ otet (LV, logical volume) A fizikai k¨oteteket allok´aci´ os egys´egekre (allocation unit, extent, ritk´ an: partition) bontja. Az allok´aci´ os egys´egek tetsz˝ oleges kett˝ o hatv´any m´eret˝ uek lehetnek, leggyakrabban 1 ´es 64 MB k¨oz¨otti m´erettartom´anyban. Minden fizikai k¨otet r´esze egy k¨otetcsoportnak, ami egy nagy k¨oz¨os er˝oforr´as gy˝ ujt˝onek (resource pool) tekinthet˝ o. A k¨otetcsoportb´ol lehet allok´alni logikai k¨oteteket, ami eg´esz sz´am´ u allok´aci´ os egys´egb˝ ol ´ allhat. Fontos megjegyezni, hogy a logikai k¨otet a k¨otetcsoportban tal´ alhat´o b´ armely fizikai k¨otet b´ armely allok´aci´ os egys´eg´et b´ armilyen sorrendben megkaphatja, nem felt´etlen ¨ osszef¨ ugg˝ o sorozatot. A hozz´ arendel´est a logikai k¨otetkezel˝o metaadatai t´ arolj´ak, melyek a fizikai k¨otetek fejl´ec´eben kapnak helyet. A logikai k¨otetek teh´at egy virtu´alis line´aris (0-t´ol a k¨otet kapacit´ as´ aig terjed˝ o, megszak´ıt´as n´elk¨ uli) c´ımtartom´anyb´ol ´allnak, ami tetsz˝ olegesen lehet lek´epezve a t´enyleges fizikai eszk¨ oz¨ok c´ımeire, ak´ ar egyn´el t¨ obb k¨ ul¨onb¨ oz˝o fizikai eszk¨ ozre is sz´etsz´orva. A k¨otetcsoportok b´ armikor b˝ ov´ıthet˝oek u ´ j fizikai eszk¨ oz hozz´ arendel´es´evel, a logikai k¨otetek pedig b˝ ov´ıthet˝ oek u ´ j allok´aci´ os egys´egek hozz´ arendel´es´evel, ak´ ar m˝ uk¨od´es k¨ozben is. 3 Ugyan l´ eteznek eszk¨ oz¨ ok a ´tm´ eretez´ esre, ezek azonban mindig teljes part´ıci´ ok adatmozgat´ as´ aval j´ arnak, ami hossz´ u folyamat, ´ es rendszer norm´ alis m˝ uk¨ od´ ese k¨ ozben nem v´ egezhet˝ o el.
5
3.3.
A logikai k¨ otetkezel´ es teljes´ıtm´ enyre gyakorolt hat´ asa
Az allok´aci´ os egys´egek nem ¨ osszef¨ ugg˝ o hozz´ arendel´ese eset´en az egys´egek hat´ar´an ´atny´ ul´o szekvenci´alis hozz´ af´er´esekn´el fejpozicion´ al´ ast kell v´egezni. Ez´ert a k¨otetkezel˝o t¨ orekszik arra, hogy a logikai k¨oteteket ¨ osszef¨ ugg˝ oen ossza ki. Ez nyilv´an akkor lehetetlen, ha megl´ev˝ o logikai k¨otetet pr´ob´alunk b˝ ov´ıteni ´es a v´ege ut´an k¨ovetkez˝o egys´eget m´ar m´as logikai k¨otet elfoglalta. A fejpozicion´al´asok hat´ asa cs¨ okkenthet˝ o alkalmasan nagy allok´aci´ os egys´eg m´eret megv´ alaszt´as´aval. A mai merevlemezek 100MB/s szekvenci´alis ´ atereszt˝ok´epess´ege mellett egy 64MB-os egys´eg 640 ms alatt v´egigolvashat´ o. Legrosszabb esetben 640 ms-onk´ent kell egy, ´atlagosan 20 ms-os fejpozicion´al´as, ami ¨osszesen kb. 6% teljes´ıtm´enyveszt´est jelent, ami alig kimutathat´ o. V´eletlen hozz´ af´er´esekn´el a hat´as jelent˝ osebb lehet, ha egy kis ugr´ as a virtu´alis c´ımtartom´anyban val´oj´ aban nagy ugr´ as a fizikai eszk¨ oz¨on. K¨ ul¨on¨osen az okozhat probl´em´ at, hogy egyes f´ajlrendszerek optimaliz´ alnak a v´eletlen hozz´ af´er´esek ugr´ ashossz´ anak r¨ovid´ıt´es´ere, felt´etelezve, hogy a c´ımtartom´anyban kis elt´er´es eset´en gyorsabb a pozicion´ al´ as, mint nagy elt´er´esn´el. Mindezek ellen´ere a gyakorlatban az LVM nem okoz ´eszrevehet˝ o lassul´ ast, t¨ obbnyire mert nagy a blokkm´eret ´es ritk´ an kell b˝ ov´ıteni part´ıci´ot, ´ıgy kicsi a fragment´ al´ od´as is.
3.4.
A logikai k¨ otetkezel´ es egy´ eb szolg´ altat´ asai
A dinamikus allok´aci´ on t´ ul a legt¨obb LVM megval´os´ıt´ as egy´eb szolg´ altat´ asokkal is kiakn´azza az indirekt allok´aci´ o adta lehet˝ os´egeket: • Atomi pillanatk´ep k´esz´ıt´es a teljes logikai k¨otetr˝ ol (snapshot), majd a v´altoz´ asok transzparens k¨ovet´ese. Ennek egy alkalmaz´asa lehet p´eld´ aul teljes rendszer gyors vissza´ all´ıt´asa egy elmentett ´ allapotra, illetve m˝ uk¨ od´es k¨ozben konzisztens ment´es (backup) k´esz´ıt´es a teljes k¨otetr˝ ol. • Logikai k¨otetek m˝ uk¨ od´es k¨ozbeni mozgat´asa eszk¨ oz¨ok k¨oz¨ott. • Redundancia az allok´aci´ os egys´egek t¨ ukr¨oz´es´evel. Ez a RAID-1-hez hasonl´ oan t¨ obb p´eld´ anyban, k¨ ul¨onb¨ oz˝o fizikai k¨otetekre ´ırja ki a logikai k¨otet ¨osszes allok´aci´ os egys´eg´et. • Teljes´ıtm´enyn¨ ovel´es allok´aci´ os egys´egek s´avos sz´etoszt´as´aval. A RAID-0-n´al megismert elvet k¨oveti. A t¨ ukr¨oz´es ´es s´avos sz´etoszt´as olyan esetekben b´ır nagy jelent˝ oss´eggel, ha egy´ebk´ent nincs RAID lehet˝ os´eg a rendszerben. A pillanatk´ep k´esz´ıt´ese ´es fenntart´asa a copy-on-write m˝ uk¨od´esi elvet k¨oveti. A pillanatk´ep sz´am´ ara egy k¨ ul¨on logikai k¨otetet kell l´etrehozni, tetsz˝ oleges m´erettel (legfeljebb az eredeti k¨otet m´erete ´all´ıthat´ o be). Az u ´ j logikai k¨otet eleinte u ¨ res, ´am minden4 az eredeti k¨oteten v´egzett ´ır´ as m˝ uvelet el˝ ott a m´odos´ıtani k´ıv´ ant allok´aci´ os egys´egr˝ ol k´esz¨ ul egy m´asolat a pillanatk´ep k¨otetre. Az eredeti k¨otet tartalm´anak m´odosul´ as´ aval teh´at egyre t¨ obb adat ker¨ ul a pillanatk´epre. Amennyiben a pillanatk´ep sz´ am´ ara kijel¨ olt m´eret kisebb az eredeti k¨otet´en´el, a pillanatk´ep k¨otet betelhet a m´odos´ıt´asok hat´ as´ ara. Emiatt a pillanatk´ep m´eret´et az alapj´an kell megv´ alasztani, hogy v´arhat´oan mennyi ideig lesz sz¨ uks´eg r´a, illetve, hogy ez id˝o alatt mekkora m´odos´ıt´asok v´arhat´oak. Egy backup elk´esz´ıt´es´enek viszonylag r¨ovid idej´ere az eredeti k¨otet m´eret´enek ak´ ar 5-10%-a is elegend˝o lehet. Fontos kiemelni az allok´aci´ os egys´eg m´eret´enek hat´as´at. Mind a s´avos sz´etoszt´as, mind pedig a pillanatk´ep k´esz´ıt´es eset´en az allok´aci´ os egys´eg az alapvet˝o blokkm´eret, amivel a k¨otetkezel˝ o az eml´ıtett m˝ uveleteket elv´egzi. Pillanatk´epn´el minden m´odos´ıt´as - ´erintsen az b´ armilyen kis adategys´eget - egy teljes allok´aci´ os egys´eg m´asol´as´at fogja kiv´ altani. Ha nagy allok´aci´ os egys´egek haszn´alatakor sok elsz´ ort kis m´odos´ıt´as t¨ort´enik, akkor l´enyegesen t¨ obb adatr´ol fog m´asolat k´esz¨ ulni, mint amennyi v´altozott, ´ıgy hamar elfogyhat a pillanatk´ep k¨otet helye, tov´abb´a a m´asol´asok sok ideig tartanak, ezzel sz´amottev˝oen cs¨okkentve a teljes´ıtm´enyt. Ez a legfontosabb oka annak, hogy az LVM megval´ os´ıt´ asok nemcsak nagy (ak´ar 1GB-os), hanem eg´eszen kicsi (ak´ar 4 kB-os) allok´aci´ os egys´egek haszn´alat´at is lehet˝ov´e teszik. 4 Pontosabban csak az olyan allok´ aci´ os egys´ egekr˝ ol, amelyekr˝ ol kor´ abban m´ eg nem k´ esz¨ ult m´ asolat a pillanatk´ ep k¨ otetre.
6
4.
K¨ ozpontos´ıtott t´ arrendszerek
4.1.
Probl´ em´ ak az elosztott lok´ alis t´ arol´ assal
Sok szervert tartalmaz´ o nagyv´allalati rendszerekben, jelent˝ os adminisztrat´ıv ´es karbantart´asi terhet jelent, ha minden g´epben lok´alis t´ arhely van. K¨olts´eg szempontb´ol sem optim´ alis, mert igen gyakori, hogy egy szervernek csak kis t´ arhelyre van sz¨ uks´ege, ´ am fontos a hibat˝ ur´es vagy a nagy teljes´ıtm´eny. Az eszk¨ oz¨ok ´ara nem ´all egyenes ar´anyban a kapacit´ assal, ez´ert sok kis t´ arhely l´enyegesen dr´ag´abb egy nagy t´ arhelyn´el. B˝ov´ıt´esi szempontb´ol is neh´ezs´egek mer¨ ulnek fel, mert a g´epekbe szerelt kis lok´alis t´ areszk¨ oz¨ok gyakran csak cser´evel b˝ ov´ıthet˝ ok, ami le´ all´assal ´es hosszadalmas adatmozgat´ assal j´arhat. Hibat˝ ur˝o vagy terhel´eseloszt´o f¨ urt¨ ok (cluster) eset´en sz¨ uks´eg van k¨oz¨osen haszn´alt t´ arhelyre, ami szint´en nem oldhat´ o meg csak lok´alis t´ arakkal.
4.2.
T´ arh´ al´ ozatok
A fenti probl´em´ akra k´ın´alnak megold´ast a k¨ozpontos´ıtott, h´ al´ozati t´ armegold´asok. K´et fajt´ aj´ at k¨ ul¨onb¨ oztetj¨ uk meg: a h´ al´ ozati f´ ajlrendszereket ´es a h´ al´ozati blokkos eszk¨ oz¨oket. Ezek megoldhat´ oak szoftveresen, de kaphat´oak dedik´ alt hardverek is, melyek h´ al´ozati t´ arhelyet biztos´ıtanak. A f´ ajlrendszer megoszt´ ast k´ın´al´o eszk¨ oz¨ok neve Network Attached Storage (NAS), a blokkos eszk¨ oz¨oket ny´ ujt´o megold´asok neve Storage Area Network (SAN). K¨ozponti h´ al´ozati t´ arakkal lehet˝ os´eg ny´ılik egy nagy k¨oz¨os pool-b´ol dinamikusan, az aktu´alis ig´enyeknek megfelel˝oen hozz´ arendelni t´ arhelyet az egyes szerverekhez. A nagy k¨ozponti t´ ar hibat˝ ur´es´et k¨onny˝ u megoldani, tov´abb´a optim´ alis fajlagos k¨olts´eg˝ u eszk¨ oz¨okb˝ ol ´allhat. A k¨ozpont t´ ar karbantart´asa l´enyegesen kevesebb emberi er˝ oforr´ ast ig´enyel a sok elosztott t´ ar fel¨ ugyelet´ehez k´epest. Most els˝osorban a SAN megold´asokkal foglalkozunk. Sz´amos k¨ ul¨onb¨ oz˝o SAN protokoll van, melyeket elt´er˝ o helyen alkalmaznak: • FibreChannel Optikai ¨ osszek¨ ottet´es, t´ıpust´ol f¨ ugg˝oen 1-20 GBit/s sebess´eggel. Legegyszer˝ ubb esetben pont-pont ¨ osszek¨ ottet´es, bonyolultabb topol´ogi´ ak eset´en speci´ alis kapcsol´ oelemeket (switch) ig´enyel. SCSI utas´ıt´ask´eszletet haszn´al, b´ ar lehets´eges ATM vagy IP h´ al´ ozatot is ki´ep´ıteni vele. Rendk´ıv¨ ul dr´aga. • iSCSI TCP kapcsolatot ´ep´ıt ki a kliens (kezdem´enyez˝ o, initiator ) ´es a szerver (c´elpont, target ) k¨oz¨ott, ´es efelett a SCSI protokoll parancsait ´es u ¨ zenetform´atum´at haszn´alja. Viszonylag olcs´ o (l´etezik teljesen szoftveres megval´os´ıt´as is), szabv´anyos ´es sz´eles k¨orben t´ amogatott. ´ Altal´ aban dedik´ alt gigabit ethernet h´ al´ozatot ´ep´ıtenek ki iSCSI sz´am´ ara. • HyperSCSI K¨ ozvetlen¨ ul ethernet keretekbe ´agyazza be a SCSI parancsokat ´es u ¨ zeneteket. Teljes´ıtm´eny szempontb´ol ez jobb lehet az iSCSI-n´al, viszont neh´ezkes konfigur´alni. Kev´ess´e t´ amogatott protokoll. • ATA over Ethernet a HyperSCSI-hoz hasonl´ o, de ez ATA parancsk´eszletet haszn´al a SCSI helyett. Nagyv´allalati k¨ornyezetben nem haszn´alj´ak, kis olcs´o asztali SAN dobozok alkalmazz´ ak ezt a protokollt. H´ al´ozati f´ ajlrendszerek ´ altal´ anos k´epess´ege, hogy t¨ obben csatlakozhatnak hozz´ a egy id˝oben ´es meg tudja oldani az elosztott hozz´ af´er´esek k¨oz¨ott a megfelel˝o k¨olcs¨on¨os kiz´ar´asokat. Hasonl´o megold´as SAN-ok eset´eben is lehets´eges, azonban olyan f´ajlrendszer kell, amely az alacsony szint˝ u strukt´ ur´ain k´epes lekezelni, hogy egyszerre t¨ obben m´ odos´ıtj´ak a tartalm´at. Ilyen f´ajlrendszerek pl a VMWare Virtual Machine File System v3 (VMFS3), Oracle Cluster File System (OCFS) vagy a RedHat Global File System (GFS).
7
5.
Blokkos eszk¨ oz¨ ok kezel´ ese Linux alatt
A UNIX-alap´ u rendszerek hagyom´ anyos filoz´ofi´aj´ at k¨ovetve Linux alatt is a f´ajlok form´aj´ aban f´erhet¨ unk hozz´ a a hardver eszk¨ oz¨okh¨ oz. Itt megjegyzend˝o, hogy a f´ajlokra u ´ gy kell tekinteni, mint hierarchikus n´evt´erbe szervezett egyedi azonos´ıt´o n´evvel ell´atott objektumokra, amik egy j´ol meghat´arozott interf´eszt implement´ alnak. A f´ajl API legfontosabb met´odusai a read() ´es a write(). Egyszer˝ u, u ´ n. regul´ aris f´ ajlok egy v´altoz´ o hossz´ us´ag´ u byte t¨ omb¨ ot implement´ alnak, amiben pozicion´ alni is lehet a seek() met´odussal. Speci´ alis eszk¨ oz f´ajl eset´en azonban a read() ´es write() met´odusokat egy-egy kernel meghajt´ o (driver ) implement´ alja teljesen egyedi m´odon, ez azt jelenti, hogy a hagyom´ anyos jelent´es´et˝ol ak´ ar teljesen elt´er˝o dolgot is csin´alhat. N´eh´any speci´ alis eszk¨ oz: • /dev/null - u ¨ res write m˝ uvelet, a read mindig f´ajl v´ege jelz´est (EOF ) ad vissza, ez gyakorlatilag egy mindent eldob´o nyel˝ o • /dev/zero - u ¨ res write, a read minden h´ıv´ asa 0-´ert´ek˝ u byte-okat ad vissza, gyakorlatilag egy v´egtelen 0 forr´as. • /dev/full - a write m˝ uvelet mindig tele jelz´est ad, a read a /dev/zero-hoz hasonl´ o • /dev/random ´es /dev/urandom - u ¨ res write, a read v´eletlen adatfolyamot ´all´ıt el˝o. A t¨ omegt´ arol´ o eszk¨ oz¨ok is ilyen f´ ajlokon kereszt¨ ul ´erhet˝oek el, b´ ar ezek viselked´ese hasonl´ıt a regul´ aris f´ ajlok´ehoz annyiban, hogy ezek is egy perzisztens adatt´arol´o t¨ ombk´ent jelen´ıtik meg az eszk¨ ozt, de a m´eret ez esetben fix. • /dev/sda, sdb, sdc, stb. - SCSI API-val el´erhet˝o merevlemezek. A legut´obbi kernelkiad´ asokban m´ar nem csak a val´odi SCSI merevlemezek, hanem a SATA, PATA merevlemezek, illetve USB-storage (k¨ uls˝ o merevlemez, pendrive) eszk¨ oz¨ok meghajt´ oprogramjai is ezek alatt a nevek alatt jelennek meg. A neveket inicializ´ al´asi sorrendben kapj´ak, teh´at v´altozhat, hogy melyik eszk¨ oz melyik n´ev alatt jelenik meg. • /dev/sr0, sr1 stb. - SCSI, u ´ jabban SATA ´es PATA CD/DVD ´ır´ ok. Inicializ´al´asi sorrendben sz´amoz´ odnak. • /dev/hda, hdb, hdc, stb. - R´egebbi kernelekn´el az IDE (f˝ oleg PATA) merevlemez ´es CD/DVD meghajt´ ok eszk¨ oznevei. Busz poz´ıci´o szerint k¨ot¨ott nev¨ uk van: a primary master a hda, primary slave a hdb, secondary master a hdc, stb. • /dev/loop0, loop1, stb. - k¨ ul¨onleges eszk¨ oz¨ok, nincs val´odi hardver alattuk, regul´ aris f´ajlokat lehet hardver eszk¨ ozk´ent kezelni vel¨ uk. Ezzel lehet p´eld´ aul .iso CD image f´ajlokat felcsatolni an´elk¨ ul, hogy CD lemezre k´ene ki´ırni. A merevlemezek particion´alhat´ oak ´es ´altal´ aban particion´altak is, ezeket a kernel az eszk¨ oz inicializ´ al´ asakor der´ıti fel az u ´ n. superblock (az eszk¨ oz els˝o blokkja, ami gyakran metainform´aci´ okat tartalmaz) beolvas´ as´ aval. A part´ıci´ok sz´am´ ara k¨ ul¨on sz´amozott eszk¨ oz¨ok j¨onnek l´etre, pl. /dev/sda1, sda2, stb. A part´ıci´ok sz´amoz´asa k¨oveti a part´ıci´os t´ abla kioszt´ as´at, teh´at el˝ofordulhat, hogy nem folytonos a sz´amoz´as. A part´ıci´o f´ajl az eredeti eszk¨ ozf´ajlon bel¨ ul egy korl´atozott c´ımtartom´ anyt fed le. A part´ıci´o tartalma a part´ıci´o f´ajlban ´es a teljes eszk¨ ozt reprezent´ al´o f´ajlban egyidej˝ uleg l´athat´o. A t¨ omegt´ arol´ o eszk¨ oz¨ok szinte mindig blokkos szervez´es˝ uek, ami azt jelenti, hogy val´oj´ aban nem byte-ok, hanem blokkok t¨ ombjek´ent ´ep¨ ulnek fel. A blokk a legkisebb elemi ´ır´ as vagy olvas´as m˝ uvelet adatm´erete. A poz´ıci´ok c´ımz´ese is blokk egys´egekben t¨ ort´enik. A kernel ´atsz´amolja a c´ımz´est ´es puffereli a f´ ajlokon v´egzett m˝ uveleteket, ez´ert azoknak nem kell felt´etlen¨ ul a blokkm´eretet k¨ovetni, byte pontoss´ ag´ u c´ımz´est haszn´alhatnak. Fontos azonban megjegyezni, hogy az eszk¨ oz blokkm´eret´enek eg´esz sz´am´ u t¨ obbsz¨or¨os´evel v´egzett adatm˝ uveletek l´enyegesen
8
gyorsabbak ´es kevesebb processzorterhel´essel j´arnak. A merevlemezek blokkm´erete szinte mindig 512 byte 5 , ez a CD-k ´es DVD-k eset´en 2048 byte. A flash eszk¨ oz¨ok k¨ ul¨onlegesek, mert k´etf´ele blokkm´eretet is haszn´alnak, olvas´as ´es u ¨ res ter¨ uletre ´ır´ as egy kicsi, ´altal´ aban 4096 byte-os blokkm´erettel (´ un. lap, page) t¨ ort´enik, ´am a m´ar meg´ırt ter¨ uletek fel¨ ul´ır´ as el˝otti t¨ orl´ese l´enyegesen nagyobb egys´egekben, nem ritk´ an 128 kB-os vagy 256 kB-os blokkokban t¨ ort´enik. Emiatt a be´ep´ıtett blokk transzl´ aci´ os algoritmus n´elk¨ uli flash eszk¨ oz¨ok (Linux alatt Memory Technology Devices, MTD) kezel´ese k¨ ul¨on speci´ alis interf´eszt ig´enyel. A transzl´ aci´ os algoritmus feladata t¨ obbek k¨oz¨ott a szem´etszed´es (garbage collection), vagyis a haszn´alt, ´erv´enytelennek jel¨olt adatok ´altal foglalt hely visszanyer´ese. Ennek m˝ uk¨od´ese gyakran a t¨ or¨olni k´ıv´ ant blokkban tal´ alhat´o m´eg ´erv´enyes adatok u ´ j helyre mozgat´as´ aval j´ar, ezek a j´ arul´ekos ´ır´ asm˝ uveletek az SSD eszk¨ oz¨okn´el sz´amottev˝o teljes´ıtm´enycs¨okken´est okoznak. Ez sajnos egy sz¨ uks´egszer˝ u k¨ovetkezm´enye a k´etf´ele blokkm´eret haszn´alat´anak. Nagym´eret˝ u blokkos eszk¨ oz¨ok¨ on adatmanipul´ aci´ ot a dd programmal v´egezhet¨ unk el. Ez l´enyeg´eben egy egyszer˝ u m´asol´ oprogram, aminek megadhatjuk, hogy milyen blokkm´eretet haszn´aljon, illetve a bemeneten mett˝ol meddig olvasson, a kimenetre pedig milyen poz´ıci´ot´ol kezd˝od˝oen ´ırjon. Param´eterez´ese: Param´eterez´ese: dd if=bemen˝ o f´ ajl of=kimen˝ o f´ ajl bs=blokkm´eret count=m´ asoland´ o blokkok sz´ ama skip=bemenet kezd˝ opoz´ıci´ oja seek=kimenet kezd˝ opoz´ıci´ oja Minden param´eter opcion´alis, a bemenet alap´ertelmezetten a standard input, a kimenet a standard output, a blokkm´eret 1, a bemeneti illetve kimeneti pozicion´al´as egyar´ant 0. A felsoroltakon k´ıv¨ ul term´eszetesen van m´eg sz´ amos, kev´esb´e gyakran haszn´alt param´etere. P´eld´ aul 1 MB-os u ¨ res f´ ajl l´etrehoz´asa 1 kB-os blokkok haszn´alat´aval: dd if=/dev/zero of=./zerofile bs=1024 count=1024
6.
F´ ajlrendszerek l´ etrehoz´ asa, ´ atm´ eretez´ ese
Ahhoz, hogy a blokkos eszk¨ oz¨ok¨ on vagy part´ıci´okon regul´ aris f´ajlokat tudjunk t´ arolni sz¨ uks´eg van valamilyen f´ ajlrendszerre. A f´ ajlrendszereket nemcsak part´ıci´ora, hanem particion´alatlan teljes eszk¨ oz¨okre is lehet rakni, b´ ar ´ altal´ aban a szok´ asos megold´as egy part´ıci´o l´etrehoz´asa m´eg akkor is, ha a teljes eszk¨ ozt haszn´alni akarjuk. A f´ajlrendszer is rendelkezik egy m´erettel, ami alap´ertelmez´esben a part´ıci´o teljes m´erete, de lehet kisebb is ann´al. Ez akkor fordul el˝o, ha a part´ıci´ot ´atm´eretezz¨ uk. M´eret cs¨okkent´esn´el el˝osz¨ or a f´ ajlrendszert kell zsugor´ıtani, majd ut´ana lehet a t´ arol´o eszk¨ oz m´eret´et hozz´ aigaz´ıtani, n¨ ovel´esn´el el˝ obb az eszk¨ ozt kell megn¨ovelni ´es ut´ana lehet a f´ajlrendszert hozz´ an¨oveszteni, hogy kit¨oltse a rendelkez´esre ´ all´o helyet. Linux alatt sz´ amos f´ ajlrendszerfajt´ at lehet haszn´alni, a jelen p´eld´ aban a legelterjedtebben haszn´alt ext3fs f´ ajlrendszer ker¨ ul ismertet´esre.
6.1.
Ext3 l´ etrehoz´ asa
A f´ajlrendszer l´etrehoz´as´ ara (k¨ ozkedvelt nev´en formatt´ al´ as) az mkfs.ext3 seg´edprogrammal t¨ ort´enik, alap´ertelmezett esetben: mkfs.ext3 f´ ajln´ev A f´ajl lehet eszk¨ oz, de ak´ ar egy el˝ ore lefoglalt regul´ aris f´ajl is, amin bel¨ ul kialak´ıt´asra ker¨ ulnek a f´ajlrendszer alacsony szint˝ u adatstrukt´ ur´ai.
6.2.
Felcsatol´ as
A f´ajlrendszer felcsatolhat´o a mount paranccsal. F´ajlrendszert alap´ertelmezetten csak a root felhaszn´al´o csatolhat fel, egyszer˝ u felhaszn´al´o csak abban az esetben, ha azt a /etc/fstab konfigur´ aci´ os f´ ajlban enged´elyezt¨ uk. 5 Egyes
SCSI merevlemezek eset´ en ez a ´tkonfigur´ alhat´ o az 512 byte 2 hatv´ any szoros´ ara
9
mount [-o [loop],[ro]] f´ ajln´ev csatol´ asi pont A csatol´asi pont egy k¨onyvt´ arn´ev a m´ar felcsatolt k¨onyvt´arhierarchi´aban. Ez a k¨onyvt´ar lesz a most felcsatolt f´ ajlrendszer gy¨ ok´ereleme. Gyakori opci´o a loop, amit akkor kell haszn´alni, ha regul´ aris f´ ajl tartalm´at akarjuk felcsatolni. A mount parancs ilyenkor automatikusan haszn´alatba veszi a k¨ovetkez˝o szabad /dev/loop eszk¨ ozt. M´ asik gyakori opci´o a ro, ami azt jel¨oli, hogy csak olvashat´o u ¨ zemm´odban csatolja fel. Egy m´ar felcsatolt f´ ajlrendszer lecsatolhat´o a k¨ovetkez˝o paranccsal: umount eszk¨ ozn´ev vagy csatol´ asi pont Ha valamilyen folyamat ´eppen nyitott f´ajlt tart az adott eszk¨ oz¨on (pl. a shellben ´eppen a felcsatolt eszk¨ oz¨on l´ev˝ o k¨onyvt´ arban vagyunk), akkor hiba¨ uzenetet kapunk, a lecsatol´as nem fog siker¨ ulni. K¨ ul¨on¨osen figyelj¨ unk arra, hogy felcsatol´askor ne fedj¨ uk el a /dev illetve a /proc k¨onyvt´arakat, mert ezzel megakad´alyozzuk, hogy a fel- ´es lecsatol´as folyamat´ahoz sz¨ uks´eges speci´ alis f´ ajlokhoz hozz´ af´erjen a rendszer, ´ıgy a k´es˝obbiekben m´ar nem tudjuk lecsatolni ˝oket. Ilyenkor t¨ obbnyire csak u ´ jraind´ıt´ assal lehet helyre´ all´ıtani a rendszer norm´alis m˝ uk¨od´es´et.
6.3.
´ Atm´ eretez´ es
Az ext3 f´ ajlrendszer lehet˝ ov´e teszi, hogy felcsatolt ´allapotban is megn¨ovelhess¨ uk a m´eret´et (online grow ), azonban m´eret cs¨ okkent´est csak lecsatolt ´allapotban lehet v´egezni. Az ´atm´eretez´es a k¨ovetkez˝ok´eppen zajlik: resize2fs eszk¨ oz u ´j m´eret A m´eret megadhat´ o f´ ajlrendszer blokkokban (l´etrehoz´ askor param´eterrel megadhat´ o), 512 byteos (s v´egz˝ od´es) kB egys´egekben (K v´egz˝ od´es), MB egys´egekben (M v´egz˝ od´es). Minden f´ ajlrendszerhez saj´ at seg´edprogramk´eszlet tartozik ´es elt´er˝o ´atm´eretez´esi k´epess´egekkel b´ırnak.
7.
Szoftveres RAID Linux alatt, md
´ Altal´ aban RAID t¨ omb¨ oket csak azonos m´eret˝ u ´es t´ıpus´ u merevlemezekb˝ol ´ep´ıtenek. A Linux szoftver RAID megval´ os´ıt´ asa, az md (multiple devices) nem k¨ot ki semmit, l´etrehozhat´oak teljesen vegyes t¨ omb¨ ok is, nemcsak merevlemezekb˝ol, hanem tetsz˝ oleges blokkos eszk¨ ozb˝ol. Teljes´ıtm´eny szempontb´ol azonban el˝ ony¨osebb t¨ orekedni arra, hogy azonos eszk¨ oz¨oket haszn´aljunk.
7.1.
Particion´ al´ asi megfontol´ asok
A fel´ep´ıtett ´es akt´ıv RAID t¨ omb¨ ok a /dev/md0 /dev/md1, stb f´ajlok alatt ´erhet˝oek el, amik szint´en l´etrehoz´asi sorrendben sz´ amoz´ odnak. A r´egebbi kernel verzi´ ok nem t´ amogattak part´ıci´okezel´est md t¨ omb¨ ok¨ on bel¨ ul, ez´ert a gyakorlat az volt, hogy nem a teljes merevlemez eszk¨ oz¨okb˝ ol ´ep´ıtettek raid t¨ omb¨ ot, hanem egyform´ an particion´alt´ ak azokat ´es a megfelel˝o part´ıci´o csoportokb´ol ´ep´ıtettek fel raid-ezett part´ıci´okat. Az u ´ jabb verzi´ okban lehet˝ os´eg van particion´alt raid t¨ omb¨ ok kezel´es´ere is, ezek jellemz˝ oen /dev/md0p0, md0p1 stb. elnevez´esi s´em´ at k¨ovet˝o eszk¨ oz¨ok alatt ´erhet˝oek el. Ennek ellen´ere a kor´ abbi gyakorlat megmaradt, ugyanis lehet˝ov´e teszi, hogy a merevlemez k¨ ul¨onb¨ oz˝o part´ıci´oit k¨ ul¨onb¨ oz˝o RAID szint˝ u t¨ omb¨ okbe szervezz¨ uk. Ez k¨ ul¨on¨osen a boot part´ıci´ok eset´en fontos, mert a bootloaderek nem tudnak raid t¨ omb¨ oket kezelni, ´ıgy a boot part´ıci´okat csak RAID-1 t¨ ombbe szabad szervezni, aminek minden tagja a t¨ ombt˝ol f¨ uggetlen¨ ul, k¨ ul¨on-k¨ ul¨on is m˝ uk¨od˝ok´epes. Egy m´asik gyakran alkalmazott megold´as a raid t¨ omb¨ ok particion´al´as´ara a k´es˝obbiekben r´eszletes ismertet´esre ker¨ ul˝o logikai k¨otetkezel´es, ami a hagyom´ anyos particion´al´asi s´em´ at egy l´enyegesen dinamikusabb megold´assal v´altja fel.
10
7.2.
M˝ uveletek RAID t¨ omb¨ okkel
A raid t¨ omb¨ oket kezel˝o seg´edprogram az mdadm. T¨omb l´etrehoz´as ´altal´ anos szintaktik´ aja: mdadm --create eszk¨ oz --level=raid szint sz´ ama --raid-devices=tagok sz´ ama eszk¨ oz¨ ok felsorol´ asa space-el elv´ alasztva p´elda: mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb /dev/sdc A l´etrehoz´as folyamata megfigyelhet˝ o a k¨ovetkez˝ok´eppen: cat /proc/mdstat A l´etrehozott t¨ omb¨ ok tagjainak metaadatait megn´ezhetj¨ uk ´ıgy: mdadm --examine t¨ omb valamely tagja A teljes l´etrehozott t¨ omb adatait pedig ´ıgy jelen´ıthetj¨ uk meg: mdadm --query t¨ omb mdadm --detail t¨ omb T¨omb le´all´ıt´ asa (az md eszk¨ oz megsz˝ unik): mdadm --stop t¨ omb M´ ar l´etrehozott t¨ omb elind´ıt´ asa: mdadm --assemble t¨ omb Az ¨osszes bekonfigur´ alt t¨ omb elind´ıt´ asa: mdadm --assemble --scan Tartal´ek (hot spare) eszk¨ oz hozz´ aad´ asa: mdadm --add t¨ omb eszk¨ oz Eszk¨ oz hib´ asnak jel¨ ol´ese (soft hibainjekt´al´as6 ): mdadm --fail t¨ omb eszk¨ oz Hib´ as vagy tartal´ek eszk¨ oz kiv´etele a t¨ ombb˝ ol: mdadm --remove t¨ omb eszk¨ oz T¨omb teljes le´ all´ıt´ asa: mdadm --stop t¨ omb Ahhoz, hogy az egyszer l´etrehozott t¨ omb¨ ok le´all´ıt´as ut´an u ´ jraind´ıthat´oak legyenek, illetve az oper´aci´ os rendszer u ´ jraind´ıt´ asa ut´an automatikusan fel´ep¨ uljenek egy konfigur´aci´ os f´ajlba (/etc/mdadm.conf) kell bele´ırni a t¨ omb adatait, mindenekel˝ott az egyedi azonos´ıt´oj´ at (UUID). Egy bejegyz´es ´ıgy n´ez ki: ARRAY /dev/md0 level=raid1 num-devices=2 UUID=5e7e8a70:503417e0:25c6f0a3:1617215c A k¨ovetkez˝o utas´ıt´ as automatikusan el˝oa´ll´ıtja a bejegyz´eseket az ´eppen akt´ıv raid t¨ omb¨ okr˝ol, ezeket csak hozz´ a kell f˝ uzni a /etc/mdadm.conf v´eg´ehez: mdadm --detail --scan A m´ar nem l´etez˝o t¨ omb¨ okh¨ oz tartoz´o bejegyz´eseket k´ezzel el kell t´ avol´ıtani vagy ki kell kommentezni. A konfigur´ aci´ os f´ ajlban defini´alt ¨ osszes t¨ omb automatikus elind´ıt´asa: mdadm --assemble --scan A konfigur´ aci´ os f´ ajlban megadhat´ o riaszt´as is, ami a raid t¨ omb¨ ok ´allapotv´altoz´ asair´ol ´ertes´ıt´est k¨ uld. Ez t¨ ort´enhet e-mailben: MAILADDR e-mail c´ım Vagy tetsz˝ oleges program megh´ıv´ as´ aval: PROGRAM a megh´ıvand´ o program teljes el´er´esi u ´tvonala A program lehet ak´ ar shell script is, ´ıgy tetsz˝ oleges monitoroz´ o rendszerhez k¨onnyen illeszthet˝oek az md riaszt´ asai. Fontos, hogy v´egrehajt´ asi jogosults´ag legyen a f´ajlon. A program h´ arom param´etert kap, amiben szerepel az esem´eny jellege, az ´erintett t¨ omb, illetve az ´erintett eszk¨ oz neve. 6 Nem felt´ etlen¨ ul teszi t´ enylegesen el´ erhetetlenn´ e az eszk¨ oz tartalm´ at, csak hib´ asnak jel¨ oli, hogy az md rendszer kezdje el a helyre´ all´ıt´ ast. Ez azt jelenti, hogy pl. egy RAID-0 t¨ ombb˝ ol egy eszk¨ oz hib´ asnak jel¨ ol´ ese hat´ astalan lesz.
11
8.
Logikai k¨ otetkezel´ es Linux alatt, LVM2
A logikai k¨otetek kezel´es´ere az lvm parancs szolg´ al. Az lvm tov´abbi alparancsokat tartalmaz az egyes m˝ uveletek elv´egz´es´ere, ezeket az lvm help-el k´erdezhetj¨ uk le. Minden alparancs tov´abbi param´eterez´est ig´enyel, ezekr˝ol seg´ıts´eget a k¨ovetkez˝ok´eppen kaphatunk: lvm alparancs --help. Az al´abbiakban csak n´eh´any alapvet˝o parancs ker¨ ul ismertet´esre, az LVM2 ezekn´el l´enyegesen t¨ obb szolg´ altat´ ast ´es param´eterez´esi lehet˝os´eget ny´ ujt. List´az´asok: • pvs - fizikai k¨otetek list´ az´asa • vgs - k¨otetcsoportok list´ az´asa • lvs - logikai k¨otetek list´ az´asa R´eszletes inform´aci´ o lek´erdez´ese: • pvdisplay - fizikai k¨otet lek´erdez´ese • vgdisplay - k¨otetcsoport lek´erdez´ese • lvdisplay - logikai k¨otet lek´erdez´ese L´etrehoz´as: • pvcreate eszk¨ oz - fizikai k¨otet l´etrehoz´asa • vgcreate k¨ otetcsoport neve fizikai k¨ otet eszk¨ oz¨ ok - k¨otetcsoport l´etrehoz´asa. Opcion´alisan megadhat´ o az allok´aci´ os egys´eg (extent) m´erete a --physicalextentsize m´eret param´eterrel. • lvcreate k¨ otetcsoport neve - logikai k¨otet l´etrehoz´asa. Meg kell adni a k´ıv´ ant m´eretet: --size m´eret. Opcion´alisan megadhat´ o a logikai k¨otet neve: --name n´ev, en´elk¨ ul egy alap´ertelmezett nevet kap. T¨orl´es: • pvremove eszk¨ oz - fizikai k¨otet fejl´ec elt´ avol´ıt´asa az eszk¨ ozr˝ ol • vgremove k¨ otetcsoport - k¨otetcsoport t¨ orl´ese • lvremove k¨ otetcsoport /logikai k¨ otetn´ev - logikai k¨otet t¨ orl´ese ´ eretez´esek, elemek hozz´ Atm´ aad´ asa, elv´etele: • pvresize --setphysicalvolumesize m´eret eszk¨ oz - fizikai k¨otet ´atm´eretez´ese • vgextend k¨ otetcsoport fizikai k¨ otetek - u ´ j fizikai k¨otet hozz´ aad´as a k¨otetcsoporthoz • vgreduce k¨ otetcsoport fizikai k¨ otetek - Fizikai k¨otet elt´ avol´ıt´asa a k¨otetcsoportb´ol • lvresize --size m´eret k¨ otetcsoport /logikai k¨ otetn´ev - logikai k¨otet ´atm´eretez´ese • lvextend, lvreduce - az lvresize speci´ alis esetei (n¨oveszt´es, zsugor´ıt´as) A legegyszer˝ ubb LVM fel´ep´ıt´esi m˝ uveletsor a k¨ovetkez˝o: 1. Fizikai k¨otetek l´etrehoz´asa 2. K¨otetcsoport l´etrehoz´asa a fizikai k¨otetb˝ol 3. Logikai k¨otetek l´etrehoz´asa a k¨otetcsoportban.
12
A logikai k¨otetek a /dev/mapper k¨onyvt´ar alatt tal´ alhat´oak meg k¨ otetn´ev -k¨ otetcsoportn´ev form´aban, ugyan´ ugy haszn´alhat´ oak, mint b´ armely m´as part´ıci´o. Ellent´etben a hagyom´ anyos particion´al´asi szok´ assal, ahol a part´ıci´ok ´altal´ aban a rendelkez´esre ´all´o helyet teljes eg´esz´eben kit¨oltik ´es a szabad hely a f´ajlrendszerben jelenik meg, logikai k¨otetkezel´esn´el szok´ asos a k¨otetcsoportban mindig valamennyi allok´alatlan helyet kihagyni, sz¨ uks´eg ¨ eset´en a logikai k¨otetek m´eret´et n¨ ovelni. Ugyelni kell azonban arra, hogy a f´ajlrendszerek hajlamosak t¨ oredez´esre (jelent˝ os teljes´ıtm´enycs¨okken´essel j´arhat), ha nagy tel´ıtetts´eg mellett pr´ob´alunk m˝ uveleteket v´egezni rajta. A logikai k¨otetek ´es a rajtuk l´ev˝ o f´ajlrendszerek m´eret´et m´eg azel˝ott aj´anlatos megn¨ovelni, hogy az 90% feletti tel´ıtetts´eget ´erne el.
9.
Hibainjekt´ al´ as
A hibainjekt´al´ as els˝osorban szoftverfejleszt´es, ezen bel¨ ul is a tesztel´es egyik fontos eszk¨ oze. C´elja, hogy sz´and´ekosan ´es reproduk´ alhat´ o m´odon tudjunk hib´as m˝ uk¨od´est el˝oid´ezni, hogy a hibakezel´es´ert felel˝ os k´odr´eszletek viselked´es´et ellen˝ orizhess¨ uk. Fontos, hogy a sz´amos - f˝oleg hardver eredet˝ u - hibajelens´eget szimul´ alni kell, mert a t´enyleges hibaok kiv´ alt´ asa neh´ez, esetleg az eszk¨ oz fizikai t¨ onkret´etel´evel lenne csak lehets´eges. A Linux kernel is rendelkezik be´ep´ıtett hibainjekt´al´asi lehet˝os´eggel, melyet ford´ıt´asi id˝oben kell enged´elyezni, ´es a ford´ıt´ ast debug szimb´ olumok megtart´ as´aval kell v´egezni. Ilyen m´odon ford´ıtott kernelt ´eles rendszerekben nem tal´ alunk, mert m´erete l´enyegesen nagyobb egy norm´alis m´odon ford´ıtott kerneln´el, a teljes´ıtm´enye is rosszabb lehet. A hibainjekt´al´ asi be´ all´ıt´ asokat egy speci´ alis (debugfs) f´ajlrendszerb˝ol v´egezhetj¨ uk. Ez, hasonl´oan a proc vagy sys f´ ajlrendszerhez, olyan speci´ alis f´ajlokb´ ol ´all, amik valamilyen kernelen bel¨ uli adatszerkezetet tesznek k´ıv¨ ulr˝ ol el´erhet˝ov´e. Nincs m¨og¨otte fizikai t´ arol´oeszk¨oz (ez´ert a none kulcssz´o). A debugfs-t a k¨ovetkez˝ok´eppen lehet felcsatolni: mount -t debugfs none k¨ onyvt´ ar neve Blokkos eszk¨ oz¨ok m˝ uk¨ od´es´ebe t¨ ort´en˝o hibainjekt´al´as a fail make request interf´esz haszn´alat´aval val´os´ıthat´ o meg. Ez az adott eszk¨ oz¨on v´egzend˝o minden rendszerh´ıv´ ast ´erinti, minden esetben hibajelz´es lesz a visszat´er´esi ´ert´ek. Szelekt´ıv hib´az´ast (pl csak read() vagy write()), vagy megv´ alasztott t´ıpus´ u hibajelz´est, esetleg hibajelz´es n´elk¨ uli ,,csendes” hibajelens´eget csak felhaszn´al´oi m´od´ u hibainjektorral (Systemtap7 ) lehet megval´os´ıtani, ezt itt most nem t´ argyaljuk. Blokkos eszk¨ oz m˝ uk¨ od´es´ebe hiba injekt´ al´asa a k¨ovetkez˝o ´ert´ekek be´ all´ıt´as´at ig´enyli (felt´etelezve, hogy a debugfs-t a /debug k¨onyvt´ ar al´a csatoltuk): • /debug/fail make request/interval - be´ all´ıtja, hogy h´ any m˝ uveletenk´ent t´erjen vissza hib´ aval. Alap´ertelmezetten 1, minden m˝ uveletn´el hib´ azik. • /debug/fail make request/probability - az el˝ofordul´ asi val´osz´ın˝ us´eget ´all´ıtja sz´azal´ekban 0-100 k¨oz¨ott. Az el˝oz˝ovel egy¨ utt haszn´alva sz´eles tartom´anyban lehet ´all´ıtani a hib´ ak gyakoris´ ag´at. • /debug/fail make request/times - meghat´arozza, hogy ¨osszesen h´ anyszor injekt´ aljon hib´ at rendszerh´ıv´ asba. -1-es ´ert´ek azt jelenti, hogy korl´atlan sokszor. • /debug/fail make request/verbose - minden egyes hiba injekt´ al´asakor a kernel logba ker¨ ul˝o u ¨ zenet r´eszletess´eg´et ´ all´ıtja: 2 - teljes h´ıv´ asi l´anc, 1 - egysoros u ¨ zenet, 0 - semmi Hogy a hibainjektor mely eszk¨ oz¨ok eset´en m˝ uk¨odj¨on a k¨ovetkez˝o f´ajlba ´ırt 1” ´ert´ekkel ” v´alaszthatjuk ki: /sys/block/blokkos eszk¨ oz neve/make-it-fail 7 http://sourceware.org/systemtap/index.html
13
10.
iSCSI target konfigur´ al´ asa Linux alatt
Linux alatt a legelterjedtebb iSCSI target (c´elpont, szerver) implement´ aci´ o az iSCSI Enterprise Target (iet ). Ennek feladata, hogy helyi blokkos eszk¨ oz¨okh¨ oz ny´ ujtson hozz´ af´er´est h´ al´ozaton kereszt¨ ul csatlakoz´o initiatorok (kezdem´enyez˝ok, kliensek) sz´am´ ara. H´ arom f˝o komponensb˝ol ´all: • Kernel m´od´ u szerver - alacsony szint˝ u blokkos IO m˝ uveletek gyors´ıt´as´ara • Felhaszn´al´ oi m´od´ u szerver - a h´ al´ozati kapcsolatok kezel´ese, iSCSI protokoll implement´ aci´ o • Felhaszn´al´ oi adminisztr´aci´ os seg´edprogram (ietadm) - ennek seg´ıts´eg´evel konfigur´alhat´o, ak´ ar m˝ uk¨ od´es k¨ozben is Legegyszer˝ ubb esetben a /etc/ietd.conf alatti konfigur´aci´ os ´allom´anyban adjuk meg az iet a´ltal kiaj´ anlott iSCSI c´elpontokat, az iscsi-target ind´ıt´o scriptje ez alapj´an konfigur´alja fel a szervert. Itt csak az alapszintaxis ker¨ ul ismertet´esre, ami a target kiaj´anl´ ashoz elegend˝o, a t¨ obbi - els˝osorban teljes´ıtm´eny ´es hozz´ af´er´esi jogosults´agokat szab´alyoz´o - param´eterr˝ ol az iet dokument´ aci´ oja r´eszletes ismertet´est tartalmaz. Minden target kell, hogy rendelkezzen egy kvalifik´alt n´evvel, aminek a szintaxisa hasonl´ıt a domain nevek´ehez. P´eld´ aul: iqn.2009-03.local.ftslab.host:sandboxvolume 1. Az els˝o tag k¨otelez˝oen iqn az iSCSI qualified name r¨ovid´ıt´ese. 2. Ezt egy d´ atum k¨oveti, ami regisztr´aci´ os id˝opontot jel¨ol. K¨ ulvil´aggal nem ´erintkez˝o z´ art h´ al´ ozatban ez tetsz˝ oleges lehet. 3. A g´ep domain neve, a DNS-n´el megszokotthoz k´epest ford´ıtott sorrendben, az ´altal´ anost´ol a konkr´et fel´e haladva. Megjegyzend˝o, hogy nem felt´etlen¨ ul kell ennek ¨osszhangban lennie a g´ep t´enyleges DNS-ben megadott domain nev´evel, de egyszer˝ us´ıti az azonos´ıt´ast. 4. Kett˝ ospont ut´an a g´epen bel¨ uli c´elpont azonos´ıt´oja. Egy g´epen bel¨ ul tetsz˝ olegesen sok c´elpont is lehet defini´alva. A c´elpontot is lehet hierarchikus, pontokkal elv´alasztott kvalifik´alt n´evvel ell´atni. Fontos m´eg megjegyezni, hogy egy c´elponton bel¨ ul tov´abbi logikai egys´egek (LUN - Logical Unit Number ) defini´alhat´ ok. Minden c´elpontnak legal´ abb egy logikai egys´eget kell tartalmaznia. Egy logikai egys´eghez a k¨ovetkez˝oket kell megadni: • A logikai egys´eg sz´ ama (LUN) • A kiaj´ anlott blokkos eszk¨ oz vagy f´ajl el´er´esi u ´ tvonala. Az itt megadott f´ajl tartalm´at fogj´ak a c´elponthoz csatlakoz´o kezdem´enyez˝ok olvasni, ´ırni. • A hozz´ af´er´es m´od. • Opcion´alis SCSI sorozatsz´ am (serial number. L´enyeg´eben egy tetsz˝ oleges string lehet. C´elszer˝ u minden c´elpontnak egy egyedi sorozatsz´ amot megadni.8 A hozz´ af´er´esi m´odok lehetnek: • fileio - az iet egyszer˝ u f´ ajl API-t haszn´alja. Regul´aris f´ajlok eset´en mindenk´eppen ezt kell haszn´alni, blokkos eszk¨ oz¨okn´el is haszn´alhat´o. Szerver oldali cache-el´est biztos´ıt, szekvenci´alis ´ atvitel gyors, viszont a v´eletlen el´er´esek n´emileg lassabbak. 8 Egyes iSCSI initiatorok, pl. a VMware ESX Server u ´gy ´ ertelmezi a sorozatsz´ amot, hogyha t¨ obb azonos sorozatsz´ am´ u LUN-t l´ at, akkor felt´ etelezi, hogy ezek mind val´ oj´ aban egyazon t´ arhelyet jel¨ olik, csak t¨ obb k¨ ul¨ onb¨ oz˝ o u ´tvonalon ´ erhet˝ oek el (multipath hibat˝ ur´ es). Ha nincs megadva sorozatsz´ am vagy t¨ obb LUN azonos sorozatsz´ ammal rendelkezik, az helytelen m˝ uk¨ od´ est eredm´ enyezhet.
14
• blockio - alacsony szint˝ u blokkos hozz´ af´er´est haszn´al. Csak blokkos eszk¨ oz¨okn´el alkalmazhat´ o. Megker¨ uli a kernel cache alrendszer´et, ennek eredm´enyek´eppen az elsz´ort (teh´ at rosszul cache-elhet˝ o) v´eletlen el´er´esek felgyorsulnak. • nullio - nem t´ arol el semmit, olvas´asn´ al v´eletlen adatokat ad vissza. Tesztel´esi c´elokat szolg´ al. Egy c´elpont defin´ıci´oja teh´ at ´ıgy n´ezhet ki: Target iqn.2007-09.local.ftslab.host:sandboxvolume Lun 0 Path=/dev/mapper/StoreVG-SandboxVol,Type=fileio,ScsiSN=SERIAL-00007 ¨ Ugyelni kell arra, hogy a LUN defin´ıci´oj´ aba ne helyezz¨ unk el u ¨ res (whitespace) karaktereket a vessz˝ok k¨oz´e, tov´abb´a ne t¨ orj¨ uk meg a sort sehol. Sajnos az iet nem ad hiba¨ uzenetet hib´as szintaktik´ aj´ u f´ ajl eset´en, figyelmen k´ıv¨ ul hagyja a hib´as sorokat.
11.
iSCSI initiator konfigur´ al´ asa Linux alatt
A h´ al´ozati t´ arhelyet ig´enybevev˝ o eszk¨ oz¨on bel¨ ul az iSCSI initiator feladata csatlakozni a c´elpontokhoz ´es az ´ altala rendelkez´esre bocs´atott t´arhely, haszn´alat´at biztos´ıtani. A Linux alatt eredetileg t¨ obb egym´ ast´ ol f¨ uggetlen¨ ul fejlesztett iSCSI initiator implement´ aci´ okat n´eh´any ´eve egyes´ıtett´ek egy k¨oz¨os projektbe, melynek neve open-iscsi. Az open-iscsi is t¨ obb komponensb˝ ol ´all: • kernel m´od´ u iSCSI driver - ez felel˝os a blokkos eszk¨ oz¨ok´ert ´es az iSCSI protokoll adatforgalmat megval´ os´ıt´ o r´esz´e´ert • felhaszn´al´ oi m´od´ u daemon (iscsid) - az iSCSI kapcsolatok karbantart´as´a´ert, felder´ıt´es´e´ert felel˝ os szerver folyamat • felhaszn´al´ oi m´od´ u konfigur´ aci´ os seg´edprogram (iscsiadm) - ennek seg´ıts´eg´evel konfigur´ alhat´ o Az iscsid folyamatnak futnia kell miel˝ ott az iscsiadm-ot haszn´aln´ ank, ugyanis val´oj´ aban az iscsid v´egez minden m˝ uveletet, az iscsiadm csak egy parancssoros fel¨ uletet biztos´ıt ehhez. Egy iSCSI k¨otet felcsatol´asa k´et l´ep´esb˝ ol ´all: 1. Az iSCSI szerveren defini´alt c´elpontok felder´ıt´ese 2. Egy kiv´ alasztott logikai egys´egre (LUN) bel´ep´es, melynek sor´an l´etrej¨on a lok´alis g´epen egy u ´ j blokkos eszk¨ oz A bel´ep´es ´es felder´ıt´es a k¨ovetkez˝ok´eppen v´egezhet˝o el. (a portsz´ amot meg kell adni, alap´ertelmezetten az iscsi-target portja 3260): iscsiadm --mode discovery --type sendtargets --portal IP c´ım:portsz´ am A felder´ıtett c´elpontok list´ aj´ at megtekinthetj¨ uk: iscsiadm --mode node Bel´ep´es egy c´elpontra: iscsiadm --mode node --targetname c´elpont kvalifik´ alt neve --portal IP :port --login Kil´ep´es a c´elpontr´ ol: iscsiadm --mode node --targetname c´elpont kvalifik´ alt neve --portal IP :port --logout A c´elpont r´eszletes adatainak megjelen´ıt´ese: iscsiadm --mode node --targetname c´elpont kvalifik´ alt neve --portal IP :port Fontos megjegyezni, hogy a felder´ıt´es egy lok´alisan t´ arolt list´ at hoz l´etre a c´elpontokr´ ol, teh´at akkor is sz¨ uks´eg van egyszer a felder´ıt´es l´ep´esre, ha en´elk¨ ul is tudjuk a c´elpont nev´et. A bel´ep´es ut´an a dmesg paranccsal tekinthet˝ o meg a kernel log tartalma, aminek a v´eg´en l´athat´o, hogy u ´ jonnan megjelent egy blokkos eszk¨ oz, ami a soron k¨ovetkez˝o SCSI diszk nevet (/dev/sda, sdb stb.) kapta meg. 15
12.
iSCSI initiator konfigur´ al´ asa Windows alatt
K¨ ul¨onf´ele Windows oper´ aci´ os rendszerek is felk´esz´ıthet˝oek iSCSI kezdem´enyez˝o szerepre. Ehhez egy k¨ ul¨on meghajt´ oprogramot kell telep´ıteni a Microsoft oldal´ ar´ol 9 . A telep´ıt´es ut´an a iSCSI kezdem´enyez˝o konfigur´aci´ os fel¨ ulete el´erhet˝ov´e v´alik a start men¨ ube telep¨ ult alkalmaz´as ikon vagy a vez´erl˝opult megfelel˝ o elem´enek ind´ıt´asa ut´an. Egy iSCSI c´elpontra becsatlakoz´as ´es a t´ arhely haszn´alatbav´etel´enek a l´ep´esei a k¨ovetkez˝ok: • Control panel alatt iSCSI initiator megnyit´asa • A General f¨ ul¨on ´ all´ıthat´ o az initiator neve, nem sz¨ uks´eges megv´ altoztatni. • A Discovery f¨ ul¨on a Target Portals sorolja fel a c´elpontokkal rendelkez˝o g´epeket. Ide kell felvenni az iSCSI c´elpont IP c´ım´et az Add gombbal. • A felv´etel ut´an a Targets f¨ ul¨on megjelennek az im´ent felvett g´epen defini´alt c´elpontok, egyel˝ ore inakt´ıv ´ allapotban. • A Log On... gomb seg´ıts´eg´evel l´ephet¨ unk be a c´elpontra. Az Automatically Restore this Connection when the System Starts jel¨ol˝on´egyzettel ´all´ıthat´o be, hogy erre a c´elpontra minden rendszerind´ıt´ askor automatikusan be akarunk-e l´epni. Ha kiv´ alasztottuk, akkor az el˝ oz˝o ablak Persistent Targets f¨ ule alatti list´ aba beker¨ ul. A bel´ep´es v´egezt´evel a c´elpont connected ´ allapotba ker¨ ul. • V´egezet¨ ul ki kell jel¨ oln¨ unk a kapcsol´odott c´elpontot helyi k¨otetnek, hogy a Windows meghajt´ ok´ent kezelni tudja, ezt a Bound Volumes/Devices f¨ ul alatt tehetj¨ uk meg. Ez legegyszer˝ ubben a Bind All gombbal v´egezhet˝o el. Az iSCSI c´elpontot ez´altal meghajt´ ok´ent kezelhetj¨ uk, ´am ahhoz, hogy meghajt´ o bet˝ ujelet kapjon, illetve f´ ajlokat t´ arolhassunk rajta particion´ alni kell. Windows alatt erre a MMC (Microsoft Management Console) egyik be´ep¨ ul˝o modulja szolg´ al. A particion´al´as l´ep´esei: • Az mmc elind´ıt´ asa (Run... men¨ ub˝ ol) • File men¨ u alatt Add/Remove Plugins... • Add... majd a list´ ab´ol a Disk Management kiv´ alaszt´asa • A kiv´ alaszt´as elfogad´ asa Ok-val. Jobb oldalt a Disk Management (Local) pontra navig´alva a lemezkezel˝o eszk¨ oz kezel˝ofel¨ ulet´ehez ´erkez¨ unk. Az u ´ j ”lemez” v´arhat´ oan m´eg inicializ´ alatlan ´allapotban lesz, teh´at a part´ıci´os t´ abl´ ak adatszerkezete m´eg nincs kialak´ıtva az els˝o blokkj´aban. Az inicializ´ al´ast a jobb gombbal felbukkan´o men¨ ub˝ ol v´alaszthatjuk ki. Ezut´ an l´etrehozhatunk rajta u ´ j part´ıci´ot, az u ¨ res ter¨ uleten v´egzet jobb kattint´ assal felbukkan´o men¨ ub˝ ol ind´ıtva. Az u ´ j part´ıci´o var´azsl´oban bet˝ ujelet rendelhet¨ unk hozz´ a, ´es egyben a f´ ajlrendszert is l´etrehozhatjuk rajta. Fontos a Quick Format jel¨ol˝on´egyzet szerepe, ha nincs bejel¨ olve akkor a f´ ajlrendszer l´etrehoz´asa el˝ott az eszk¨ oz teljes tartom´any´anak ´ır´ as ´es olvas´as ellen˝ orz´ese megt¨ ort´enik, az adathordoz´o hib´ainak felder´ıt´ese ´erdek´eben. Ez igen hossz´ u folyamat, iSCSI virtu´alis meghajt´ o eset´en eltekinthet¨ unk t˝ ole. A folyamat v´egezt´evel az kijel¨ olt bet˝ ujellel ell´atott meghajt´ o ´eppen u ´ gy haszn´alhat´o f´ajlok t´ arol´as´ara, mint egy fizikai merevlemez.
9 A seg´ edlet ´ır´ asakor ezen a c´ımen volt let¨ olthet˝ o: http://www.microsoft.com:80/downloads/details.aspx?familyid=12cb3c1a15d6-4585-b385-befd1319f825&displaylang=en
16