next up previous contents
Next: AFS Up: Sieciowe systemy plików Previous: NFS   Spis rzeczy

Subsections

RFS

Wprowadzenie

Krótki wstęp

System RFS został stworzony w AT&T. Początkowo działał on na systemie SVR3 UNIX, lecz szybko RFS przebudowano i zintegrowano z interfejsem węzłów wirtualnych (w wersji SVR4). Tutaj omówimy właśnie tę implementację RFS.

Cele projektowe

Podstawowe założenia to:

Budowa systemu RFS

Architektura RFS

Właściwości architektury RFS:

Rysunek: Komunikacja w RFS.
\begin{figure}\centering\includegraphics{ula-obrazki/rfs.ps}
\end{figure}

Implementacja systemu RFS

  1. Montowanie

    Operację montowania obsługuje się oddzielnie za pomocą montowania zdalnego. Używany jest wtedy serwer nazw.

    Aby klienci mogli zamontować katalog, serwer musi go najpierw wyeksportować, robi to przy użyciu funkcji advfs (w nowszych wersjach podfunkcji funkcji rfsys). Wywołanie tej funkcji stworzy w liście zasobów jądra odpowiednią pozycję dla zadanego katalogu.

    Rysunek: Lista zasobów w systemie RFS.
    \begin{figure}\centering\includegraphics{ula-obrazki/rfs2.ps}
\end{figure}
    Teraz klient może wywołać polecenie mount, w którym najpierw zostanie odpytany serwer nazw o położenie pliku w sieci, a potem zostanie wysłane do zadanego serwera żądanie zamontowania danego pliku bądź katalogu. Jeśli klient ma prawo do korzystania z danego zasobu serwer zwróci identyfikator zamontowania. Klient z kolei, kończy montowanie poprzez konfigurację v-węzła, gdzie zostaje zapamiętana struktura deskryptor przesyłu (ang. send descriptor). W deskryptorze przesyłu pamiętany jest uchwyt pliku i informacje o obwodzie wirtualnym.

    Rysunek: Montowanie systemu plików RFS.
    \begin{figure}\centering\includegraphics{ula-obrazki/rfs3.ps}
\end{figure}
  2. Klient i serwer RFS

    Klient może odwoływać się do pliku RFS za pomocą nazwy ścieżkowej bądź deskryptora pliku. Ponieważ protokół RFSv2 pozwala na montowanie innych systemów plików na katalogach RFS, to podczas analizy ścieżkowej trzeba analizować każdą składową osobno. Gdy klient uzyska już uchwyt pliku, będzie go zawsze przekazywać przy żądaniu operacji na pliku.
    W serwerze utrzymywana jest dynamiczna pula procesów-demonów, które obsługują każde zlecenie osobno. Gdy przybywa nowe zlecenie tworzony jest nowy proces, gdy nie ma dostępnych. Serwer działa jako jeden lub kilka demonów, które wykonują się w trybie jądra. Demony są szeregowane tak jak inne procesy.

  3. Sygnały

    Ponieważ system RFS wspiera całą semantykę UNIXową wprowadzono również możliwość przesłania sygnału. Jądro klienta po otrzymaniu sygnału wysyła do serwera zlecenie sygnału (ang. signal request). Serwer po jego otrzymaniu przekazuje sygnał do właściwego demona.

  4. Pamięć podręczna

    Ze względu na wydajność system RFS wspiera buforowanie danych po stronie klienta. Ponieważ jednak semantyka systemu RFS jest UNIXowa, należało zadbać, aby pamięć podręczna klientów była zawsze aktualna. Osiągnięto to dwojako:

    O spójność danych pamięci podręcznej dba serwer (jeśli plik jest współdzielony przez wielu klientów) lub klient (jeśli mamy do czynienia ze współdzieleniem przez różne procesy tego samego klienta). Gdy jakiś klient wykona operację write, wtedy rozsyłany jest komunikat do wszystkich innych klientów mających ten plik otwarty, że buforowane dane są nieaktualne. Pozostali klienci czytają dane bezpośrednio z serwera, dopóki plik będzie modyfikowany. Natomiast klient mający plik zamknięty może używać buforowanych danych, gdy numer wersji pliku w buforze zgadza się z tym zwróconym przez serwer w wyniku operacji otwierania.

    Rysunek: Zapewnianie spójności pamięci podręcznej w systemie RFS.
    \begin{figure}\centering\includegraphics{ula-obrazki/rfs4.ps}
\end{figure}


next up previous contents
Next: AFS Up: Sieciowe systemy plików Previous: NFS   Spis rzeczy
Elżbieta Krępska 2004-01-19