1 Rozproszony system plików Coda Krzysztof Lichota
2 AFS System plików dla środowiska akademickiego: częstsze odczyty niż zapisy częstsze odczyty niż zapisy rzadkie współdzielenie pliku do zapisu rzadkie współdzielenie pliku do zapisu powtarzalność dostępu do pliku powtarzalność dostępu do pliku sekwencyjny odczyt sekwencyjny odczyt
3 Cele AFS Skalowalność Skalowalność Semantyka zbliżona do one-copy Semantyka zbliżona do one-copy Sensowna wydajność Sensowna wydajność
4 Charakterystyka AFS Trwały cache u klienta Trwały cache u klienta whole-file caching whole-file caching whole-file serving whole-file serving Replikacja read-only
5 Semantyka Sprawdzenie aktualności tylko przy otwarciu pliku Sprawdzenie aktualności tylko przy otwarciu pliku Dalsze operacje lokalne Dalsze operacje lokalne Zamknięcie pliku zamazuje poprzednią zawartość na serwerze Zamknięcie pliku zamazuje poprzednią zawartość na serwerze Spójność cache utrzymywana mechanizmem „callback” Spójność cache utrzymywana mechanizmem „callback”
6 Klient Serwer Proces Open Sprowadzenie do cache
7 Klient Serwer Proces Close Unieważnienie kopii Klient
8 Cechy callbacków Nie musimy kontaktować się z serwerem przy każdym otwarciu pliku Nie musimy kontaktować się z serwerem przy każdym otwarciu pliku Nie zawsze mamy najbardziej aktualną kopię (zgubione callbacki) Nie zawsze mamy najbardziej aktualną kopię (zgubione callbacki) Zgubione callbacki wykrywamy przepytując okresowo serwery
9 Wady AFS Replikacja read-only Wrażliwość na awarie serwerów Wrażliwość na awarie serwerów Wrażliwość na awarie sieci Wrażliwość na awarie sieci Niemożliwe działanie bez podłączenia do serwera Wrażliwość na krótkie awarie Wrażliwość na krótkie awarie Brak wsparcia dla komputerów przenośnych Brak wsparcia dla komputerów przenośnych
10 Założenia Cody Skalowalność Semantyka podobna do one-copy Odporność na awarie: replikacja read-write replikacja read-write korzystanie z cache gdy nie ma połączenia korzystanie z cache gdy nie ma połączenia AFS
11 Optymistyczna replikacja Jedyna możliwość dla komputerów przenośnych Jedyna możliwość dla komputerów przenośnych Brak ograniczeń przy rozdzieleniu serwerów Brak ograniczeń przy rozdzieleniu serwerów Konflikty występują, ale są rzadkie Konflikty występują, ale są rzadkie
12 Coda cell Serwer Klient
13 Woluminy /coda usrhomesbin klmm
14 AVSG i VSG Klient Serwer VSG AVSG Klient
15 Konflikt replik Serwer 1Serwer 2
16 Dominacja repliki Serwer 1Serwer 2
17 CVV LSID S1 S2 S3 S4 S5 VSG CVV
18 Równość replik Mocna równość LSID takie same LSID takie same CVV takie same CVV takie same Słaba równość LSID się zgadzają LSID się zgadzają CVV różne CVV różne
19 Wykrywanie konfliktu S1S2S3S1S2S3 S1 S2S3 S1S2S3 S1S2S3 S1S2S3S1S2S3S1S2S3
20 Dominacja S1S2S3S1S2S3 S1 S2S3 S1S2S3 S1S2S3 S1S2S3S1S2S3S1S2S3
21 Rozsyłanie informacji Read-one, write-all Read-one, write-all „Wybrany serwer” „Wybrany serwer” MultiRPC MultiRPC
22 Semantyka operacji open Sukces: Mamy kopię nie starszą niż T sekund i spójną w danym AVSG sprowadziliśmy aktualną kopię sprowadziliśmy aktualną kopię –nie mieliśmy jej w cache –nasza kopia została unieważniona skorzystaliśmy z kopii w cache skorzystaliśmy z kopii w cache –kopia jest aktualna lub –zgubiliśmy callback
23 Semantyka operacji open Porażka: kopie w AVSG są w konflikcie kopie w AVSG są w konflikcie
24 Semantyka operacji close Sukces: wszystkie serwery z AVSG uaktualniły swoją kopię wszystkie serwery z AVSG uaktualniły swoją kopięPorażka: kopie w AVSG są w konflikcie kopie w AVSG są w konflikcie
25 Open Ważna kopia w cache W AVSG jest spójna wersja Istnieje wersja dominująca Pobierz plik z wybranego serwera i ustanów „callback promise” Otwórz plik z cache Wybierz serwer który ma dominującą kopię Wybierz serwer Powiadom serwery, że mają nieaktualną kopię Konflikt Serwery uzgadniają kopie TAK NIE
26 Close Sprawdzenie przez serwery, czy kopia dominuje nad ich kopiami lub jest równa Sprawdzenie przez serwery, czy kopia dominuje nad ich kopiami lub jest równa Zatwierdzenie nowego LSID i tymczasowego CVV na serwerze Zatwierdzenie nowego LSID i tymczasowego CVV na serwerze Rozesłanie ostatecznego CVV do serwerów Rozesłanie ostatecznego CVV do serwerów
27 Probing Co T sekund próbujemy skontaktować się z każdym serwerem z VSG odpowiada nowy serwer odpowiada nowy serwer nie zgłasza się poprzednio dostępny serwer nie zgłasza się poprzednio dostępny serwer
28 Callback z wybranego serwera Callback promise ustanawiany jest tylko na serwerze, z którego pobieramy plik Klient Serwer Klient
29 Volume CVV Zawiera sumę operacji na danym woluminie Zawiera sumę operacji na danym woluminie Niezgodność powoduje unieważnienie wszystkich plików z danego woluminu Niezgodność powoduje unieważnienie wszystkich plików z danego woluminu
30 Disconnected operation Połączony Wykonujemy operacje natychmiast Odłączony Zapisujemy zmiany w CML Reintegracja Odtwarzamy zmiany na serwerze
31 Hoarding Gromadzimy potrzebne pliki przed odłączeniem priorytetowa lista plików priorytetowa lista plików pliki „sticky” pliki „sticky” spy spy
32 Reintegracja Odtwarzamy zmiany na serwerze Odtwarzamy zmiany na serwerze Rozstrzygamy konflikty jeśli się da Rozstrzygamy konflikty jeśli się da Jeśli nie przechowujemy pliki w covolume Jeśli nie przechowujemy pliki w covolume
33 Słabe połączenie Duże opóźnienia przy zamykaniu pliku Duże opóźnienia przy zamykaniu plikuWrite-disconnect Odczytujemy z serwerów Odczytujemy z serwerów Zapisujemy zmiany jak w disconnected operation Zapisujemy zmiany jak w disconnected operation
34 Podumowanie Dobra wydajność Dobra wydajność Sensowna semantyka Sensowna semantyka Dobra skalowalność Dobra skalowalność Wygoda przy użyciu komputerów przenośnych Wygoda przy użyciu komputerów przenośnych Możliwość korzystania z niepewnych sieci (IR, packet radio) Możliwość korzystania z niepewnych sieci (IR, packet radio)