NFS — Network File System, czyli pingwiny sobie rozmawiają

Obecnie w niemal każdym domu znajduje się kilka komputerów. Czy jednak jesteśmy skazani na żmudne nagrywanie danych na płyty, gdy chcemy je przenieść na inny komputer? Okazuje się, że wcale tak nie musi być – wystarczy skorzystać z NFS!

Autor: Maciej Gwizdała

Network File System (z ang. Sieciowy System Plików) umożliwia udostępnianie danych pomiędzy komputerami z systemami uniksowymi. Nie ma więc problemu, jeśli w domu mamy GNU/Linuksa, BSD oraz inne systemy z tej rodziny.

Oczywiście NFS nie jest jedynym rozwiązaniem tego typu. Istnieje również SAMBA współpracująca z systemami Windows oraz SSHFS, czyli system plików wykorzystujący bezpieczne połączenie, o którym pisał szerzej michuk w swoim artykule „Sztuczki z SSH”.

Poniższy artykuł został podzielony na trzy zasadnicze części:

  • Konfiguracja serwera i klienta za pomocą trybu graficznego
  • Konfiguracja serwera i klienta za pomocą konsoli
  • Automatyczne montowanie udostępnionego zasobu

Cz. I: Instalacja i konfiguracja za pomocą konsoli

Po pierwsze musimy zainstalować serwer NFS, który będzie zajmował się udostępnianiem danych między komputerami. W Debianie i pochodnych robimy to w następujący sposób:

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

W innych dystrybucjach korzystamy z odpowiedniego menedżera pakietów, aby zainstalować NFS i portmap. Teraz powinniśmy wyedytować plik /etc/exports – ja skorzystam z konsolowego edytora nano:

sudo nano /etc/exports

Do otwartego dokumentu powinniśmy wpisać np.:

/home/pub 192.168.0.4(rw)

Może nieco przybliżę składnię w tym pliku.
/home/pub – To folder, którego zawartość chcemy udostępnić.
192.168.0.4 – Tutaj podajemy adres IP komputera, który powinien mieć dostęp do naszego udostępnianego katalogu.
(rw) – rw jest skrótem od read/write, więc komputer, któremu udostępniamy zasób może dokonywać w nim zmian. Jeśli sobie tego nie życzymy, możemy zastosować atrybut tylko do odczytu – (ro).

Zapisujemy zawartość i wykonujemy operacje:

sudo /etc/init.d/nfs-kernel-server restart
sudo /etc/init.d/portmap restart
sudo exportfs -a

Te polecenia restartują serwer NFS i pobierają konfigurację umieszczoną w /etc/exports.

Serwer jest już gotowy, warto więc zająć się konfiguracją komputera, któremu chcemy udostępnić dane. Instalujemy na nim klienta NFS poprzez:

sudo apt-get install nfs-common portmap

Należy teraz stworzyć folder, do którego zamontujemy nasz zasób:

sudo mkdir /mnt/pub

Na koniec pozostaje już tylko zamontować udostępniony folder:

sudo mount -t nfs 192.168.0.2:/home/pub /mnt/pub

192.168.0.2 to oczywiście adres serwera udostępniającego pliki.

Jeżeli już nie potrzebujemy naszego zasobu, wpisujemy polecenie:

sudo umount /mnt/pub

Cz. II: Instalacja i konfiguracja za pomocą trybu graficznego

Aby udostępnić zasób, należy kliknąć prawym przyciskiem myszy na folderze i z menu wybrać „Udostępnij Folder”. Pojawi się takie okienko:

NFS w trybie graficznym

Wciskamy przycisk „Dodaj”. W następnym oknie wpisujemy adres IP komputera, któremu chcemy udostępnić zasób, zatwierdzamy wybór.

NFS w trybie graficznym

Gdy nie mamy zainstalowanego serwera NFS, system sam zadba o jego zainstalowanie.Aby zamontować zasób na kliencie, należy już skorzystać z konsoli (co zostało opisane nieco niżej).

Cz. III: Automatyczne montowanie

Od dawna wiadomo, że człowiek jest istotą leniwą i nie chce mu się za każdym razem wpisywać tych samych komend, aby montować zasób. Warto więc sprawić, aby zajął się tym system.

W tym celu należy otworzyć plik /etc/fstab

sudo nano /etc/fstab

a następnie dopisać do niego linijkę:

192.168.0.2:/home/pub  /mnt/pub   nfs      rw,hard,intr  0     0

Myślę, że warto objaśnić dwie opcje: hard oraz intr. Pierwsza z nich odpowiada za zawieszenie dostępu do danych, gdy serwer ulegnie awarii, natomiast druga umożliwia zabicie zawieszonego procesu poprzez komendę kill.

Linki do stron o NFS:

Korekta: oZz

Komentarze (RSS)
Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

22 komentarzy

  1. Tomahawk 29 grudnia 2007 o godz. 22:29 #

    Bardzo dobry artykuł, ale moim zdaniem należało jeszcze wspomnieć o wykorzystaniu NFS w Windowsie(tzn. Subsystem for UNIX-based Applications i Windows Services for UNIX). Nawet niekoniecznie opisywać krok po kroku, ale wspomnieć o takiej możliwości.

    Pozdrawiam

    • ~niedzwiedz 29 grudnia 2007 o godz. 23:21 #

      A ja myślę, że wręcz powinno być to opisane. Bo, niestety, często jeśli choć jeden komputer w domu ma Linuksa to dobrze

  2. Elwis 30 grudnia 2007 o godz. 0:16 #

    Fakt. Windows chyba potrzebowałby cygwina(?) żeby obsłużyć NFSa. Mój brat na szczęście poznał się na potędze wolnego oprogramowania ;)

  3. pawelbial 30 grudnia 2007 o godz. 0:20 #

    U mnie w domu rozwiązane jest to jeszcze inaczej :)

    Jest mój desktop i brata laptop. Na obu jest Windows i Linux i jak ktoś chce coś to łączy się poprzez sftp i nie ma problemu.

  4. lukas 30 grudnia 2007 o godz. 15:41 #

    Dodaj jeszcze, że można udostępniać napędy CD/DVD. Nie trzeba kopiować z CD/DVD na HDD a potem na drugi komputer- można zrobić to bezpośrednio.

    W części III po skonfigurowania pliku fstab, dobrze jest wczytać nowe informacje poleceniem mount -a ;]

  5. megaloman 30 grudnia 2007 o godz. 17:53 #

    może warto byłoby dodać, iż podanie adresu 192.168.0.0/24 pozwala na danie praw dostępu wszystkim komputerom w sieci lokalnej…

  6. bunny 30 grudnia 2007 o godz. 23:17 #

    Wydaje mi się że w artykułach powinno się raczej pisać zamiast

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

    "potrzebujemy pakietów :nfs-kernel-server nfs-common portmap."

    A polecenia tego typu:

    "sudo nano /etc/exports"

    zastępowac opisem że otwieramy plik w ulubionym edytorze tekstu.

    Opis graficznej konfiguracji również powinien zawierać notatkę o środowisku graficzny i uzytym distro.

    W opisie powinno się znaleść,że jest to instrukcja na bazie debiana/ubuntu czy czegoś tam.

    Taka tam sugestia.

    Ogólnie poradnik spoczko ;)

  7. mkkot 1 stycznia 2008 o godz. 15:17 #

    Właśnie się zabierałem za konfigurację NFS. Teraz już nawet nie muszę tego szukać ;)

  8. zeh 1 stycznia 2008 o godz. 21:36 #

    Żeby zadziałało należy wyedytować /etc/hosts.allow oraz hosts.deny oraz uruchomic portmap na komputerze kliencie.

  9. Zajec 2 stycznia 2008 o godz. 2:28 #

    Może komuś chciałoby się porównać wydajnośc w kopiowaniu plików przez NFS i Sambę? :)

    • AI 2 stycznia 2008 o godz. 12:55 #

      Wydajność zdecydowanie przemawia za nfs, u mnie przy kopiowaniu plików 700mb jest o połowę krócej. Na swich'u ma diody pokazujące obciążenie sieci to przy sambie 40% a nfs to okolo 90%…. co się przekłada na około 5-6mb/s na sambie i 10-11mb/s na nfs.

      Porównanie robiłem bez jakiś specjalnych optymalizacji obu protokołów, praktycznie standardowa instalacja.

  10. Piotrek 2 stycznia 2008 o godz. 13:32 #

    U mnie samba nie działa zbyt dobrze, trzeba będzie przetestować NFS

  11. Robert Pankowecki 3 stycznia 2008 o godz. 12:36 #

    No wszystko fajnie, tylko może jakaś krótka informacja nt. praw dostępu jakie pojawiają się na kliencie przy tego typu najprostszej instalacji ? Czy nie jest tak, że klient interpretuje uidy plików jako lokalne i należy na to uważać. To tak na marginesie :-)

  12. wolvverine 15 stycznia 2008 o godz. 7:29 #

    SMB jest duuużo wolniejsze od NFS-a

  13. ptr128 22 stycznia 2008 o godz. 21:16 #

    NFS świetnie spisuje się przy swapie w ramdysku, udostępnionym przez sieć. Swap taki działa kilkukrotnie (nawet 10-cio krotnie) wydajniej, niż najlepiej skonfigurowana nawet macierz. Jeżeli macie maszynę z dużą ilością ramu i chcecie "udostępnić" ten ram innym maszynom, zróbcie swapa w pliku na ramdysku i udostępnijcie przez NFS.

    • micign 5 lutego 2008 o godz. 1:52 #

      @ptr128: możesz rozwinąć ten pomysł odnośnie SWAP na ramdysku w sieci? Nie jestem pewien, czy dobrze wszystko rozumiem, możesz wyjaśnić krok po kroku jak miałoby to wyglądać?

  14. wolvverine 1 marca 2008 o godz. 3:27 #

    ramdysk działa z szybkoscia pamieci wiec przecietnie na obecnych domowych powyzej 1GB co przy kartach sieciowych 1GB pozwoli spory procent tej szybkosci wyciagnać, a co do macierzy to obecnie da sie wyciagnac jakies 2GB/s na niektorych (drogiiiich).

  15. daniel 17 marca 2009 o godz. 10:20 #

    dzieki za pomoc, dostałem 5 na zajeciach

  16. Arti_ 13 września 2009 o godz. 2:52 #

    Artykuł do d…

    Przepisane kilka linijek manuala.

    A jak zrobić, by NFS chodził zawsze na tym samym porcie (bo inaczej nie przejdzie przez firewalla)?

    TO byłoby bardziej pomocne…

    heh

(wymagane)
URI
Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

Literówki najlepiej zgłaszać jabberem: michuk@jakilinux.org lub kocio@jabber.org!

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <del>tekst przekreślony</del>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.