Socjolodzy określają współczesne, rozwinięte społeczeństwa jako społeczeństwa informacyjne. Szybki dostęp do informacji, możliwy niemal z dowolnego miejsca staje się charakterystyczną cechą współczesnego życia. Aby ta informacja mogła być szybko dostępna, potrzebne są mechanizmy umożliwiające korzystanie ze zdalnych danych. Jednym z nich są wydajne, silnie skalowalne rozproszone systemy plików. Niemal zawsze są one stosowane razem z mechanizmem schowków -- mechanizmem o bardzo prostej idei i dużej efektywności.
Jednym z najstarszych i najbardzej popularnych rozproszonych systemów plików jest system NFS dzałający na bazie rodziny systemów operacyjnych UNIX. Do tej rodziny należy darmowy, zyskujący coraz większą popularność, system operacyjny Linux.
Celem mojej pracy była poprawa wydajności systemu NFS działającego na bazie systemu operacyjnego Linux. Zaprojektowałem i zaimplementowałem modyfikację jądra systemu operacyjnego polegającą na zastosowaniu mechanizmu schowków dyskowych na stacjach klienckich. Testy przedstawione na końcu tej pracy pokazują, że w wyniku wprowadzonych zmian, wydajność systemu wzrosła niektórych przypadkach nawet dwudziestokrotnie, przy jednoczesnym tylko kilku procentowym spadku wydajności dla pesymistycznie dobranych danych.
W części opisowej pracy przedstawiam szeroką gamę zastosowań mechanizmu schowków w rozproszonych systemach plików. Starałem się wybrać przykłady pokazujące, że zakres funcjonalości schowków może być bardzo różny w zależności od środowiska pracy i wykorzystanej technologii.
W rozdziale 2 opisuję zasadę działania, zalety i wady schowków. Przedstawiam możliwości zastosowania ich w rozproszonych systemach plików.
W rozdziale 3 szczegółowo opisuję pięć różych protokołów rozproszonych systemów plików wykorzystujących schowki. Twórcy każdego z nich kładli nacisk na inny aspekt funkcjonalności tego mechanizmu.
Pierwszym opisanywanym jest system systemu AFS, w którym zastosowanie schowków umożliwiło stworzenie silnie skalowalnego rozproszonego środowiska pracy.
Dwa następne protokoły to Kooperatywny Schowek i xFS. Było one badane na Uniwersytecie w Berkeley. Celem Kooperatywnego Schowka jest maksymalne zmniejszenie czasu dostępu do danych. Na bazie xFS można tworzyć silnie skalowalne systemy plików wykorzystujące dyski i moc obliczeniową stacji klienckich. Zebrane doświadczenia były później wykorzystane do stworzenia silnie skalowalnego, rozproszonego systemu plików xFS, wdrażanego na Uniwersytecie w Bekeley w ramach projektu NOW.
Kolejnym ciekawym przykładem zastosowania schowków jest system Coda zrealizowany na Carnegie Mellon University. System ten w momencie utraty połączenia z serwerem umożliwia aplikacjom, korzystającym z danych serwera, nieprzerwaną pracę. W systemie Coda wprowadzono także nowe, efektywne sposoby zachowania spójności danych.
Ostatnim opisanym protokołem jest NFS. Pomimo ograniczeń tego protokołu, jego implementacje są bardzo popularne i prawdopodobnie najlepiej zoptymalizowane ze wszystkich rozproszonych systemów plików.
Rozdział 4 zawiera zasadniczą część mojej pracy. Przedstawiam tu optymalizację systemu NFS, działającego na bazie systemu Linux. Opisuję projekt i implementację dyskowego schowka wspierającego operację odczytu danych. Odnoszę się do innych rozwiązań przytoczonych w pracy i przedstawiam, na ile są one użyteczne w systemie NFS. Porównuję moje rozwiązanie z rozwiązaniem zaproponowanym przez Grega Badrosa, który w 1998 roku udostępnił je w Internecie. Na końcu rozdziału przedstawiam szereg testów porównujących wydajność standardowego systemu NFS z moim rozwiązaniem.
Rozdział 5 zawiera podsumowanie pracy.