Distribuerade filsystem Hur fungerar det? Problem? Lösningar!
DFS kännetecken Ett distribuerat filsystem medger transparent access av filsystem på andra datorer än den man är på. LAN CPU
Problem Vad händer om filservern kraschar? Eller vice versa? Vad händer om vi har många klienter? Prestanda Cache? Om cache hur behåller man konsistens hos filerna på servern
Enkelt DFS Novell Netware, Mosaic Server +konsistens cache -långsamt över LAN Read Write -hög last på LAN -Server flaskhals data done A B
NFS (Sun Network File System) systemanrop (open,read,write,close) VFS interface VFS interface (vnode) Annat FS UFS NFS klient NFS server UFS (inode) RPC/XDR RPC/XDR UDP UDP IP Klient Server
NFS caching NFS cachar för att minska lasten på LAN +cache snabbt över LAN Server cache X X Att utreda: feltillstånd konsistens A B cache cache X X
Feltillstånd (servern) Vad händer om servern krashar? Kan klienten vänta tills servern uppe? 1. Data i servern’s minne som inte skrivits till disk förloras 2. Gemensamt tillstånd över RPC’er. Ex: open, seek, read. Vad händer om servern krashar efter seek? 3. ”Omtagningar”. Vad händer om servern krashar mitt i ”rm foo” innan acknowledge?
Feltillstånd (klienten) Vad händer om klienten krashar? 1. Kan förlora modifierat data i klient-cachen.
NFS är stateless 1. Write-through cache -- När en fil stängs, skrivs alla modifierade block direkt till server disken. 2. Stateless (Tillståndslöst) protokoll. Servern håller inte reda på klientens tillstånd. Varje read operation innehåller själv tillräcklig information för att utföra sig själv. -- ReadAt(inode,position), inte Read(openfile). Kan återstarta efter serverkrash
NFS är stateless (forts) 3. Alla operationer går att repetera, dvs görs minst en gång Read och write lätt -- återläs eller återskriv samma data medför ej några missgynnsamma sidoeffekter Remove (rm)? NFS ignorerar den andra remove operationen. Returnerar bara ”file not found” felmeddelande.
NFS är stateless (forts) 4. Feltillstånd hos servern är transparenta för klienten. Är det en bra ide? Vad skall hända om servern krashar? Mitt i läsningen av en fil krashar serven. Vilka alternativ finns:
NFS är stateless (forts) a) Vänta till dess att servern kommer upp igen (nästa vecka)? b) Returnera en felkod? Problemet med detta är att de flesta programmen inte vet att de accessar en fil över LAN -- det är ju transparent! NFS gör bägge sakerna, man kan välja vilket. Vanligtvis så väntar man på servern och returnera felkod om man absolut måste!
Cache konsistens Vad händer om flera klienter delar samma filer? Enkelt om alla läser. Om flera skriver? Hur uppdateras filerna? NFS har write-through Hur får de andra klienter reda på ändringen?
NFS, weak consitency I NFS så pollar klienten servern periodiskt (3-30s). Server cache Om fler klienter skriver samtidigt får vi problem! Resultatet slumpartat. Lösning: fillåsning X’ X’ t=0:´X’ t=30: X fortf ok? X’ på disk X’ A B cache cache X’ X
NFS utvärdering + Enkelt + Mycket portabelt - Ibland inkonsistent - Skalar inte upp till stort antal klienter
AFS (Andrew File System) AFS utvecklades på CMU under senare delen av 80-talet DCE DFS (OSF) (Unix, NT ….)
AFS funktioner Callbacks: Servern håller reda på vem som har en kopia av en fil. Write through vid close Om filen ändrad uppdateras serverkopian. Servern talar sedan om förändringen för alla som har den gamla kopian. Uppdateringar endast synliga vid close UFS uppdatering synlig för alla som har filen öppen AFS de som har filen öppen ser gammal version
AFS funktioner (forts) Filer cachas också på lokal disk Server callback cache X: A,B X’ X’ t=0:´X’ Hämta ny version nästa gång X öppnas X’ på disk A B cache cache X’ X X’ X
AFS utvärdering Relativt NFS, lägre last på servern + disk as cache fler filer kan cachas lokalt + callbacks servern inte inblandad om filen read-only - På snabba LAN så är lokal disk långsammare en serverns primärminne
Nackdelar AFS och NFS Central server flaskhals prestanda: all data skrivs genom servern, alla cache missar går till servern tillgänglighet: servern är ”single point of failure” kostnad: en server kostar mycket mer än en arbetsstation.