PLD-doc/book/pl_book__uslugi/pl_uslugi__nfs.sec
qwiat
cvs w pld-linux.org
Pon, 31 Paź 2005, 02:16:38 CET
Author: qwiat
Date: Mon Oct 31 02:16:35 2005
New Revision: 6506
Modified:
PLD-doc/book/pl_book__uslugi/pl_uslugi__nfs.sec
Log:
- dodane info o grupie fileshare
- opisana wyhaszowana opcja --no-nfs-version 3
- zalecenie instalacji portmap na maszynie kliencie
- nieco wzbogacone opisy
- liczne poprawki jezykowe, kosmetyka
- nowe formatowanie kodu zrodlowego
Modified: PLD-doc/book/pl_book__uslugi/pl_uslugi__nfs.sec
==============================================================================
--- PLD-doc/book/pl_book__uslugi/pl_uslugi__nfs.sec (original)
+++ PLD-doc/book/pl_book__uslugi/pl_uslugi__nfs.sec Mon Oct 31 02:16:35 2005
@@ -2,204 +2,261 @@
<section id="uslugi_nfs">
<title>NFS - Network File System</title>
<para>
- 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 bootować stacje
- bezdyskowe lub tworzyć rozproszone systemy plików.
+ <productname>NFS</productname> 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.
</para>
+
+
<section id="uslugi_nfs_serwer">
- <title>Serwer</title>
- <para>
- Najpierw instalujemy wszystkie potrzebne rzeczy poleceniem:
- </para>
- <screen># poldek -i nfs-utils portmap</screen>
- <para>
- Następnie ustawiamy podstawowe opcje serwera, zawarte w pliku
- /etc/sysconfig/nfsd . Powinien on wyglądać podobnie :
- </para>
- <screen># Set nice level for rpc.mountd, rpc.nfsd or knfsd
-SERVICE_RUN_NICE_LEVEL="+0"
+ <title>Serwer</title>
+ <para>
+ Najpierw instalujemy demona portmap (o ile nie jest już
+ zainstalowany) oraz demona NFS poleceniem:
+ </para>
+ <screen># poldek -i portmap nfs-utils</screen>
+ <para>
+ Serwer NFS jest gotowy do pracy od razu po zainstalowaniu,
+ wystarczy jedynie uruchomić usługę <filename>portmap</filename>,
+ a następnie <filename>nfs</filename> (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 <filename>/etc/sysconfig/nfsd</filename>,
+ który może wyglądać następująco:
+ </para>
+<screen>SERVICE_RUN_NICE_LEVEL="+0"
+
+#RPCMOUNTOPTIONS="--no-nfs-version 3"
-# Customized setings for knfsd
-RPCMOUNTOPTIONS="--no-nfs-version 3"
RPCNFSDCOUNT=8
-# Server type we are running, U for userland NFSD, K for knfsd
NFSDTYPE=K</screen>
- <itemizedlist>
- <listitem>
- <para><option>SERVICE_RUN_NICE_LEVEL</option></para>
- <para>ustala priorytet serwera</para>
- </listitem>
- <listitem>
- <para><option>RPCNFSDCOUNT</option></para>
- <para>podaje liczbę instancji serwera, czyli ilu klientów może obsłużyć jednocześnie</para>
- </listitem>
- <listitem>
- <para><option>NFSDTYPE</option></para>
- <para>podaje czy serwer ma pracować jako oddzielny demon czy w trybie jądra.</para>
- </listitem>
- </itemizedlist>
- <para>
- Mamy już wstępnie skonfigurowany serwer NFS,
- uruchamiamy usługę <filename>portmap</filename> i
- <filename>nfs</filename> - dokładnie w tej kolejności.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para><option>SERVICE_RUN_NICE_LEVEL</option>
+ - ustala priorytet serwera</para>
+ </listitem>
+ <listitem>
+ <para><option>#RPCMOUNTOPTIONS="--no-nfs-version 3"</option>
+ - opcja dla jąder z serii 2.2, dla współczesnych
+ kerneli powinna być zakomentowana</para>
+ </listitem>
+ <listitem>
+ <para><option>RPCNFSDCOUNT</option> -
+ podaje liczbę instancji serwera, czyli ilu klientów
+ może obsłużyć jednocześnie</para>
+ </listitem>
+ <listitem>
+ <para><option>NFSDTYPE</option> - 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ść.</para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Modyfikacja pliku konfiguracji wymaga restartu uslugi.
+ </para>
</section>
-
-
-
<section id="uslugi_nfs_serwer_export">
- <title>Udostępnianie</title>
- <para>
- Uruchomiliśmy serwer, teraz przyszedł czas na udostępnienie zasobów.
- W pliku <filename>/etc/exports</filename> znajdują się udostępnione katalogi. Do pliku wpisujemy:
- </para>
- <screen>$katalog $komputer1($opcja11,$opcja12) $komputer2($opcja21,$opcja22)</screen>
- <itemizedlist>
- <listitem>
- <para>
- $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.
-</para></listitem>
-<listitem><para>
- $komputer - 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.
-</para></listitem>
-<listitem><para>
- $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).
-</para></listitem>
-</itemizedlist>
- <para>
- Oto przykładowe wpisy do <filename>/etc/exports</filename>:
- </para>
- <screen>/usr/local 192.168.0.1(ro) 192.168.0.2(rw)
+ <title>Udostępnianie</title>
+ <para>
+ Uruchomiliśmy serwer, teraz przyszedł czas na udostępnienie
+ zasobów. W pliku <filename>/etc/exports</filename> definiuje
+ się udostępniane katalogi, ich listę podajemy w postaci
+ wierszy, które mają następującą składnię:
+ </para>
+ <screen>$katalog $klient1($opcja1,$opcja2,...) $klient2($opcja1,$opcja2,...)</screen>
+ <itemizedlist>
+ <listitem>
+ <para>
+ $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.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ $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.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ $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
+ (<command>man exports</command>).
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Oto przykładowe wpisy do <filename>/etc/exports</filename>:
+ </para>
+<screen>/srv/pub 192.168.0.1(ro) 192.168.0.2(rw)
/home 192.168.0.0/255.255.255.0(rw)</screen>
- <para>
- Pomijając sensowność wpisów, to pierwszy daje prawo odczytu katalogu <filename>/usr/local</filename> komputerowi 192.168.0.1, i prawo odczytu i zapisu komputerowi 192.168.0.2. Drugi z kolei daje prawo zapisu do katalogu <filename>home</filename> komputerom z podsieci 192.168.0.0/24.
- </para>
- <para>
- Jeżeli modyfikujemy <filename>/etc/exports</filename> w trakcie
- pracy serwera to musimy poinformować demona żeby ponownie odczytał
- plik konfiguracji. Przed tym możemy sprawdzić czy nasze
- wpisy są poprawne:
- </para>
-
- <screen># exportfs -v</screen>
- <para>
- 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.
- </para>
- <para>
- Jeśli jesteśmy pewni że chcemy udostępnić udziały NFS to wydajemy
- polecenie:
- </para>
- <screen># exportfs -rv</screen>
+ <para>
+ Pomijając sensowność wpisów, pierwszy wiersz daje prawo
+ odczytu katalogu <filename>/srv/pub</filename> komputerowi
+ 192.168.0.1 i prawo odczytu i zapisu komputerowi 192.168.0.2.
+ Drugi z kolei daje prawo zapisu do katalogu
+ <filename>/home</filename> komputerom z podsieci
+ 192.168.0.0/24.
+ Jeżeli modyfikujemy <filename>/etc/exports</filename> w trakcie
+ pracy serwera to musimy poinformować demona, żeby ponownie odczytał
+ plik konfiguracji. Przed tym możemy sprawdzić czy nasze
+ wpisy są poprawne:
+ </para>
+ <screen># exportfs -v</screen>
+ <para>
+ 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:
+ </para>
+ <screen># exportfs -rv</screen>
+ <para>
+ W PLD stworzono grupę systemową <literal>fileshare</literal>,
+ 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 <xref linkend="administracja_grupy" />.
+ </para>
</section>
-
-
-
<section id="uslugi_nfs_klient">
- <title>Klient</title>
- <para>
- W PLD standardowo możemy podmontowywać zasoby po nfs-ie,
- nie potrzeba instalować żadnych dodatkowych pakietów.
- </para>
- <para>
- Katalogi montujemy następująco:
- </para>
- <screen># mount serwer.net:/usr/local /usr/local -t nfs</screen>
- <para>
- <literal>serwer.net</literal> to numer IP bądź nazwa naszego serwera
- serwującego zasoby, a <filename>/usr/local</filename> nazwa udostępnionego katalogu
- na serwerze (wpisaliśmy go wcześniej do <filename>/etc/exports</filename>.
- Można podać jeszcze flagę <command>-o</command> a za nią podać potrzebne nam opcje
- montowania. Jeżeli zauważysz, że mount niepokojąco długo się wykonuje, powinieneś
- używać opcji <command>-o</command> z odpowiednimi parametrami, więcej o tym przeczytasz
- w podrozdziale o dostrajaniu wydajności.
- </para>
- <para>
- Nic nie stoi na przeszkodzie abyśmy podłączali zasób przy starcie systemu.
- Robimy w tym celu wpis do <filename>/etc/fstab</filename>:
- </para>
- <screen>192.168.0.1:/usr/local /usr/local nfs rw,hard,intr 0 0</screen>
- <para>
- Wpis wygląda znajomo, ale uwagę zwracają opcje <command>hard</command> i
- <command>intr</command>. Otóż <command>hard</command> 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 <command>kill</command>,
- chyba, że dodamy opcję <command>intr</command> dzięki czemu będziemy mogli zabić dany proces.
- Zamiast <command>hard</command> możemy użyć opcji <command>soft</command>,
- 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.
- </para>
+ <title>Klient</title>
+ <para>
+ Konfigurację klienta rozpoczynamy od zainstalowania i uruchomienia
+ usługi portmap. Teraz przyszedł czas na połączenie się z
+ zasobem NFS, w tym celu musimy go jedynie zamontować np.:
+ </para>
+ <screen># mount serwer.net:/srv/pub /mnt/net -t nfs</screen>
+ <para>
+ <literal>serwer.net</literal> to IP bądź nazwa naszego serwera,
+ <literal>/srv/pub</literal> jest przykładowym udostępnionym katalogiem
+ na serwerze (wpisaliśmy go wcześniej do
+ <filename>/etc/exports</filename>). Katalog
+ <literal>/mnt/net</literal> to przykładowe miejsce podmontowania
+ zasobu.
+ Można użyć dodatkowo flagi <command>-o</command> a po niej
+ podać potrzebne nam opcje montowania. Pełną listę opcji
+ znajdziemy w podręczniku systemowym:
+ <command>man 5 nfs</command>.
+ </para>
+ <para>
+ Jeśli nic nie stoi na przeszkodzie abyśmy podłączali zasób przy
+ starcie systemu, to dodajemy wpis do
+ <filename>/etc/fstab</filename>:
+ </para>
+ <screen>192.168.0.1:/srv/pub /mnt/net nfs rw,hard,intr 0 0</screen>
+ <para>
+ Wpis wygląda znajomo, ale uwagę zwracają opcje
+ <literal>hard</literal> i <literal>intr</literal>. Otóż
+ <literal>hard</literal> 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 <command>kill</command>,
+ chyba, że dodamy opcję <literal>intr</literal> dzięki czemu
+ będziemy mogli zabić dany proces. Zamiast
+ <literal>hard</literal> możemy użyć opcji <literal>soft</literal>,
+ 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.
+ </para>
</section>
<section id="uslugi_nfs_serwer_bezpieczenstwo">
- <title>Bezpieczeństwo serwera</title>
- <para>
- Musimy zadbać o bezpieczeństwo naszego serwera.
- Do tego służą pliki</para>
- <para><filename>/etc/tcpd/hosts.allow</filename> i <filename>/etc/tcpd/hosts.deny</filename>
- </para>
- <para>
- Najpierw blokujemy wszystkim dostęp do naszych usług wpisując
- do pliku pliku <filename>/etc/tcpd/hosts.deny</filename>:
- </para>
- <screen>portmap:ALL
+ <title>Bezpieczeństwo serwera</title>
+ <para>
+ Musimy zadbać o bezpieczeństwo naszego serwera, podstawowym
+ sposobem zabezpieczania zasobu jest ograniczenie dostępu.
+ Możemy go ograniczać za pomocą ustawień w pliku
+ <filename>/etc/exports</filename>, za pomocą filtra
+ pakietów lub plików <filename>/etc/tcpd/hosts.allow</filename>
+ i <filename>/etc/tcpd/hosts.deny</filename>, co zostało
+ przedstawione poniżej.
+ </para>
+ <para>
+ Najpierw blokujemy wszystkim dostęp do naszych usług wpisując
+ do pliku pliku <filename>/etc/tcpd/hosts.deny</filename>:
+ </para>
+<screen>portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL</screen>
- <para>
- Następnie w <filename>/etc/tcpd/hosts.allow</filename> wpisujemy komputery,
- którym zezwalamy na korzystanie z wymienionych usług.
- Możemy zarówno wpisać adresy IP komputerów jak i całą podsieć.
- </para>
- <screen>portmap: 192.168.0.0/255.255.255.0
+ <para>
+ Następnie w <filename>/etc/tcpd/hosts.allow</filename>
+ wpisujemy komputery, którym zezwalamy na korzystanie z
+ wymienionych usług. Możemy zarówno wpisać adresy IP
+ komputerów jak i całą podsieć.
+ </para>
+<screen>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</screen>
+ <para>
+ 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.
+ </para>
</section>
<section id="uslugi_nfs_wydajnosc">
- <title>Dostrajanie wydajności</title>
- <para>
- 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.
- </para>
- <para>
- Na początek zajmiemy się opcjami <emphasis>rsize</emphasis> i <emphasis>wsize</emphasis>.
- Dzięki nim możemy zwiększyć szybkość odczytu i zapisu plików na serwer. Manual systemowy
- radzi by ustawić im na wartości: <emphasis>rsize=8192</emphasis> i
- <emphasis>wsize=8192</emphasis>. Linijka w pliku
- <filename>/etc/fstab</filename> będzie wyglądać teraz następująco:
- </para>
- <screen>192.168.0.1:/usr/local /usr/local nfs rw,hard,intr,rsize=8192,wsize=8192 0 0</screen>
- <para>
- Domyślnie NFS działa w oparciu o protokół UDP, doświadczenie pokazuje jednak, że przełączenie
- w tryb TCP wyraźnie zwiększa 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
- <filename>/etc/fstab</filename> dodajemy wpis
- <emphasis>"tcp"</emphasis> np.:
- </para>
- <screen>192.168.0.1:/usr/local /usr/local nfs rw,hard,intr,tcp 0 0</screen>
- <para>
- 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.
- </para>
+ <title>Dostrajanie wydajności</title>
+ <para>
+ 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.
+ </para>
+ <para>
+ Na początek zajmiemy się opcjami <literal>rsize</literal>
+ i <literal>wsize</literal>. Dzięki nim możemy zwiększyć
+ szybkość odczytu i zapisu plików na serwer. Manual systemowy
+ radzi by ustawić im na wartości: <literal>rsize=8192</literal> i
+ <literal>wsize=8192</literal>. Linijka w pliku
+ <filename>/etc/fstab</filename> będzie wyglądać teraz następująco:
+ </para>
+ <screen>192.168.0.1:/usr/local /usr/local nfs rw,hard,intr,rsize=8192,wsize=8192 0 0</screen>
+ <para>
+ 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
+ <filename>/etc/fstab</filename> dodajemy wpis
+ <literal>tcp</literal> np.:
+ </para>
+ <screen>192.168.0.1:/usr/local /usr/local nfs rw,hard,intr,tcp 0 0</screen>
+ <para>
+ 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.
+ </para>
</section>
</section>
Więcej informacji o liście dyskusyjnej pld-doc