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
mountKlient 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)