Sr-07-lab-1.0: Różnice pomiędzy wersjami
Lab 07 - NFS (1) |
(Brak różnic)
|
Aktualna wersja na dzień 20:00, 1 wrz 2006
Network File System
Network File System to rozproszony system plików stworzony przez firmę Sun Microsystems.
Konfiguracja klienta
Zanim klient będzie w stanie odwołać się do zasobów zdalnego systemu, musi poznać listę udostępnianych zasobów. Może to wykonać za pomocą komendy showmount(8)
:
# showmount -e localhost mount clntudp_create: RPC: Program not registered # showmount -e unixlab Export list for unixlab: /home lab1,lab2,lab3
Przełącznik -e
(od ang. export) pobiera listę zasobów (katalogów) ze wskazanego komputera czyli katalogów eksportowanych przez ten system. W powyższym przypadku komputer klienta nie udostępnia żadnego katalogu, bo nie został uruchomiony jeszcze serwer NFS. Implementacja serwera NFS jest oparta na mechanizmie RPC, a komunikat pochodzi od usługi portmap
wskazując, że nie ma zarejestrowanej wymaganej usługi RPC. Komputer unixlab
udostępnia katalog /home
i udostępnia go komputerom lab1
, lab2
, lab3
.
Klient systemu NFS jest wbudowany w jądro systemu operacyjnego. Uzyskanie dostępu do zdalnego katalogu wymaga dołączenia zdalnego systemu plików analogicznie do tego, jak wykonywane jest to lokalnie. Montowanie katalogu wymaga użycia komendy mount(8)
:
mount system_plików katalog_docelowy
Przykładem zastosowania komendy mount
jest dołączenie systemu plików z dyskietki lub napędu CD:
# mount /dev/fd0 /mnt
W przypadku dysków CD należy użyć nazwy /dev/cdrom
. Katalog /mnt
bardzo często wykorzystywany jest do tymczasowego dołączania systemów plików. Po poprawnym wykonaniu komendy mount
zawartość katalogu /mnt
powinna być tożsama z zawartością katalogu /home
na serwerze unixlab
. Przetwarzanie plików w katalogu /mnt
może być realizowane w taki sam sposób jak innych plików lokalnych.
Odłączenie systemu plików, zarówno lokalnego jak i zdalnego, wykonywane jest komendą umount(8)
:
# umount /mnt
Parametrem komendy może być zarówno nazwa katalogu jak i nazwa systemu plików. Katalog musi być niewykorzystywany, tzn. żaden proces nie może mieć otwartego pliku z podkatalogów tego katalogu i żaden proces nie może mieć skojarzonego żadnego z podkatalogów jako swojego katalogu bieżącego.
Dołączając system plików można wskazać jakiego jest on typu. System Linux obsługuje m.in. następujące systemy plików:
ext2
- standardowy system plików systemu Linux
ext3
- rozszerzona o księgowanie wersja systemu
ext2
vfat
- system plików FAT z obsługą długich nazw plików
ntfs
- system plików NTFS z Windows NT/200x/XP
iso9660
- system plików z dysków CD
udf
- system plików UDF (np. DVD-ROM)
nfs
- sieciowy system plików NFS
smbfs
- system plików SMB
reiserfs
- system plików ReiserFS
xfs
- system plików XFS
Dołączenie systemu plików z dyskietki formatowanej w systemie Windows można więc wykonać następująco:
# mount -t vfat /dev/fd0 /mnt
W przypadku systemu NFS identyfikacja systemu plików wymaga wskazania zdalnego serwera i katalogu na tym serwerze. Dołączenie katalogu /home
z systemu unixlab
można więc zrealizować następująco:
# mount -t nfs unixlab:/home /mnt
Dołączanie systemów plików może być parametryzowane dodatkowymi opcjami definiowanymi przełącznikiem -o
. Oto krótka lista ważniejszych opcji montowania:
ro
- tryb tylko do odczytu
atime
- włącznie aktualizacji daty ostatniego dostępu
dev
- włączenie interpretacji plików specjalnych reprezentujących urządzenia
exec
- zezwolenie na wykonywanie programów
suid
- włączenie interpretacji bitów SUID i SGID
sync
- synchroniczne wykonywanie operacji dostępu
async
- asynchroniczne wykonywanie operacji dostępu
remount
- zmiana parametrów montowania
Niektóre opcje występują również w wersjach negujących ich działanie z dodatkowym prefiksem no
, np. noatime
, nodev
, noexec
, nosuid
. Dołączenie zdalnego systemu plików w trybie tylko do odczytu można więc wykonać następująco:
# mount -o ro unixlab:/home /mnt
W przykładzie pominięto specyfikację typu systemu plików, gdyż wynika ona bezpośrednio z formatu reprezentacji urządzenia (nazwa_komputera:
katalog).
System plików NFS obsługuje wiele dodatkowych opcji montowania systemu plików. Pełną listę można znaleźć na stronie pomocy systemowej nfs(5)
. Oto ważniejsze z nich:
hard
- nieprzerwane odwoływanie się do serwera w przypadku awarii
soft
- sygnalizacja błędu na poziomie aplikacji w przypadku awarii serwera
intr
- umożliwia przerwanie operacji wejścia/wyjścia poprzez sygnał w przypadku montowania miękkiego (opcja
soft
) tcp
- połączenie z serwerem za pośrednictwem protokołu TCP
rsize=n
- rozmiar bufora odczytu z serwera NFS
wsize=n
- rozmiar bufora zapisu z serwera NFS
timeo=n
- czas oczekiwania na odpowiedź przed retransmisją żądania
retrans=n
- maksymalna liczba retransmisji przed zgłoszeniem błędu w trybie
soft
acreqmin=n
- minimalny czas przechowywania informacji o plikach zwykłych w pamięci podręcznej
acreqmax=n
- maksymalny czas przechowywania informacji o plikach zwykłych w pamięci podręcznej
acdirmin=n
- minimalny czas przechowywania informacji o katalogach w pamięci podręcznej
acdirmax=n
- maksymalny czas przechowywania informacji o katalogach w pamięci podręcznej
noac
- całkowite wyłączenie pamięci podręcznej dla atrybutów plików
Konfiguracja serwera
Konfiguracja serwera jest bardzo prosta i wymaga modyfikacji pliku konfiguracyjnego /etc/exports
. Plik ten zawiera listę katalogów, które będą udostępniane innym systemom. Oto przykład takiego pliku:
/home lab1(rw)
Po nazwie katalogu znajduje się lista komputerów, które będą miały prawo odwoływania się do tego katalogu. W nawiasach znajdują się dodatkowe opcje eksportowania takiego katalogu. Lista komputerów może zawierać nazwy w postaci domenowej (również z użyciem znaków uogólniających), adresy IP komputerów (i adresy sieci), odwołania do grup sieciowych. Oto przykład bardziej rozbudowanej konfiguracji:
/home *.cs.put.poznan.pl(ro) lab?.cs.put.poznan.pl(rw) /usr 192.168.0.0/255.255.255.0(async,rw) /export @lab
W przykładzie katalog /home
został udostępniony wszystkim komputerom z domeny cs.put.poznan.pl
do odczytu i wszystkim komputerom o nazwach zaczynających się od lab
z tej samej domeny w trybie do zapisu. Katalog /usr
jest udostępniany wszystkim komputerom o adresach od 192.168.0.1 do 192.168.0.254 w trybie asynchronicznym. Katalog /export
udostępniany jest wszystkim komputerom z grupy sieciowej lab
(zobacz dalej). Szczegółowy opis dostępnych opcji można znaleźć na stronie pomocy systemowej exports(5)
.
Uruchomienie serwera
wymaga wystartowania odpowiednich procesów usługowych. System NFS implementowany jest poprzez 2 protokoły (mountd
i nfs
), stąd 2 programy usługowe. Po uruchomieniu pierwszego z nich:
# rpc.mountd
będzie możliwe odpytanie serwera o listę dostępnych zasobów:
# showmount -e Export list for localhost: /export @lab /home lab?.cs.put.poznan.pl,*.cs.put.poznan.pl /usr 192.168.0.0/255.255.255.0
Próba dołączenia systemu plików skończy się jednak zawieszeniem operacji mount
. Do poprawnej pracy niezbędny jest drugi proces usługowy:
# rpc.nfsd
odpowiedzialny za właściwy dostęp do zawartości poszczególnych plików.
Rekonfiguracja
Każda zmiana wprowadzona do pliku /etc/exports
wymaga powiadomienia procesów usługowych serwera NFS. Można to zrobić wysyłając sygnał HUP do obu procesów usługowych:
# ps -ax ... # kill -HUP 2345 2456
Wartości 2345 i 2456 są identyfikatorami procesów rpc.mountd
i rpc.nfsd
. Można również wykorzystać do tego celu polecenia pkill(1)
:
# pkill -HUP rpc.mountd # pkill -HUP rpc.nfsd
lub killall(1)
:
# killall -HUP rpc.mountd rpc.nfsd
Niektóre implementacje serwera NFS udostępniają komendę exportfs
, która m.in. umożliwia aktualizację konfiguracji serwera:
# exportfs -r
Powyższe polecenie umożliwia również dynamiczne dodawanie i usuwanie katalogów przeznaczonych do udostępnienia, co ilustruje poniższy przykład:
# exportfs <== działa analogicznie do showmount -e /usr 192.168.0.0/255.255.255.0 /home *.cs.put.poznan.pl /home lab?.cs.put.poznan.pl # exportfs -u '*.cs.put.poznan.pl:/home' # exportfs -v /usr 192.168.0.0/255.255.255.0(rw,async,wdelay,root_squash) # exportfs -o ro lab1.cs.put.poznan.pl:/home # exportfs -v /usr 192.168.0.0/255.255.255.0(rw,async,wdelay,root_squash) /home lab1.cs.put.poznan.pl(ro,async,wdelay,root_squash)
Przełącznik -u
umożliwia usuwanie katalogu z listy udostępnianych katalogów. Przełącznik -v
włącza wyświetlanie dodatkowych informacji (np. opcji eksportowania katalogu). Przełącznik -o
powoduje ustawienie opcji eksportowanego katalogu.
Grupy sieciowe
Ograniczanie dostępu do katalogów na serwerze NFS może się odbywać w oparciu o grupy sieciowe. Grupa sieciowa konfigurowana jest w pliku /etc/netgroup
i składa się z trójek wartości:
(komputer, użytkownik, domena)
Każda z tych wartości może być pominięta. Z punktu widzenia zastosowania grup sieciowych do konfiguracji systemu NFS najważniejsza jest możliwość definiowania grup komputerów. Poniższy przykład pokazuje definicję grupy lab
składającej się z komputerów lab1
, lab2
, lab3
:
lab (lab1, , ) (lab2, , ) (lab3, , )
W pliku konfiguracyjnym /etc/exports
odwołania do grup sieciowych poprzedzone są znakiem @
:
/home @lab(rw,async,no_root_squash)
Zadania
- Dołącz wybrany system plików z dyskietki lub CD-ROMu do katalogu
/mnt
. - Dołącz wybrany system plików NFS do katalogu
/mnt
. - Skonfiguruj serwer NFS udostępniając przykładowy katalog, np.
/test
. Udostępnij katalog w trybie do odczytu, a następnie do zapisu dla wybranych komputerów. Zweryfikuj możliwość zapisu w katalogu zdalnym z poziomu użytkownikaroot
i zwykłego użytkownika. - Sprawdź odporność klienta systemu NFS na przejściowe awarie serwera. W tym celu zatrzymaj na chwilę działanie procesów serwera NFS.
- Sprawdź różnicę między trybami pracy dołączania zdalnego katalogu:
hard
,soft
i połączeniehard,intr
. - Sprawdź działanie pamięci podręcznej po stronie klienta NFS. W tym celu jednocześnie wyświetlaj zawartość katalogu po stronie klienta i zmieniaj ją po stronie serwera. Ćwiczenie wykonaj również po całkowitym wyłączeniu mechanizmu pamięci podręcznej.