NFS - Udostępnianie i montowanie udziałów
Wykorzystanie NFS (ang. Network File System), czyli sieciowego systemu plików, jest chyba najbardziej zbliżonym plikowym zasobem sieciowym do katalogów wstępujących klasycznie w systemie, mowa oczywiście o systemach UNIX. Nie chce wdawać się w szczegóły samego protokołu, ponieważ tutaj chciałybm skupić się na samej praktyce, niezbędną teorie przytoczę podczas omawania konkretnych przykładów.
Na początek zajmiemy się serwerem, kiedy będzie gotów przejdziemy wówczas do konfiugracji klienta. Przed przystąpieniem do instalacji oprogramowania NFS, upewnijmy się czy nasz system posiada aktualne źródła repozytorium oraz oprogramowanie. Przytoczę tutaj polecenia dystrybucji opartych na Debianie.
$ sudo apt update $ sudo apt upgrade
Po zainstalowaniu aktualizacji możemy przejść do instalacji właściwego oprogramowania.
$ sudo apt install nfs-kernel-server
Teraz przejdziemy do utworzenia katalogu udziału oraz nadamy mu odpowiednie uprawnienia.
$ sudo mkdir /example $ sudo chmod nobody:nogroup /example
/example
jest tutaj katalogiem udziału. Kiedy wykonaliśmy powyższe czynności mozemy przejść do udostępnienia katalogu z pomocą protokołu NFS. Otwieramy plik /etc/exports, plik może nie istnieć. Wewnątrz pliku deklarujemy nasz udział.
$ sudo vi /etc/exports # w /etc/export: /example 192.168.1.2(rw,sync,no_subtree_check,no_root_squash)
Tutaj:
/example
- jest nazwa katalogu udostępnianego za pomocą NFS,192.168.1.2
- jest adresem klienta, który będzie montował ten udział w swoim systemie, nie koniecznie musi byc to adres IP, więcej informacji na stronie podręcznikaman 5 exports
rw
- umożliwienie zapisu plików na tym udziale,sync
- wymusza zapis zmian na udziale, zapewnia stabliność działania i spójność danychno_subtree_check
- wyłącznie sprawdzania plików na udzialeno_root_squash
- wyłącznie zmiany uprawnień z uzytkownika root(na kliencie) na zwykłego (na serwerze) - Stosowane w przypadku udostepnienia podkatalogów katalogu głównego.
$ sudo systemctl restart nfs-kernel-server
Konfiguracja na serwerze została juz zakończona, w przypadku NFS widać że nie ma z dużo pracy. Teraz przejdziemy do konfiguracji klienta. Rozpoczynamy ją klasycznie od zainstalowania aktualizacji w systemie.
$ sudo apt update $ sudo apt upgrade
Kiedy aktualizacje są zainstalowane, możemy przejść do zainstalowania niezbędnego oprogramowania.
$ sudo apt install nfs-common
Po instalacji pakietu możemy sobie przetestować nasz udział NFS, za pomocą poniższego polecenia.
$ sudo mount 192.168.1.3:example /nfs_example
Gdzie:
192.168.1.3
- adres serweraexample
- nazwa udziału udostępnionego dla klienta/nfs_example
- punkt monotowania
mount
lub df -h
, w wynikach działania tych poleceń powinniśmy odnaleźć adres IP serwera, nazwę udziału oraz punkt montowania. Teraz kiedy już możemy korzysać z naszego udziału to warto wprowadzić do systemu klienta jedną zmianę, ustawić system tak aby sam montował udział podczas startu.
W plik /etc/fstab dopisujemy poniższą linie.
192.168.1.3:example /nfs_example nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
W przypadku tej linii to:
192.168.1.3:example
- jest wskazaniem adresu serwera wraz z nazwą udziału,/nfs_example
- punkt montowania,nfs
- montowany system plików.
auto
- (opcja globalna), spowoduje montowanie udziału kiedy zostanie wydane poleceniemount
wraz z przełącznikiem-a
, czyli montowanie wszystkich urządzeń, których wpisy znajdują się pliku /etc/fstab,nofail
- (opcja globalna), nie informuj o błedach podczas montowania tego urządzenia jeśli dane urządenie nie istnieje (lub jest nieosiągalne),noatime
- (opcja globalna), nie aktualizuj czasu dostępu do pliku kiedy plik jest odczytywany,nolock
- (opcja systemu plików), plik odczytywane przez aplikacje mogą zostać przez nie zablokowane aby inne procesy nie mogły ich użyć. Opcjanolock
, powoduje że działa to tylko w obrębie komputera klienta i nie wpływu na procesy wykonywane chociażby na serwerze gdzie udostępniony jest ten udział,intr
- (opcja systemu plików), umożliwia przerwanie operacji na plikach za pomocą sygnałów systemowych,tcp
- (opcja systemu plików), metoda połączenia i przekazywania danych protokołu NFS. TCP zapewnia najstabilniejsze rozwiązanie,actimeo=1800
- (opcja systemu plików), wskazuje na jak długo (ilość czasu wyrażona w sekundach) klient ma przechowywać w pamięci podręcznej atrybuty wykorzystywanych przez NFS plików. Tutaj ustawiono 30 minut,0
- (opcja globalna), pierwsze zero (0), oznacza ustawienie kopii zapasowej partycji wykonywanej przez program dump. Jeśli nigdy nie używaliśmy programu dump, to lepiej tą opcje pozostwić w wartości0
,0
- (opcja globalna), drugie zero (0), kwalifikuje partycję do sprawdzania przez narzędzie fsck, kolejno:0
- nie sprawdzaj partycji;1
- ta wartość powinna być stosowana przy partycji głównej (/ root), włącza sprawdzanie oraz wymusza pierwszeństwo;2
- opcja dla pozostałych partycji, które mają zostać sprawdzone. Wszystkie partycje z wartością2
są sprawdzane po kolei.
NFS jak widać jest natywnym systemem udostępniania plików w UNIX-ach a jego instalacja i konfiguracja nie należy do najtrudniejszych.
~xf0r3m