1. NFS服务端安装与配置
a. 下载安装:~$ sudo apt-get install nfs-kernel-server
b. 安装完成后,创建NFS文件夹:~$ sudo mkdir /home/nfsroot
c. 修改NFS服务器配置:~$ sudo gedit /etc/exports
在exports最后一行写入:
/home/nfsroot *(rw,sync,no_root_squash,no_subtree_check)
其中:
/home/nfsroot:NFS文件夹
*:允许所有的网段访问,也可以使用具体的IP
rw:挂载此目录的客户端对该共享目录具有可读可写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限
no_subtree_check:不检查父目录的权限
d. 重启服务:
重启rpcbind服务:~$ sudo /etc/init.d/rpcbind restart
重启nfs服务:~$ sudo /etc/init.d/nfs-kernel-server restart
NFS服务端配置完成。如果出现nfs重启失败,请检查/etc/exports文件修改是否正确。
2. NFS服务端自测
a. 先在/home/nfsroot下创建一个test.txt文件供测试:
~$ sudo touch /home/nfsroot/test.txt
b. 挂载NFS文件夹至/mnt下:~$ sudo mount 127.0.0.1:/home/nfsroot /mnt ,挂载成功
c. 查看挂载文件夹确认挂载情况:~$ ls /mnt ,可在/mnt文件夹下找到test.txt文件
3. NFS客户端安装配置
NFS客户端在Ubuntu上使用~$ sudo apt-get install nfs-common 安装。ARM开发板则需要重新编译更新内核。
安装完成后输入~$ cat /proc/filesystems查看NFS客户端安装成功,有存在nodev nfsd一栏,就表示NFS客户端已经安装成功。
4. NFS客户端挂载
在命令行输入~$ sudo mount -t nfs 192.168.1.106:/home/nfsroot /mnt即可完成挂载
其中:
-t vfstype 指定文件系统的类型,可以不指定,mount会自动旋转正确的类型。
但在ARM开发板上操作失败,
~ # mount -t nfs 192.168.1.106:/home/nfsroot /mnt/nfsroot/
svc: failed to register lockdv1 RPC service (errno 111).
lockd_up: makesock failed, error=-111
mount: mounting 192.168.1.106:/home/nfsroot on /mnt/nfsroot/ failed: Connection refused
但在Ubuntu下可以正常挂载成功,在ARM开发板上却失败。这说明NFS Server应该是正常的,问题是在NFS客户端。
经分析可能的问题是:
Nfs mount默认选项包括文件锁,依赖于portmap提供的动态端口分配功能;
解决方法:
Kill 文件锁或添加-o nolock选项
~ # mount -o nolock -t nfs 192.168.1.106:/home/nfsroot /mnt/nfsroot/ 挂载成功!
5. ARM开发板开机自动挂载
修改/etc/init.d/rcS文件,添加开机自动挂载功能