Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms Maarten van Steen1 1 VU
Kitlei Róbert 2
Amsterdam, Dept. Computer Science 2 ELTE Informatikai Kar
11. rész: Elosztott fájlrendszerek 2015. május 24.
Tartalomjegyzék Fejezet 01: Bevezetés 02: Architektúrák 03: Folyamatok 04: Kommunikáció 05: Elnevezési rendszerek 06: Szinkronizáció 07: Konzisztencia & replikáció 08: Hibaturés ˝ 10: Objektumalapú elosztott rendszerek 11: Elosztott fájlrendszerek 12: Elosztott webalapú rendszerek
Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
2 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Elosztott fájlrendszerek
Cél: a fájlrendszer átlátszó elérését biztosítani távoli kliensek számára. 1. File moved to client Server
Client
Client
Server Old file New file
Requests from client to access remote file
File stays on server
Távoli hozzáférési modell
Maarten van Steen, Kitlei Róbert
2. Accesses are done on client
3. When client is done, file is returned to
Feltöltés/letöltés modell
Elosztott rendszerek
3 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Példa: NFS architektúra Az NFS (Network File System) elosztott fájlok távoli elérését teszi ˝ lehetové. Az alkalmazások a helyi VFS (Virtual File System) réteget érik el, ez biztosítja a távoli elérés átlátszóságát. Client
Server
System call layer
System call layer
Virtual file system (VFS) layer
Virtual file system (VFS) layer
Local file system interface
NFS client
NFS server
RPC client stub
RPC server stub
Local file system interface
Network
Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
4 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
NFS fájlmuveletek ˝ Muvelet ˝ Create Create Link Symlink Mkdir Mknod Rename Remove Rmdir Open Close Lookup Readdir Readlink Getattr Setattr Read Write
Verzió v3 v4 v3 és v4 v3 v3 v3 v3 és v4 v3 és v4 v3 v4 v4 v3 és v4 v3 és v4 v3 és v4 v3 és v4 v3 és v4 v3 és v4 v3 és v4
Maarten van Steen, Kitlei Róbert
Leírás Hagyományos fájl létrehozása Nem-hagyományos fájl létrehozása (hagyományos: Open) Valódi csatolás (hard link) létrehozása fájlra Szimbolikus csatolás (soft link, symlink) létrehozása fájlra Alkönyvtár létrehozása Különleges fájl létrehozása Fájl átnevezése ˝ Fájl eltávolítása a fájlrendszerbol Üres könyvtár eltávolítása Fájl megnyitása Fájl bezárása Fájl megkeresése név szerint Könyvtár tartalmának lekérése Szimbolikus csatolás elérési útvonalának olvasása Fájl tulajdonságainak lekérdezése Egy vagy több tulajdonság írása Fájl tartalmának olvasása Fájl adatainak írása Elosztott rendszerek
5 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Fürt (cluster) alapú fájlrendszerek Nagy fájlrendszerek esetén a kliens-szerver alapú megközelítés nem elég jó ⇒ a fájlokat csíkokra bontjuk (striping), így a részeiket párhuzamosan érjük el. Ennek célja a rendszer gyorsítása és biztonságosabbá tétele. File block of file a
a
b
a
b
a
c
e
d c
b
File block of file e
e
d
e
d
c
Whole-file distribution
a
b
c d
e
a c
a
b c
d e
b
d e
File-striped system Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
6 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Példa: Google File System file name, chunk index GFS client
Master contact address Instructions
Chunk-server state
Chunk ID, range Chunk server
Chunk server
Chunk server
Linux file system
Linux file system
Linux file system
Chunk data
A fájlt 64 MB méretu˝ részekre (chunk) bontjuk, és több szerveren elosztva, replikálva tároljuk. A központ (master) csak azt tárolja, melyik szerver melyik részek ˝ ⇒ I/O terhelése alacsony felelose ˝ A szerverek elsodleges másolaton alapuló replikációs protokollt használnak; a központot ez nem terheli Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
7 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
RPC fájlrendszerekben ˝ Egy lehetoség távoli fájlrendszerek megvalósítására, ha távoli eljáráshívások segítségével végezzük a fájlmuveleteket. ˝ Ha a távoli gép elérése költséges, alternatív megoldásokra van szükség, pl. az NFSv4 támogatja több muvelet ˝ összekombinálását egy hívásba. Client
Server
Client
Server LOOKUP OPEN READ
LOOKUP
Lookup name
Lookup name
Open file READ
Read file data Read file data
Time
Time
(a)
Maarten van Steen, Kitlei Róbert
(b)
Elosztott rendszerek
8 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Példa: RPC a Coda fájlrendszerben Ha replikált fájlokkal dolgozunk (pl. a Coda kliensei cache-elhetik a fájlokat), akkor a kérések sorrendjének kikényszerítése ((a) ábra) túlságosan költséges lehet, mert ha összeomlik egy kliens, akkor csak ˝ hosszú timeout után jöhet a következo. Client
Client Invalidate
Reply
Server
Invalidate
Invalidate
Reply
Server
Invalidate
Reply
Client
Reply
Client Time
Time
(a)
Maarten van Steen, Kitlei Róbert
(b)
Elosztott rendszerek
9 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
A fájlmegosztás szemantikája Ha egyszerre több kliens is hozzáférhet egy fájlhoz, a konkurens írási és olvasási muveletek ˝ lehetséges végrehajtási sorrendjeit és a kijöheto˝ eredményeket (összefoglalva: a rendszer szemantikáját) rögzíteni kell.
Client machine #1 a b Process A
a b c 1. Read "ab"
2. Write "c"
File server Original file a b
Single machine a b Process A
3. Read gets "ab"
a b c
Client machine #2 Process B
1. Write "c"
a b Process B
2. Read gets "abc" (a)
Maarten van Steen, Kitlei Róbert
(b) Elosztott rendszerek
10 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
A fájlmegosztás szemantikája Sokfajta szemantika jöhet szóba. Megváltoztathatatlan fájlok: a fájlok tartalmát nem lehet módosítani létrehozás után; ez a modell csak ritkán használható UNIX szemantika: az olvasási muveletek ˝ mindig a legutolsó írási muvelet ˝ eredményét adják ⇒ a fájlból csak egy példányunk lehet ˝ o˝ (a) ábra) az elosztott rendszerben (az eloz Tranzakciós szemantika: a rendszer minden fájlra külön biztosít tranzakciókat Munkamenet szemantika: onnantól, hogy a kliens megnyitja a fájlt, odáig, amíg vissza nem írja, az írási és olvasási muveletei ˝ csak saját maga számára látszanak (gyakori választás a ˝ o˝ (b) ábra) rendszerekben; az eloz
Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
11 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Példa: fájlmegosztás Coda rendszerben A Coda fájlrendszer munkamenetei tranzakciós szemantikát valósítanak meg. A megnyitott fájl tartalma átmásolódik a kliensre; ha más módosítja a fájlt, arról a kliens értesítést kap. Ha a kliens csak olvas (pl. az ábrán SA ), akkor folytathatja a muködését ˝ – úgy tekintjük, hogy a tranzakció, amelyet végez, már korábban lezárult. Session S A Client Open(RD)
Invalidate
File f
Close Server Open(WR)
File f
Close
Client Session S B Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
Time
12 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Konzisztencia és replikáció A modern elosztott fájlrendszerekben a kliensoldali gyorsítótárazás ˝ szerepe foleg a teljesítmény növelése, a szerveroldali replikáció célja a hibaturés ˝ biztosítása. ˝ A kliensek tárolhatják a fájlokat (vagy részeket belolük), és a szerver ˝ ˝ kiértesíti oket, ha ezt a jogot visszavonja tolük ⇒ a szerverek általában állapotteljesek. 1. Client asks for file Client
2. Server delegates file
Server Old file
Local copy
3. Server recalls delegation Updated file 4. Client sends returns file
Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
13 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Példa: kliensoldali gyorsítótárazás Coda rendszerben
Session S A
Session SA
Client A Open(RD)
File f
Server
Invalidate (callback break)
Close Open(RD)
File f
Close
File f OK (no file transfer)
Open(WR) Close
Open(WR)
Close
Client B Session S B
Session S B
Time
A tranzakciós szemantika segítségével a teljesítmény tovább ˝ növelheto.
Maarten van Steen, Kitlei Róbert
Elosztott rendszerek
14 / 15
11.1 Architektúra
11.3 Kommunikáció
11.5 Szinkronizáció
11.6 Konzisztencia és replikáció
11.7 Fault Tolerance
Rendelkezésre állás növelése P2P rendszerekben Sok P2P alapú, decentralizált fájlrendszer létezik. Ezekben probléma lehet, ha túl gyorsan változik a tagság (churn), mert kiléphet akár egy fájlt tartalmazó összes csúcs. Ennek kivédéséhez replikálhatjuk a fájljainkat (arányát jelölje rrep ). Másik megközelítés: erasure coding: az F fájlt bontsuk m részre, és minden szerverre tegyünk n részt, ahol n > m. A replikációs arány ekkor rec = n/m. Ez az arány általában sokkal kisebb, mint rrep , ha a rendszerünk változékony. 2.2 rrep rec 2.0 1.8 1.6 1.4 0.2 Maarten van Steen, Kitlei Róbert
0.4
0.6
Elosztott rendszerek
0.8 1 Node availability 15 / 15