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