配置 NFS 网络文件系统

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cpf099/article/details/84205397

方法一:

1、进行 NFS 服务器端与客户端的安装

root@ubuntu:/# sudo apt-get install nfs-kernel-server nfs-common rpcbind

提示是否需要继续: Y

Do you want to continue [Y/n]? Y

安装客户端的作用是可以在本机进行 NFS 服务的测试。

2、配置 portmap

root@ubuntu:/# sudo dpkg-reconfigure rpcbind

运行后选择“No”

3、创建NFS共享目录

假设 NFS 共享目录是/home/nfs

$ sudo mkdir /home/nfs

4、配置 NFS

$ sudo vi /etc/exports

在/etc/exports 文件末尾加入下面一行:

/work/nfs *(rw,sync,no_subtree_check,no_root_squash)

允许所有用户访问 NFS 共享目录

5、启动 NFS 服务器

启动 portmap 和 nfs-kernel-server 服务:

sudo service portmap start;

sudo service nfs-kernel-server start

注:如果开发板不能挂载到宿主机可以试下以下方式:

sudo exportfs -a;

sudo /etc/init.d/portmap restart;

sudo /etc/init.d/nfs-kernel-server restart

6、本地验证 NFS

方法二:

一 安装NFS

$ sudo apt-get install nfs-kernel-server

$ sudo apt-get install nfs-common

二 配置NFS

1 $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N

2 $ sudo vi /etc/default/portmap 末行清除 "-i 127.0.0.1"

三 配置hosts.deny

$ sudo vi /etc/hosts.deny

文本末添加

### NFS DAEMONS

portmap: ALL

lockd: ALL

mountd: ALL

rquotad: ALL

statd: ALL

四 配置hosts.allow

$ sudo vi /etc/hosts.allow

文本末加入

### NFS DAEMONS

portmap: 192.168.1.

lockd: 192.168.1.

rquotad: 192.168.1.

mountd: 192.168.1.

statd: 192.168.1.

$ sudo /etc/init.d/portmap restart 重启portmap daemon.

显示如下

Since the script you are attempting to invoke has been converted to an

Upstart job, you may also use the restart(8) utility, e.g. restart portmap

portmap start/running, process XXXX

五 配置/etc/exports

$ sudo vi /etc/exports

文本末添加

/home/work *(rw,sync,no_root_squash)

chmod 777 -R /home/work

$ sudo showmount -e

显示 clnt-create : RPC : Program not registered

$ sudo exportfs -r 更新

$ sudo showmount 192.168.2.108 -e

显示

Export list for 192.168.2.66:

/home/work *

六 启用

$ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务

显示如下

* Stopping NFS kernel daemon [ OK ]

* Unexporting directories for NFS kernel daemon... [ OK ]

* Exporting directories for NFS kernel daemon...

exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/work".

Assuming default behaviour ('no_subtree_check').

NOTE: this default has changed since nfs-utils version 1.0.x

* Starting NFS kernel daemon [ OK ]

挂载

mount -t nfs 192.168.2.108:/home/work /mnt

mount -t nfs 192.168.2.66:/home/work /mnt -o nolock

内核支持NFS分区(即编译时在File system中选中[*] Root file system on NFS), 

以及支持内核IP_PNP(即编译时在Networking中选中[*] IP: kernel level autoconfiguration)

    File systems  ---> 

        Network File Systems  ---> 

            <*> NFS file system support                        ## 必选

                [*]   Provide NFSv3 client support             ## 可选

            [*] Root file system on NFS                        ## 必选

    Networking  ---> 

        [*] Networking support 

            Networking options  ---> 

                [*]   IP: kernel level autoconfiguration       ## 必选

需要打开IP:Kernel level autoconfiguration 以及下面所有的选项包括DHCP, BOOTP, RARP,而且NFS Client Support不能是模块,必须编译进内核

错误一:Cannot register service: RPC

service nfs restart

Shutting down NFS mountd: [ OK ]

Shutting down NFS daemon: [ OK ]

Shutting down NFS quotas: [ OK ]

Shutting down NFS services: [ OK ]

Starting NFS services: [ OK ]

Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused

rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).

[FAILED]

#解决方法:

service portmap start

#先启动portmap才行

错误二:Address already in use

tail -f /var/log/message

Apr :: bogon nfsd[]: nfssvc: Setting version failed: errno (Device or resource busy)

Apr :: bogon nfsd[]: nfssvc: unable to bind UPD socket: errno (Address already in use)

Apr :: bogon nfsd[]: nfssvc: Setting version failed: errno (Device or resource busy)

Apr :: bogon nfsd[]: nfssvc: unable to bind UPD socket: errno (Address already in use)

Apr :: bogon nfsd[]: nfssvc: Setting version failed: errno (Device or resource busy)

#解决方法:

ps aux | grep nfs

#然后用kill干掉这些进程

错误三:mount: …:/nfsdata failed, reason given by server: Permission denied

#解决方法:

a.把该客户端的ip加入服务端的/etc/exports

b.服务端的和客户端规则要统一,要么都使用主机名(注意每台机器的hosts文件),要么都使用IP

错误四:客户端挂载超时

tail -f /var/log/message

Apr :: localhost kernel: portmap: server localhost not responding, timed out

Apr :: localhost kernel: RPC: failed to contact portmap (errno -).

Apr :: localhost kernel: RPC: failed to contact portmap (errno -).

Apr :: localhost kernel: lockd_up: makesock failed, error=-

Apr :: localhost kernel: RPC: failed to contact portmap (errno -).

#解决方法:

service portmap restart

service nfs restart

错误五:Error: RPC MTAB does not exist.

service nfs start

Starting NFS services: [ OK ]

Starting NFS quotas: [ OK ]

Starting NFS daemon: [ OK ]

Starting NFS mountd: [ OK ]

Starting RPC idmapd: Error: RPC MTAB does not exist.

#解决方法:

#手动执行

mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs/

#需要时加入开机启动时,加入下面两行到/etc/fstab

rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults

nfsd /proc/fs/nfsd nfsd defaults

错误六:Loading: *** ERROR: Cannot mount

使用NFS下载内核的时候出现该错误 在Linux下是可以mount的 查看下载的目录是否有权限

在主机的/etc/hosts文件中增加一行名称解析內容:

目标板IP 根文件系统文件名

比如:我的/etc/hosts增加后变为:

127.0.0.1 localhost

127.0.1.1 ccc

#增加下面这句:开发板IP, nfs共享文件夹 192.168.0.111 /nfsboot/

猜你喜欢

转载自blog.csdn.net/cpf099/article/details/84205397
今日推荐