Rozproszone systemy plików - AFS, Coda, DFS
Autor: Aleksander Nałęczyński
AFS
- Opracowany na Carnegie Mellon University w 1985 roku
- Inne podejście niż w NFS - intensywne wykorzystanie pamięci podręcznej po stronie klienta (aggresive client-side caching). Dzięki temu znacznie spada obciążenie sieci i AFS może obsługiwać większą ilość klientów.
- Opóźnione pisanie (delayed-write) w wariancie write-on-close. Dane są przesyłane do serwera dopiero po zamknięciu pliku.
- Pamięć podręczna klienta znajduje się na dysku, a nie w pamięci operacyjnej. Dzięki temu po awarii systemu klienta, zmiany nie są tracone.
- We wczesnych wersjach AFS-a przy otwieraniu cała zawartość pliku była ściągana na stację klienta. Ponieważ wielkość plików rosła, zaczęło to być problemem. Dzisiejsze wersje przekazują dane w partiach po 64 KB.
- Cache Manager - proces, który zajmuje się sprowadzaniem danych z serwera i przechowywaniem informacji o użytkowniku.
- Konieczna jest weryfikacja aktualności danych przechowywanych w pamięci podręcznej. Jest ona oparta o mechanizm callback - to pewien rodzaj obietnicy składanej przez serwer klientowi. Powiedzmy, że klient A i klient B otwierają jeden plik. Klient B modyfikuje go i zamyka. Plik jest aktualizowany na serwerze, a serwer powiadamia klienta A, że callback został złamany. Przy następnym czytaniu z pliku, klient A ściągnie jego nową wersję z serwera.
- Stanowy serwer plików. To również zwiększa wydajność poprzez zmniejszenie wielkości komunikatu
- Logiczny podział systemu plików na komórki (cells) i woluminy (volumes).
-
Komórka reprezentuje pewną liczbę serwerów, zwykle pod tą samą nazwą domeny.
- Wolumen to logiczna jednostka grupująca pewną liczbę plików i katalogów.
- Wolumeny mogą być klonowane. Wszelkie zmiany na oryginale są wykonywane również na klonie. Klon jednak jest przeznaczony tylko do odczytu. Taki mechanizm zwiększa dostępność plików i pozwala zmniejszyć obciążenie sieci.
- Informacja o położeniu wolumenów znajduje się w Bazie Danych Położenia Wolumenów (Volume Location Database) replikowanej między poszczególnymi serwerami.
- Sieciowy system plików jest widoczny jako katalog /afs. W tym katalogu znajdują się podkatalogi odpowiadające poszczególnym komórkom.
- Pełna przezroczystość nazw zapewniana przez serwer - jeżeli przeniesiemy np. katalog /home z jednego serwera na drugi, nie musimy zmieniać konfiguracji klientów. Korzystając z NFS musielibyśmy zmodyfikować plik /etc/filesystems na wszystkich stacjach klienckich. Wynika to z faktu, że w AFS przekształcanie nazwy pliku w jego położenie jest wykonywane na serwerze.
- AFS do autentykacji używa protokołu Kerberos. Autentykacja jest dwustronna, tzn. że zarówno serwer jak i klient muszą potwierdzić swoją tożsamość.
Odstępstwa od uniksowej semantyki plików
- Zapisywanie plików przy zamykaniu (write-on-close)
- Autentykacja
Użytkownik, zanim uzyska dostęp do plików AFS-a, musi potwierdzić swoją tożsamość używając komendy klog. Wiele systemów automatycznie dokonuje autentykacji w czasie logowania.
- Prawa dostępu do plików
Prawa dostępu dla grup i innych użytkowników są ignorowane. AFS używa własnego mechanizmu - Access Control Lists. Są to listy użytkowników bądź ich grup, mogą one być powiązane tylko z całymi katalogami. Plik przeniesiony do innego katalogu ma zmieniane prawa dostępu zgodnie z prawami dostępu katalogu docelowego. Jest siedem rodzajów praw:
- lookup - prawo przeglądania zawartości katalogu (wylistowania plików)
- read - prawo odczytu plików
- insert - prawo tworzenia nowych plików
- write - prawo pisania do istniejących plików
- delete - prawo usuwania plików
- lock - prawo zakładania blokad na pliki
- administer - prawo modyfikowania praw dostępu
- Twarde linki
Twarde linki są dopuszczalne tylko w obrębie tego samego katalogu.
- Zmiana praw dostępu
Polecenia chown i chrgp mogą być używane tylko przez użytkowników należących do grupy system:administrators
-
Blokady można zakładać tylko na całe pliki za pomocą polecenia flock
- Nie ma specjalnych plików znakowych ani blokowych
Porównanie rozproszonych systemów plików AFS i NFS
|
AFS |
NFS |
Serwer plików |
Stanowy |
Bezstanowy |
Pamięć podręczna |
Dyskowa, synchronizacja przy zamykaniu pliku |
W pamięci operacyjnej, natychmiastowe pisanie |
|
Utrzymywanie spójności poszczególnych pamięci podręcznych poprzez mechanizm callback. |
Utrzymywanie spójności poszczególnych pamięci podręcznych poprzez znaczniki czasowe. |
Dostęp do plików |
Jednolita przestrzeń nazw, jednakowa dla wszystkich stacji |
Różne nazwy plików dla różnych stacji roboczych |
Śledzenie lokacji plików |
Automatyczne śledzenie przez procesy systemowe |
Punkty montowania ustawiane przez administratorów i użytkowników |
Replikacja plików |
Kopie tylko do odczytu |
Brak |
Autentykacja |
Dwustronna, oparta o protokół Kerberos |
Jawne przesyłanie identyfikatora przez użytkownika |
Skalowalność |
Bardzo duża - może obsługiwać tysiące klientów i być stosowany w sieciach rozległych |
Niewielka - stosowany w sieciach lokalnych |
Zakładanie blokad |
Blokady można zakładać tylko na całe pliki |
W NFS v3 brak blokad, pojawią się dopiero w NFS v4 |
Coda
W późnych latach 80-tych AFS, działający na uniwersytecie Carnegie Mellon, obsługiwał tak wiele klientów i stał się tak ogromną siecią, że awarie były codziennością. Odpowiedzią na to miała być Coda - system bardziej odporny na awarie sieci i odłączanie serwerów.
Głównymi ulepszeniami w stosunku do AFS-a są:
- Repliki plików również do zapisu
- Lepsze dostosowanie do wykorzystania komputerów przenośnych
- Większa odporność na awarie serwerów i sieci
Coda, w uniezależnianiu operacji u klienta, posuwa się jeszcze dalej niż AFS. Możliwa jest praca z plikami bez połączenia sieciowego (disconnected operations). Przejście do odłączonego trybu pracy jest realizowane za pomocą specjalnej komendy. Po jej wykonaniu pliki, których użytkownik będzie potrzebował, zostaną przeniesione do jego pamięci podręcznej. Jeżeli użytkownik podczas pracy w trybie odłączonym nie zażąda dostępu do pliku nie znajdującego się w pamięci podręcznej, nie zostanie powiadomiony o błędzie - po podłączeniu, pamięć podręczna zostanie automatycznie zsynchronizowana z zawartością serwera.
- Proces Cache Managera u klienta nosi nazwę Venus. Komunikujący się z nim przez RPC proces działający na serwerze nazywa się Vice.
- Coda, w przeciwieństwie do AFS-a, pozwala na replikację woluminów do zapisu (tzn. możliwy jest zapis do stworzonej w ten sposób repliki). Oczywiście w tym momencie konieczny jest bardziej skomplikowany mechanizm przechowywania i synchronizacji woluminów. Zbiór serwerów przechowujących kopie jednego woluminu nazywa się VSG (Volume Storage Group). Te z nich, które są aktualnie dostępne tworzą AVSG (Active Volume Storage Group). Po zmodyfikowaniu pliku na którymkolwiek z serwerów, jest on modyfikowany na wszystkich serwerach należących do AVSG.
DFS
- Distributed File Service jest częścią większego projektu - Distributed Computing Environment (DCE) - zainicjowanego przez Open Source Foundation w latach 80-tych. Transarc, firma skupiająca twórców AFS-a, wygrała przetarg na system plików. Obecnie DFS-a rozwija IBM.
- Nazwy DFS nie należy mylić z Dfs Microsoftu - te dwa systemy nie mają ze sobą prawie nic wspólnego.
- DFS ma większość cech AFS-a: jednolitą przestrzeń nazw, stanowy serwer plików, kopie zbiorów plików (fileset - odpowiednik woluminu) tylko do odczytu, listy kontroli dostępu (Access Control Lists).
- Wprowadzono pojęcie agregacji (aggregate). Są one odpowiednikami partycji. Jedna agregacja może zawierać jeden lub więcej zbiorów plików.
- W przeciwieństwie do AFS, listy kontroli dostępu mogą dotyczyć również pojedynczych plików. Gdy z plikiem nie jest związana żadna lista, działają normalne uniksowe prawa dostępu.
- Można również zakładać blokady na części plików (Byte range locking).
- Serwery DFS dzielą się na kilka grup według wykonywanych zadań - jeden serwer może spełniać jedną lub więcej z wymienionych poniżej funkcji:
- Serwer plików (File server) - na nim fizycznie znajdują się pliki systemu DFS.
-
Serwer kontroli systemu (System control server) - odpowiedzialny za rozprowadzanie plików konfiguracyjnych systemu między innymi serwerami.
-
Serwer bazy danych plików (Fileset database server) - tu znajduje się Baza Danych Lokacji Plików (Fileset Location Database). Jest to odpowiednik VLDB (Volume Location Database) z AFS-a.
- Serwer kopii zapasowej (Backup database server) - zachowuje bazę danych, w której znajdują się kopie zapasowe plików użytkowników i plików systemowych.
- DFS gwarantuje pracę z aktualną wersją pliku. Aby zapewnić spójność pamięci podręcznych, w DFS-ie wprowadzono proces token manager.
- Token manager przydziela klientom tokeny (żetony) - np. do zapisu lub do odczytu.
- Gdy klient chce uzyskać dostęp do pliku, prosi o przydzielenie mu odpowiedniego tokena.
- Na przykład: klient wnosi o przyznanie mu tokena do zapisu pliku, ale inny klient dostał już jeden token do zapisu na tym pliku. Serwer musi unieważnić token pierwszego klienta - gdy klient dostaje komunikat o unieważnieniu tokena, musi zsynchronizować swoją pamięć podręczną z zawartością serwera. Dopiero wtedy drugi klient dostaje odpowiedź od serwera i może rozpocząć pisanie.
- Może się zdarzyć, że serwer opóźni lub wręcz odmówi przydzielenia żetonu.
Więcej informacji:
AFS FAQ: http://www.angelfire.com/hi/plutonic/afs-faq.html
Strona domowa Cody: http://www.coda.cs.cmu.edu/
Dokumentacja DCE na stronie IBM: http://www-306.ibm.com/software/network/dce/library/