|
NFS jest 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. Ponadto można z niego
uruchamiać stacje bezdyskowe lub tworzyć rozproszone systemy plików.
Serwer
Najpierw instalujemy demona portmap (o ile nie jest już
zainstalowany) oraz demona NFS poleceniem:
# poldek -i portmap nfs-utils |
Serwer NFS jest gotowy do pracy od razu po zainstalowaniu,
wystarczy jedynie uruchomić usługę portmap,
a następnie nfs (dokładnie w tej
kolejności). Teraz możemy przejść do konfiguracji udziałów
sieciowych. Do podstawowej pracy serwera nie ma potrzeby
konfigurowania czegokolwiek, w pozostałych wypadkach należy
przyjrzeć się plikowi /etc/sysconfig/nfsd,
który może wyglądać następująco:
SERVICE_RUN_NICE_LEVEL="+0"
#RPCMOUNTOPTIONS="--no-nfs-version 3"
RPCNFSDCOUNT=8
NFSDTYPE=K |
-
SERVICE_RUN_NICE_LEVEL
- ustala priorytet serwera
-
#RPCMOUNTOPTIONS="--no-nfs-version 3"
- opcja dla jąder z serii 2.2, dla współczesnych
kerneli powinna być zakomentowana
-
RPCNFSDCOUNT -
podaje liczbę instancji serwera, czyli ilu klientów
może obsłużyć jednocześnie
-
NFSDTYPE - podaje czy serwer ma
pracować jako oddzielny demon (U), czy w trybie jądra (K).
Zalecane jest to drugie z rozwiązań, gdyż zapewnia
większą wydajność.
Modyfikacja pliku konfiguracji wymaga restartu uslugi.
Udostępnianie
Uruchomiliśmy serwer, teraz przyszedł czas na udostępnienie
zasobów. 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 - udostępniony katalog. Warto tutaj
wspomnieć, że jeżeli udostępniamy dany katalog
to nie możemy udostępnić w nowej regułce katalogu
będącego jego ojcem jak i synem, jeżeli leżą na
tym samym systemie plików. Udostępnianie partycji
FAT, itp. też nie jest dobrym rozwiązaniem.
-
$klient - IP lub nazwa komputera, któremu
udostępniamy katalog. Można podać także całą
sieć, wtedy zezwolimy wszystkim komputerom w
sieci na przeglądanie i/lub zapisywanie do
katalogu.
-
$opcje - tutaj możemy ustalić m.in. czy zasób
ma być udostępniony tylko do odczytu, czy także
do zapisu, oraz nałożyć inne ograniczenia.
Wszystkie opcje opisane są w manualu
(man exports).
Oto przykładowe wpisy do /etc/exports:
/srv/pub 192.168.0.1(ro) 192.168.0.2(rw)
/home 192.168.0.0/255.255.255.0(rw) |
Pomijając sensowność wpisów, pierwszy wiersz daje prawo
odczytu katalogu /srv/pub komputerowi
192.168.0.1 i prawo odczytu i zapisu komputerowi 192.168.0.2.
Drugi z kolei daje prawo zapisu do katalogu
/home komputerom z podsieci
192.168.0.0/24.
Jeżeli modyfikujemy /etc/exports w trakcie
pracy serwera to musimy poinformować demona, żeby ponownie odczytał
plik konfiguracji. Przed tym możemy sprawdzić czy nasze
wpisy są poprawne:
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:
W PLD stworzono grupę systemową fileshare,
która ma prawo do modyfikowania konfiguracji udziałów
sieciowych (NFS i SMB), bez konieczności posiadania praw
root-a. Aby nadać użytkownikowi takie prawo wystarczy zapisać
go do tej grupy, opis zarządzania grupami użytkowników
opisano w tym dokumencie.
Klient
Konfigurację klienta rozpoczynamy od zainstalowania i uruchomienia
usługi portmap. Jeśli chcemy, aby zasoby NFS były montowane w
trakcie startu systemu, instalujemy pakiet
nfs-utils-clients, dostarczający wymagany
rc-skrypt: /etc/rc.d/init.d/nfsfs.
Teraz przyszedł czas na połączenie się z
zasobem NFS, w tym celu musimy go zamontować np.:
# mount serwer.net:/srv/pub /mnt/net -t nfs |
serwer.net to IP bądź nazwa naszego serwera,
/srv/pub jest przykładowym udostępnionym katalogiem
na serwerze (wpisaliśmy go wcześniej do
/etc/exports). Katalog
/mnt/net to przykładowe miejsce podmontowania
zasobu.
Można użyć dodatkowo flagi -o a po niej
podać potrzebne nam opcje montowania. Pełną listę opcji
znajdziemy w podręczniku systemowym:
man 5 nfs.
Jeśli nic nie stoi na przeszkodzie abyśmy podłączali zasób przy
starcie systemu, to dodajemy wpis do
/etc/fstab:
192.168.0.1:/srv/pub /mnt/net nfs rw,hard,intr 0 0 |
Wpis wygląda znajomo, ale uwagę zwracają opcje
hard i intr. Otóż
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, za pomocą filtra
pakietów lub plików /etc/tcpd/hosts.allow
i /etc/tcpd/hosts.deny, co zostało
przedstawione poniżej.
Najpierw blokujemy wszystkim dostęp do naszych usług wpisując
do pliku pliku /etc/tcpd/hosts.deny:
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL |
Następnie w /etc/tcpd/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 |
NFS nie obsługuje autoryzacji na poziomie użytkownika, a
jedynie na poziomie hosta. Z tego względu nie bardzo nadaje
się do udostępniania w Internecie, jeśli to tylko możliwe
lepiej użyć protokołu FTP lub WebDAV.
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:
192.168.0.1:/usr/local /usr/local nfs rw,hard,intr,rsize=8192,wsize=8192 0 0 |
Domyślnie NFS działa w oparciu o protokół UDP, doświadczenie
pokazuje jednak, że przełączenie w tryb TCP może w niektórych
wypadkach zwiększyć szybkość przesyłu danych. Niestety nie każdy
serwer NFS obsługuje połączenia TCP, więc nie wszędzie możemy
użyć tej opcji. Na szczęście PLD zawiera demona pozwalającego na
używanie TCP. Aby włączyć tą opcję do linijki w pliku
/etc/fstab dodajemy wpis
tcp np.:
192.168.0.1:/usr/local /usr/local nfs rw,hard,intr,tcp 0 0 |
W przypadku protokołu NFS należy trochę eksperymentować z
ustawieniami, na początek dobrym pomysłem może być użycie obu
powyższych wskazówek. Więcej o dostrajaniu NFS-a można
odnaleźć w podręczniku systemowym.
|
|