Udostępnianie zasobów dyskowych w sieci lokalnej przy pomocy Network File System
Ostatnia zmiana: 2019-08-13 18:41

NFS umożliwia udostępnianie zasobów dyskowych i jest de facto standardem w sieciach uniksowych. W OpenWrt można zarówno montować jak i udostępniać zasoby dyskowe przy pomocy NFS.

Założenie - w systemie jest katalog który chcemy udostępnić - czy to katalog systemowy, czy podmontowany dysk. W tym przykładzie będzie udostępniony katalog /mnt/sda1. Nie każdy system plików można udostępnić przez NFS.
Poradnik przetestowano na OpenWrt 19.07.

Serwer NFS

Działa w przestrzeni jądra i powinien być najszybszą i najwydajniejszą implementacją.

Instalacja



    # opkg update
    # opkg install nfs-kernel-server

Zostaną zainstalowane także inne pakiety wynikające z zależności.

Konfiguracja

Odbywa się poprzez edycję pliku /etc/exports. W przykładnie udostępniamy katalog /mnt/sda1:


    /mnt/sda1 *(rw,all_squash,insecure,sync,no_subtree_check,fsid=0)

Można udostępnić inne katalogi, można także określić adresy IP komputerów które mają mieć dostęp do określonych zasobów obraz prawa zapisu/odczytu:


    /mnt/sda2 192.168.1.2,192.168.1.3,192.168.1.4(ro,sync,no_subtree_check,fsid=0)
    /mnt/sda3 192.168.1.2(rw,sync,no_subtree_check,fsid=0)
    /mnt/sda4 192.168.1.3(rw,sync,no_subtree_check,fsid=0)

Udostępnione katalogi muszą już istnieć w systemie.

Uruchomienie



    # /etc/init.d/nfsd enable
    # /etc/init.d/nfsd start

Jeżeli zostanie wyświetlony błąd typu:


    exportfs: /mnt/sda1 does not support NFS export

oznacza to że system plików nie może być udostępniony (np. squashfs) i należy ustawić inny katalog.

Klient NFS - OpenWrt

Instalujemy niezbędne pakiety i protokoły:


    # opkg update
    # opkg install nfs-utils kmod-fs-nfs-v4 kmod-fs-nfs-v3 kmod-fs-nfs

Tworzymy katalog gdzie ma być montowany zasób oraz go montujemy:


    # mkdir -p /tmp/nfs
    # mount -t nfs 192.168.1.1:/mnt/sda1 /tmp/nfs

gdzie

  • 192.168.1.1 - adres IP serwera NFS
  • /mnt/sda1 - nazwa udostępnionego zasobu, musi być zgodna z wpisem z /etc/exports na serwerze
Poprawność montowania można sprawdzić poleceniem mount

Klient NFS - linux

Zależy zainstalować pakiet zawierający pakiety powiązane z NFS, dla systemów debianopochodnych (Debian, Ubuntu, LinuxMint) jest to pakiet nfs-common


    $ sudo apt install nfs-common

Następnie należy utworzyć katalog i zamontować zasób:


    $ sudo mkdir -p /tmp/nfs
    $ sudo mount -t nfs 192.168.1.1:/mnt/sda1 /tmp/nfs


Można także odpowiednio zmodyfikować plik /etc/fstab aby NFS był montowany wraz ze startem systemu.

Informacje dodatkowe

overlay

Jeżeli mamy extroot to "normalne" udostępnianie może powodować błąd NFS. Należy wskazać pierwotnie miejsce na dysku, czyli w katalogu /overlay - jeżeli chcemy udostępnić katalog /mnt/dane to podajemy:


    /overlay/mnt/dane *(ro,all_squash,insecure,sync,no_subtree_check,fsid=0)

ipv6

Jeżeli w logach pojawia się informacja typu


    Jan 1 01:01:08 OpenWrt user.warn kernel: svc: failed to register lockdv1 RPC service (errno 124)

i używamy ipv6 to oznacza że używana wersja rpc.nfsd nie obsługuje ipv6. Należy poszukać innej.

Brak protokołu

Jeżeli przy montowaniu zasobu wyświetli się komunikat


    mount.nfs: Protocol not supported

lub w logach serwera pojawi się informacja typu:


    Tue Aug 13 18:05:44 2019 kern.info kernel: [ 1553.749284] NFS: bad mount option value specified: minorversion=1

może świadczyć to o braku załadowanego modułu do obsługi danej wersji protokołu NFS. Należy zainstalować odpowiedni pakiet i zainstalować moduły (dla OpenWrt pakiety: kmod-fs-nfs-v4 kmod-fs-nfs-v3 kmod-fs-nfs)