Rozproszone systemy plików CEZARY SOBANIEC mailto:sobaniec@cs.put.poznan.pl Usługi plikowe Usługi plikowe i katalogowe Implementacja działań nazawartości plików klient wysyła zkażdym zleceniem jednoznaczny identyfikator pliku niepowtarzalny w zbiorze wszystkich plików systemu rozproszonego utworzenie nowego pliku => generacja nowego identyfikatora Usługi katalogowe odwzorowania między tekstowymi nazwami plików a ich identyfikatorami tworzenie i aktualizacja katalogów pobieranie identyfikatorów plików (ang. lookup) klient usługi plikowej informacja o katalogach przechowywana jest w pliku $Id: rsp-folie.lyx,v 1.8 2003/11/12 11:18:39 sobaniec Exp $ Rozproszone systemy plików (1/44) Atrybuty plików Interfejs usług plikowych 1. Transfer do klienta Długość pliku Data utworzenia pliku Data ostatniego dostępu Data ostatniej modyfikacji Data ostatniej zmiany atrybutów Licznik odwołań Właściciel Typ pliku Lista kontroli dostępu (ACL) Nadzorowane przez usługi plikowe Nadzorowane przez usługi katalogowe (a) 2. Modyfikacje u klienta Serwer 3. Transfer do serwera stary plik nowy plik kontrola praw dostępu wykonywana jest jednokrotnie podczas zamiany nazwy pliku na identyfikator 1. Zlecenie klienta Serwer Plik nieinterpretowalny ciag bajtów (definicja zgodna z koncepcja systemów Unix czy Windows) (b) 2. Potwierdzenie wykonania Rozproszone systemy plików (2/44) Rozproszone systemy plików (3/44)
Modele interfejsu usług plikowych Modele interfejsu usług plikowych (II) Model oparty na kopiowaniu (ang. download/upload model) Zalety prostota koncepcji i implementacji prosty interfejs usług plikowych model korzystny w przypadku wykonywania wielu złożonych operacji przez wydzielone procesy Wady Model zdalnego dostępu (ang. remote access model) Zalety nie ma potrzeby sprowadzania plików do klienta efektywna realizacja małych modyfikacji Wady każde zlecenie realizowane jest zdalnie, co powoduje duże opóźnienia duży narzut komunikacyjny w przypadku wykonywania małych modyfikacji wymagana przestrzeń dyskowa lub pamięciowa do tymczasowego przechowania pliku Rozproszone systemy plików (4/44) Rozproszone systemy plików (5/44) Interfejs usług katalogowych Interfejs usług katalogowych (II) Jak postrzegaja rozproszony system plików różni klienci? Serwer S1 Serwer S2 Możliwe podejścia A D 1. Nazwa komputera + nazwa ścieżki /serwer1/kat1 serwer1:/kat1 2. Montowanie zdalnego systemu plików w lokalnej hierarchii plików 3. Wspólna przestrzeń nazw B C E F Niezależność odusług plikowych K1 K2 możliwość projektowania rozmaitych usług katalogowych odwołujacych się do tych samych plików emulacja innych systemów A korzeń D B A C D B C E F E F Rozproszone systemy plików (6/44) Rozproszone systemy plików (7/44)
Nazewnictwo dwupoziomowe Przezroczystość (transparentność) Rodzaje nazw nazwy symboliczne ang. symbolic names nazwy binarne ang. binary names Katalogi zajmuja się odwzorowywaniem nazw symbolicznych na binarne W systemie Unix: nazwa pliku => nazwa symboliczna i węzeł => nazwa binarna Nazwa binarna może zawierać w sobie zarówno nazwę serwera jak i ścieżkę Nazwa pliku może być odwzorowywana na grupę nazw binarnych Przezroczystość dostępu programy sa nieświadome rozproszenia plików; jeden zbiór operacji dostępu do plików zdalnych i lokalnych Przezroczystość położenia (ang. location transparency)nazwaścieżki nie daje żadnej wskazówki co do położenia pliku Porównaj: serwer1:/kat1/kat2/x i /kat1/kat2/y Niezależność położenia (ang. location independace) pliki można przemieszczać między serwerami bez zmiany ich nazwy Przezroczystość współbieżności możliwość współbieżnej realizacji dostępu do plików (modyfikacji); blokowanie dostępu Przezroczystość awarii odporność serwera na awarie klientów, odporność naprzejściowe awarie sieci Przezroczystość wydajności odporność na chwilowe przeciażenia serwerów Rozproszone systemy plików (8/44) Rozproszone systemy plików (9/44) Wymagania Wymagania przyszłe Heterogeniczność sprzętu i systemu operacyjnego. Oprogramowanie klienta i serwera musi być możliwe do zaimplementowania w różnych systemach operacyjnych Otwartość standardów komunikacyjnych Skalowalność możliwość stopniowego rozszerzania usług Skalowalnośćnaduża skalę Przezroczystość zwielokrotniania transparentna replikacja: dzielenie obciażenia, tolerowanie uszkodzeń Przezroczystość wędrówki migracja (mobilność) plików nie wymagajaca modyfikacji programów migracja automatyczna migracja ręczna Drobnoziarniste rozpraszanie danych możliwość współdzielenia małych fragmentów danych (obiektów) w pobliżu potrzebujacych ich procesów. Przechowywanie w pamięci podręcznej. nieodpowiedniość abstrakcji pliku model pamięci trwałej dla systemów scentralizowanych mobilni agenci rozproszona trwała (ang. persistent) pamięć Tolerowanie podziału sieci oraz możliwość pracy po odłaczeniu od sieci odłaczenie stacji roboczej od sieci (notebook) algorytmy quorum Klienci mobilni obsługa użytkowników korzystajacych z komputerów przenośnych przełaczanie się między lokalnymi serwerami pracapoodłaczeniu się od sieci uspójnianie danych modyfikowanych współbieżnie Rozproszone systemy plików (10/44) Rozproszone systemy plików (11/44)
Przykładowy interfejs usług plikowych Przykładowy interfejs usług katalogowych Funkcja READ(plik, i, n) dane WRITE(plik, i, dane) CREATE() plik TRUNCATE(plik, d) DELETE(plik) GETATTR(plik) attr SETATTR(plik, attr) Opis odczyt z pliku zapis do pliku utworzenie pliku skrócenie rozmiaru pliku do długości d usunięcie pliku pobranie atrybutów pliku ustawienie atrybutów pliku funkcje realizowana za pomoca zdalnego wywołania procedur (RPC) brak funkcji OPEN i CLOSE (bezstanowość) idempotentność operacji (wyjatek: CREATE) Funkcja Opis LOOKUP(kat, nazwa, tryb dostępu, id użytk) plik zwraca identyfikator pliku ADDNAME(kat, nazwa, plik, id użytk) dodanie nazwy do katalogu DELNAME(kat, nazwa) usunięcie nazwy z katalogu RENAME(kat, stara nazwa, nowa nazwa) zmiana nazwy pliku GETNAMES(kat, wzorzec) ciag nazw zwraca zawartość katalogu niebezpieczeństwo: utworzenie pliku bez zapisu w katalogu uprawnienia jako mechanizm weryfikacji dostępu (unikalny identyfikator pliku) Rozproszone systemy plików (12/44) Rozproszone systemy plików (13/44) Semantyka współdzielenia plików Semantyka współdzielenia plików (II) 1. Systemy scentralizowane Odczyt zwraca zawsze ostatnio zapisana wartość (semantyka scentralizowana) 2. Systemy rozproszone Brak wspólnego zegara: odczyt może zwrócić starawartość Semantykę scentralizowana można w systemie rozproszonym zrealizować przez pojedynczy centralny serwer duży koszt. Problem współdzielenia wskaźnika bieżacej pozycji w pliku int fd = open("/tmp/ab.txt", O WRONLY O CREAT, 0700); int d; if (fork()==0) { d = 10; write(fd, &d, sizeof(int)); } else { d = 20; write(fd, &d, sizeof(int)); } Rozproszone systemy plików (14/44) Rozproszone systemy plików (15/44)
Semantyka współdzielenia plików (III) Semantyka współdzielenia plików (IV) Semantyka sesji (ang. session semantics) Zmiany dokonane w pliku sa widoczne po jego zamknięciu Zalety większa efektywność implementacji Problemy współbieżne modyfikacje pliku naruszenie semantyki scentralizowanej (wskaźnik plikowy) Pliki tylko do odczytu dopuszczalne operacje: odczyt, usuwanie i tworzenie możliwość niepodzielnego zastapienia pliku nowym plikiem o takiej samej nazwie katalogi moga być modyfikowane Zalety brak problemów ze spójnościa replik Problemy procesy jednocześnie modyfikujace ten sam plik wstawienie nowej wersji podczas odczytu starej Rozproszone systemy plików (16/44) Rozproszone systemy plików (17/44) Semantyka współdzielenia plików (V) Implementacja rozproszonychsystemów plików Niepodzielne transakcje Jawna operacja BEGIN TRANSACTION na poczatku dostępu do pliku END TRANSACTION na końcu Końcowy wynik współbieżnie wykonywanych transakcji będzie taki sam, jak gdyby wykonano je w pewnym (nieokreślonym) sekwencyjnym porzadku. Rozwiazanie zaczerpnięte z systemów baz danych. Wady Istotna zmiana sposobu dostępu do plików dodatkowe jawne operacje synchronizujace Klasy plików pliki współdzielone i bardzo rzadko modyfikowane pliki nie współdzielone między procesami i nie modyfikowane pliki często modyfikowane, a jednocześnie rzadko współdzielone pliki często modyfikowane iwspółdzielone Decyzje projektowe Rozróżnienie klienta i serwera (por. systemy Windows i NetWare) Rozdział czy połaczenie usług plikowych i katalogowych Serwer przechowujacy informacje o klientach czy bezstanowy tolerancja uszkodzeń Rozproszone systemy plików (18/44) Rozproszone systemy plików (19/44)
Serwery bezstanowe Pamięć podręczna Zalety Nie potrzebuja operacji open i close mniejsza liczba komunikatów Serwer Nie zajmuja dodatkowych struktur na serwerze Odporne na awarie klientów Wady pamięć operacyjna klienta 3 4 lokalny dysk pamięć operacyjna serwera 2 lokalny dysk 1 Każdy komunikat musi być samowystarczalny większa długość komunikatów Potrzeba otwierania pliku przy każdym dostępie po stronie serwera Niemożliwość realizacji czytania z wyprzedzeniem po stronie serwera Złożoność realizacji zasady idempotentności Niemożliwość zakładania blokad na plikach Pamięć podręczna u klienta pamięć w procesie biblioteka wejścia/wyjścia pamięć wj adrze systemu operacyjnego pamięć w oddzielnym procesie pracujacym na komputerze klienta Rozproszone systemy plików (20/44) Rozproszone systemy plików (21/44) Pamięć podręczna (II) Pamięć podręczna (III) Pamięć podręczna na serwerze operacja odczytu nie powoduje powstawania problemu spójności zawsze jest opłacalna operacja zapisu możliwość utraty danych w przypadku awarii serwera: write-through Pamięć podręczna na dysku u klienta Zarzadzanie pamięcia podręczna przez klienta Przepisywanie (ang. write-through) Opóźnianie zapisu Zapisywanie przy zamknięciu (ang. write on close) Kontrola scentralizowana unieważnianie replik semantyka scentralizowana aktywność serwerów wielokrotnie większa od pamięci operacyjnej mniejsza efektywność i większy koszt Rozproszone systemy plików (22/44) Rozproszone systemy plików (23/44)
Replikacja Replikacja Motywacja Zwiększenie efektywności dostępu operacje odczytu Zwiększenie niezawodności Zwiększenie dostępności plików Możliwość rozłożenia obciażenia Realizacja replikacji 1. replikacja aktywna (ang. active replication) 2. replikacja pasywna (ang. passive replication) 3. replikacja z wykorzystaniem komunikacji grupowej (ang. group communication) Problemy spójność replik Serwer 1 Serwer 1 Serwer 1 Serwer 2 Serwer 2 Serwer 2 Serwer 3 Serwer 3 Serwer 3 (1) (2) (3) Rozproszone systemy plików (24/44) Rozproszone systemy plików (25/44) NFS XDR Network File System sieciowy system plików stworzony przez firmę Sun Microsystems dostępny dla stacji Unix, Windows, OS/2, Macintosh i wielu innych pracuje w środowisku heterogenicznym obsługa stacji bezdyskowych external Data Representation Standard reprezentacji danych jednolity format reprezentacji liczb całkowitych: 32 bitowe big endian kodowanie liczb rzeczywistych w formacie IEEE (typy float i double) przechowywanie danych zawsze w jednostkach będacych wielokrotnościa4bajtów Wprowadzony równolegle z mechanizmem zdalnego wywoływania procedur (ang. remote procedure call RPC) Rozproszone systemy plików (26/44) Rozproszone systemy plików (27/44)
Architektura NFS Cechy NFS Koncepcja umożliwienie współdzielenia systemów plików pomiędzy dowolna liczba komputerów dedykowany dla sieci lokalnych (nowsze implementacje umożliwiaja pracę w sieciach rozległych) każda maszyna może jednocześnie pełnić rolę klienta i serwera Eksportowanie danych udostępnianie katalogów wraz z wszystkimi podkatalogami Importowanie danych montowanie zdalnych katalogów przez klientów zamontowany katalog staje się częścia lokalnej hierarchii katalogów klienta nierozróżnialność plików lokalnych i zdalnych NFS oferuje 1. Przezroczystość dostępu 2. Przezroczystość położenia poprzez spójna konfigurację montowania zdalnych katalogów u klientów 3. Przezroczystość awarii większość usług jest idempotentna 4. Częściowa przezroczystość wydajności intensywne wykorzystanie pamięci podręcznych 5. Przezroczystość wędrówki NFS nie oferuje 1. Przezroczystości zwielokrotniania 2. Przezroczystości współbieżności (elementy w NFS 4) 3. Ograniczona skalowalność Rozproszone systemy plików (28/44) Rozproszone systemy plików (29/44) Protokoły NFS Implementacja systemu NFS protokół montowania protokół transmisji danych Protokół montowania zlecenie zamontowania katalogu weryfikacja uprawnień odpowiedź zawiera uchwyt plikowy (ang. file handler) Warstwy implementacji NFS 1. odwołania systemowe (open, read, write, close) 2. wirtualny system plików VFS ang. virtual file system 3. właściwy klient/serwer NFS Protokół transmisji danych odczyt i modyfikacja danych z plików tworzenie i usuwanie plików odczyt i modyfikacja atrybutów plików (prawa dostępu, daty dostępu i utworzenia) każdy komunikat jest samowystarczalny Rozproszone systemy plików (30/44) Rozproszone systemy plików (31/44)
Implementacja systemu NFS (II) Implementacja systemu NFS (III) Serwer Komputer A Komputer B warstwa odwolań do systemu program klient NFS r węzeł serwer NFS warstwa wirtualnego systemu plików warstwa wirtualnego systemu plików lokalny system plików klient NFS serwer NFS lokalny system plików jądro VFS v węzeł jądro VFS v węzeł i węzeł lokalny dysk komunikat do serwera komunikat od klienta lokalny dysk implementacja na poziomie jadra systemu sieć Rozproszone systemy plików (32/44) Rozproszone systemy plików (33/44) Implementacja systemu NFS (IV) Automounter Transfer danych Komputer A Komputer B zawsze w paczkach po 8KB czytanie z wyprzedzeniem przez klienta Spójność pamięci podręcznych klientów program serwer NFS klient NFS r węzeł serwer NFS ograniczenia czasowe na ważność danych w pamięciach podręcznych: kontrola znaczników czasowych przy każdym dostępie pamięć danych: ważna przez maksymalnie 3s pamięć atrybutów: ważna przez maksymalnie 30s problem spójności jest tylko ograniczany nie usuwany! Czytanie z wyprzedzeniem oddzielny proces asynchroniczne czytanie z wyprzedzeniem opóźniony zapis jądro VFS v węzeł v węzeł jednoczesna próba montowania zdalnego katalogu z wielu serwerów Rozproszone systemy plików (34/44) Rozproszone systemy plików (35/44)
Andrew File System Wydajność AFS Rozproszony system plików AFS stworzony w Carnegie-Mellon University (CMU) Cechy przezroczysty dostęp do zdalnych, współdzielonych plików skalowalność przechowywanie całych plików w trwałych pamięciach podręcznych użytkowników Scenariusz działania 1. wywołanie funkcji open skopiowanie pliku z serwera, wykonanie lokalnie funkcji open 2. dostęp do pliku realizowany całkowicie lokalnie poprzez wywołania funkcji read i write 3. zamknięcie pliku zmodyfikowana kopia jest przesyłana do serwera rozwiazanie efektywne dla większości plików: tylko do odczytu (programy, biblioteki) rzadko modyfikowanych nie współdzielonych (pliki prywatne w katalogu domowym) duży rozmiar pamięci podręcznej (kilkaset MB) typowe wielkości plików większość plików jest małych (<15KB) operacje czytania sa znacznie częstsze od operacji zapisu (~6 razy) większość plików jest modyfikowanych przez jednego użytkownika odwołania do plików sa skumulowane problem z bazami danych b.duże pliki, często modyfikowane przez wielu użytkowników Rozproszone systemy plików (36/44) Rozproszone systemy plików (37/44) Architektura AFS Architektura AFS (II) Serwer Implementacja funkcji open program Venus Vice 1. Proces Venus sprawdza obecność pliku w pamięci podręcznej. Brak pliku: wysłanie zamówienia do procesu Vice 2. Przesłanie kopii pliku do węzła klienta. Rejestracja pobrania kopii na serwerze 3. Lokalne otwarcie pliku i zwrócenie deskryptora jądro jądro Implementacja funkcji close Modyfikacje systemowe 1. Zamknięcie pliku z lokalna kopia 2. Przesłanie zmodyfikowanej wersji do serwera 3. Powiadomienie innych zainteresowanych węzłów o dokonanych modyfikacjach jadro systemu operacyjnego: przechwytywanie wywołań funkcji open i close Rozproszone systemy plików (38/44) Rozproszone systemy plików (39/44)
Odporność naawarie Coda Serwer rejestruje stan klientów informacja o pobranych kopiach plików komunikaty unieważniajace Po awarii klient: kontrola ważności przechowywanych kopii plików Automatyczne unieważnianie replik Rozproszony system plików Coda nowe wymagania replikacja plików modyfikowanych lepsze tolerowanie uszkodzeń komputery przenośne czasowe odłaczenie od sieci korzyści współdzielonego systemu plików i dostępność zasobów przy braku dostępu do serwerów skalowalność i emulacja uniksowej semantyki dostępu do plików jak w AFS brak informacji od serwera przez okres czasu T (typowo kilka minut) powoduje unieważnienie kopii Rozproszone systemy plików (40/44) Rozproszone systemy plików (41/44) Replikacja grupowa Coda Volume Storage Group (VSG) zbiór serwerów przechowujacych kopie pliku (grupy plików) Available Volume Storage Group (AVSG) dynamicznie definiowany podzbiór VSG prawidłowo działajacych serwerów Zmodyfikowane kopie plików rozsyłane sa przez klienta do wszystkich członków grupy AVSG Gdy AVSG = 0 klient pracuje w trybie odłaczonym o ile wszystkie potrzebne pliki znajduja się w pamięci podręcznej ręczna operacja umieszczenia wybranych plików w pamięci podręcznej optymistyczna strategia replikacji pliki moga być modyfikowane niezależnie wodłaczonych systemach: operacja scalania Wektor wersji systemowej Spójność danych Coda Version Vector (CVV) liczniki modyfikacji pliku na poszczególnych serwerach AVSG K 1 (2,2,2) K 1 (4,4,3) S1 S 2 S 3 AWARIA (1,1,1) K 2 (3,3,3) K 2 (3,3,4) scalanie użytkownik ręcznie musi rozwiazać konflikty powstajace podczas operacji scalania Rozproszone systemy plików (42/44) Rozproszone systemy plików (43/44)
Spójność danych klienci mobilni Modele spójności data-centric zorientowane na uspójnianie globalnego obrazu danych client-centric zorientowane na uspójnianie obrazu postrzeganego przez klienta Preferencje klienta chcę widzieć modyfikacje, które poprzednio wprowadziłem do systemu chcę aby moje modyfikacje były aplikowane wszędzie w tej samej kolejności chcę czytać dane co najmniej tak aktualne jak przy ostatnim odczycie Replikacja Serwer 1 read(x) Użytkownik Serwer 2 write(x,1) Serwer 3 Rozproszone systemy plików (44/44)