Hajusfailisüsteemid Näide: AFS Näide: NFS Näide: SMB/CIFS Näide: Coda Näide: Intermezzo Näide: HDFS Näide: WebDAV Näide: 9P MEELIS ROOS 1
Andrew File System (AFS) Carnegie-Melloni ülikooli projekt tuhandete tööjaamade ühendamiseks Alates 1983. aastast, algselt 4.2BSD baasil Transarc DFS IBM Globaalne nimeruum Asukohast sõltumatu failide nimetamine, failide migreerimine Kliendipoolne puhverdamine Serverite replitseerimine töökindluse jaoks Autentimine Kerberosega Keeruline :) MEELIS ROOS 2
AFS Klientidel on oma lokaalne nimeruum (failisüsteemi juur, seadmed,...) Serverid kokku serveerivad globaalset nimeruumi Kliendid ja serverid jagunevad klastritesse, mis on üle WANi kokku ühendatud Töö tõstmine serverilt klientidele, suur plokisuurus (64 KiB) Klientide mobiilsus sama globaalne failipuu on nähtav kõigist masinatest Turvalisus autentimine + krüptitud kanal serverini Kaitse jaoks ACL id (Access Control Lists) Koosneb köidetest (volume), mis on ühendatud kokku suureks failipuuks MEELIS ROOS 3
AFS disainistrateegia Failid on väikesed Lugemisoperatsioon on palju sagedasem kui kirjutamisoperatsioon Järjestikune kasutamine on sage ja juhuslik kasutamine harv Enamust faile loeb ja kirjutab üks konkreetne kasutaja Faile kasutatakse hooti. Kui faili kasutati, on tõenäoline, et lähemas tulevikus kasutatakse seda uuesti. AFS töötab paremini failidega, mis vastavad ülaltoodud eeldustele. Faile, mida kirjutavad korraga mitu inimest (näiteks andmebaasid), ei saa läbi AFS kasutada. MEELIS ROOS 4
AFS realisatsioonid Klientmasinates programm Venus failisüsteemi kliendipoole realisatsioon Lisaks on tuumas open(), close() jms vaheltvõtmine Serverites jookseb Vice serverprogramm, kasutab opsüsteemi poolt pakutavat failisüsteemi salvestusruumina On ka teisi implementatsioone näiteks OpenAFS (IBM AFS avatud versioon), arla (sõltumatu vaba implementatsioon) MEELIS ROOS 5
AFS ehitus Andmete transport ja kliendi poolel puhverdamine toimub failikaupa Faili avamisel kopeeritakse terve fail kohalikul kettal asuvasse puhvrisse Puhvrist puhastatakse aegajalt vanu faile Faili identifitseerib 96-bitine failiidentifikaator (fid), kuid see ei paista kasutajale välja 32 bitti köite number 32 bitti faili number 32 bitti unikaalsuse tagamiseks (uniquifier) Serveri poolt juhitav koherentsuse haldamine MEELIS ROOS 6
NFS Sun i Network File System Iga arvuti võib olla nii klient kui server Kasutusel ONC RPC (SunRPC) Klient monteerib serveri mingi kataloogi oma lokaalsesse nimeruumi, sealt on see läbipaistvalt kasutatav Võib monteerida mitmest serverist tegelikult valitakse monteerimisel neist üks välja Olekuvaba server "Liim" paljude teiste failisüsteemide jaoks Replitseerimist ei toetata Failide lukustamist ei toetata MEELIS ROOS 7
NFS realisatsioon Kliendi pool on tuumas failisüsteemi draiver Serveri pool on nii kasutajataseme programme kui tuumas realiseeritud servereid Faile identifitseeritakse 32- või 64-bitise failipidemetega Eraldi RPC teenus failisüsteemi monteerimiseks tagastab jagatava failipuu juure pideme Kataloogi pideme abil saab sealt failide pidemeid teada Failipidemetega saab teha failioperatsioone NFS failipide vastab ligikaudu UNIXi failisüsteemide i-kirjele Kogu turvalisus töötab sellel, et klient ei suuda muude ressursside pidemeid ära arvata Osa autentimist (kasutajate eristamine) lasub kliendil MEELIS ROOS 8
Näide mõnedest NFS primitiividest lookup (dirfh, name) fh, status kataloogist faili leidmine getattr (fh) attr faili või kataloogi atribuutide lugemine read (fh, offset, count) attr, data faili lugemine rename (dirfh, name, todirfh, toname) status faili või kataloogi ümber nimetamine readdir (dirfh, cookie, count) entries tagastab kataloogis asuvate objektide nimekirja koos edasiste kirjete saamise küpsisega MEELIS ROOS 9
NFS 4 Olekut säilitav Ainult TCP Väiksem overhead UTF-8 nimed ACL (pääsuloendid, Windowsi stiilis) Parem turvalisus (kohustuslik Kerberos 5 ja GSS-API) Efektiivsem kliendipoolne puhverdamine: Lukustamine (ka mandatoorne) Reserveerimine Delegeerimine Replitseerimine ja migreerimine (nõrgalt spetsifitseeritud) NFS 4.1, pnfs, uued transpordidkihid MEELIS ROOS 10
SMB/CIFS IBM leiutis NetBIOS otsa Ajaloo jooksul palju dialekte, "liikuv sihtmärk" CIFS Windows NT4 kasutatav SMB dialekt Kasutab mitmeid erinevaid transpordikihte, tänapäeval TCP/IP Olekut säilitav Windowsi jaoks disainitud Samba Dfs "automounter" SMB otsas Globaalne failipuu paljude serverite failidega Asukohast sõltumatu nimeruum Migreerimine Replitseerimine MEELIS ROOS 11
SMB lisavõimalused Faili ja kirje tasemel lukustamine Failide ja kataloogide muutustest teavitamine Unicode tugi Lisaatribuutide (Extended Attributes) tugi Oplocks Üldine kaugsuhtlus: nimega torud, postkastid Autentimine nii kasutaja kui share tasemel, domeenide tugi Trükkimine Võrgu sirvimine UNIX ühilduvus (failiatribuudid, õigused, seadmefailid, lingid) MEELIS ROOS 12
Coda Carnegie-Melloni ülikoolist, AFS2 järglane Disainieesmärgid: Ühenduseta töötamine (mobiilsetele klientidele) Suur jõudlus kliendipoolse puhverdamise tõttu Serverite replitseerimine Turvamudel autentimise, krüptimise ning pääsukontrolliga Töö jätkamine osade serverite ära kukkumisel Efektiivne võrguressursi kasutus Skaleeruvus Täpselt defineeritud semantika failide jagamisel, ka võrgukatkestuste korral MEELIS ROOS 13
Coda ehitus Kliendi poolel on tuumas failisüsteemi draiver Kliendi poolel on ka Venus vahemälu haldaja tuuma failisüsteemi ja võrgu vahel Venus suhtleb RPC abil serverprogrammiga (Vice) Kliendi tehtud muutused saadetakse faili sulgemisel kohe serverisse Kui serverisse saatmine ei õnnestu, logitakse muutusi kohapeal Osa faile on pidevalt puhverdatud, et nad ka ilma serverita kättesaadavad oleksid Faili identifitseerib võrgus kolmik 32-bitistest ID-dest (Fid): VolumeId, VnodeId ja Uniquifier (+ Realm alates versioonist 6.0) Täpne konfliktide avastamine, käsitsi lahendamine MEELIS ROOS 14
Intermezzo Disainieesmärgid Kõrge käideldavus Serverite replitseerimine Mobiilsed kliendid Suurte klastrite haldamine Ühendusteta töötamine Automaatne taastumine võrgukatkestustest Operatsioonide logimine InterSync sünkroniseerimissüsteem MEELIS ROOS 15
InterSync Tarkvara ja protokoll failisüsteemi sünkroniseerimiseks eri arvutite vahel Kasutatav nii eraldi polliva serverprogrammina kui tuumasisese failisüsteemidraiverina Failioperatsioonidest peetakse logifaili Server on HTTP server (standardne või spetsiaalne) Tüüpilised transaktsioonid on logifaili küsimine ja saatmine ning failide transport HTTP vahemälude (cache) kasutamise võimalus HTTP on tunneldatav muude torude sees, näiteks SSH turvalisuse tagamiseks MEELIS ROOS 16
Intermezzo: konfliktid Konflikte avastatakse faili pikkuse ja modifitseerimisaja järgi Nelja liiki konflikte: Name/Name Update/Remove Update/Update Rename/Rename Konfliktide lahendamise poliitikad: Mobiilne poliitika mobiilne masin on alati klient, serverist tulevad muutused on ülimad HA poliitika kõrgkäideldavusega serverite vahel, aktiivne server on prioriteetsem kui maaskäinu Taassünkroniseerimise poliitika juhuks, kui logid pole piisavad MEELIS ROOS 17
Hadoop Distributed File System Apache Hadoop raamistik MapReduce stiilis hajusrakenduste tegemiseks Kirjutatud Javas HDFS (Hadoop Distributed File System) hajus failisüsteem Hadoopi klastritele Ei realiseeri kogu POSIX semantikat, vaid ainult Hadoopi klastrites olulise osa, eelistatakse kiirust lisavõimalustele MEELIS ROOS 18
HDFS disainieeldused Eeldatakse riistvara tõrkeid Oluline pole juurdepääsu latents vaid summaarne läbilase voona (streaming) Suured andmemahud (failid terabaitideni, kümneid miljoneid faile) Koherentsus on lihtne üks kirjutaja, kord kirjutatakse ja korduvalt loetakse Lihtsam on kolida arvutusi andmete juurde kui andmeid arvutuste juurde Porditavus erinevate riist- ja tarkvaraplatvormide vahel on oluline MEELIS ROOS 19
HDFS disain metainfo Metaandmeid hoiab NameNode NameNode RAM maht kui põhiline skaleerimist takistav tegur Üks kuni mitu transaktsioonilogiga koopiat kohalikel ketastel Checkpoint noded teevad NameNode metaandmete seisust perioodiliselt koopia Backup node teda on kuni üks, hoiab sünkroniseeritud koopiat NameNode seisust MEELIS ROOS 20
HDFS disain andmed ise Andmeid hoiavad DataNode d Replitseeritakse, soovitavalt rack ide vahel (süsteem teab iga sõlme racki ID-d) NameNode otsustab, kuhu koopiad tekitada (kirjutaja juurde, erinevatesse rackidesse, ühtlaselt laiali) Rebalancer jõuga ümber paigutaja juhuks kui NameNode otsused on ajale jalgu jäänud Andmete kontrollsummad igas koopias MEELIS ROOS 21
HDFS protokoll RPC-põhine, klient NameNode, klient DataNode, DataNode NameNode Suur plokisuurus (tüüpiliselt 64M), puhverdamine kohalikku failisüsteemi Heartbeat ja Blockreport perioodilised teated DataNodedelt Java API + WebDAV protokoll MEELIS ROOS 22
WebDAV WebDAV Web-based Distributed Authoring and Versioning Komplekt HTTP laiendusi failide haldamiseks üle HTTP HTTP meetodid GET, PUT, POST, PROPFIND, PROPPATCH, DELETE, COPY, MOVE, MKCOL, SEARCH, LOCK, UNLOCK Objektidel on omadused (property) Elusad (server käitub nende järgi) Surnud (server ainult salvestab neid) Lukustamine (jagatud ja välistav) MEELIS ROOS 23
9P Plan9 võrguprotokoll (uuem variant kannab nime 9P2000) Plan9: kõik ressursid on failid. Failid on ka üle võrgu kasutatavad Kasutatav ka IPC jaoks, näiteks aknahalduriga suhtlemisel Võrgusuhtluse jaoks IL protokoll Töökindel järjestatud paketiedastus IP peal TCP kõrval Kiire, vähe overheadi Adapteeruvad taimaudid MEELIS ROOS 24