NFS Server/Client

NFS w skrocie to usługa pozwalająca udostępniać zasoby dyskowe komputerom w sieci. Serwer udostępnia katalog(i) klientom, którzy mogą je podmontować i działać jak na lokalnym systemie plików

NFS Server

1) Instalujemy serwer NFS

sudo apt-get install nfs-kernel-server nfs-common mc portmap

2) Konfigurujemy portmap

sudo dpkg-reconfigure portmap

sudo /etc/init.d/portmap restart

3) Edytujemy plik /etc/exports aby stworzyc nowe udzialy NFS

sudo mcedit /etc/exports

W pliku /etc/exports definiuje się udostępniane katalogi, ich listę podajemy w postaci wierszy, które mają następującą składnię

$katalog $klient1($opcja1,$opcja2,...) $klient2($opcja1,$opcja2,...)

$katalog

- jest to nasz udostępniony katalog.

$klient

- podajemy tu IP lub nazwe komputera, któremu chcemy udostępnić katalog lub cala sieć za pomocą maski.

$opcje

- tutaj ustalamy m.in. czy zasób ma być udostępniony RO, czy także RW, oraz nałożyć inne ograniczenia. Wszystkie opcje opisane są w manualu (man exports).

Kilka przykladow co mozna tam umiescic:

#Pelne prawa odczytu i zapisu z dowolnogo komputera od ip 192.168.1.1 do 192.168.1.255

/files 192.168.1.1/24(rw,no_root_squash,async)

#Tylko odczyt z danego ip

/files 192.168.1.2 (ro,async)

4) Zapisz plik i wykonaj poniższą komende

sudo /etc/init.d/nfs-kernel-server restart

5) Po wykonaniu jakich kolwiek zmian w /etc/exports musisz wyeksportowac katalogi. Przed tym jednak możemy sprawdzić czy nasze wpisy są poprawne:

exportfs -v

Polecenie to wyświetli listę katalogów gotowych do wyeksportowania, jeśli któryś z udziałów nie jest wyświetlony, to prawdopodobnie popełniliśmy jakiś błąd w składni. Gdy jesteśmy pewni, że chcemy udostępnić udziały NFS, to wydajemy polecenie:

exportfs -rv

NFS Client

1) Montowanie reczne Przykladowo aby zamontowac udzial /pliki z serwera jakis.server.com w katalogu /media/pliki (oczywiście punkt montowania musi istnieć) wykonujemy

sudo mount -t nfs jakis.server.com:/pliki /media/pliki

Oczywście zamiast jakis.server.com można używać adresów IP tak jak wspomniałem wcześniej

2) Automatyczne montowanie przystarcie systemu. Edytujemy /etc/fstab

sudo mcedit /etc/fstab

a następnie według naszego przykładu dodajemy

jakis.server.com:/pliki /media/pliki nfs rw,hard,intr

hard oznacza, że programy korzystające z zasobów NFS w momencie awarii serwera zostaną zawieszone w oczekiwaniu na dostęp do danych i nie będzie możliwości ich odwieszenia w postaci polecenia kill, chyba, że dodamy opcję intr dzięki czemu będziemy mogli zabić dany proces. Zamiast hard możemy użyć opcji soft, jednak w przypadku awarii serwera NFS sygnalizuje błąd programom korzystającym z zasobów. Wadą tego rozwiązania jest to, że nie wszystkie programy potrafią poradzić sobie z takim komunikatem i może dojść do utraty danych.

Bezpieczeństwo serwera

Musimy zadbać o bezpieczeństwo naszego serwera, podstawowym sposobem zabezpieczania zasobu jest ograniczenie dostępu. Możemy go ograniczać za pomocą ustawień w pliku /etc/exports lub za pomocą plików /etc/hosts.allow i /etc/hosts.deny, co zostało przedstawione poniżej.

Najpierw blokujemy wszystkim dostęp do naszych usług wpisując do pliku pliku /etc/hosts.deny

portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL

Następnie w /etc/hosts.allow wpisujemy komputery, którym zezwalamy na korzystanie z wymienionych usług. Możemy zarówno wpisać adresy IP komputerów jak i całą podsieć.

portmap: 192.168.0.0/255.255.255.0

lockd: 192.168.0.0/255.255.255.0

rquotad: 192.168.0.0/255.255.255.0

mountd: 192.168.0.0/255.255.255.0

statd: 192.168.0.0/255.255.255.0

Dostrajanie wydajności

Wolne działanie protokołu NFS wskazuje przeważnie na brak odpowiedniego dostrojenia połączenia, wystarczy ustawić kilka opcji by uzyskać zaskakująco duży wzrost wydajności. Podane poniżej zalecenia dotyczą konfiguracji klienta.

Na początek zajmiemy się opcjami rsize i wsize. Dzięki nim możemy zwiększyć szybkość odczytu i zapisu plików na serwer. Manual systemowy radzi by ustawić im na wartości: rsize=8192 i wsize=8192. Linijka w pliku /etc/fstab będzie wyglądać teraz następująco:

jakis.server.com:/pliki /media/pliki nfs rw,hard,intr,rsize=8192,wsize=8192 0 0

na podstawie google, ang. forum ubuntu.

poprawki Mr Robby