NFS服务器介绍
nfs(Network File System)即网络文件系统,其基于UDP/IP 使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
电脑上的文件系统就是开发板的文件系统,访问电脑上的文件就是访问开发板的文件,电脑上修改文件,直接同步到开发板上
NFS服务器特点
提供透明文件访问以及文件传输;
容易扩充新的资源或软件,不需要改变现有的工作环境;
高性能,可灵活配置。
NFS服务器适用场景
当我们在NFS服务器设置好一个共享目录Filesystem/share后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。
NFS服务器搭建
1.安装NHS
sudo apt-get install nfs-kernel-server
2.在根目录下创建一个目录,并在该文件下创建一个文件,用于测试nfs。
sudo mkdir /nfs
sudo mkdir /nfs/rootfs
sudo vi /nfs/rootfs/test.txt
3.修改配置文件
sudo vim /etc/export
添加如下内容:
/nfs/rootfs *(rw,sync,no_subtree_check,no_root_squash)
/nfs/rootfs:共享的目录;
*:代表任意IP都可以与之共享,不限定客户端
rw:共享文件可读可写
sync:将数据同步写入内存缓冲区与磁盘中,(不是先放缓冲区再写入磁盘)效率低,但可以保证数据的一致性;
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
no_root_squash:来访的是root用户,就保持root帐号权限;
4.Ubuntu17.10及以后版本需要增加以下配置,因为新版本Ubuntu只支持nfs 3和nfs 4,而uboot默 认使用nfs 2
sudo vi /etc/default/nfs-kernel-server
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
5.重启服务器
sudo service nfs-kernel-server restart
6.挂载到/mntfs目录下
sudo mount -t nfs localhost:/nfs/rootfs /mntfs
查看/mnfs,
这两个文件实现同步
7.取消挂载
sudo umount /mntfs
繁忙,在/mntfs下无法取消挂载,切换到其他目录就可以了
常见错误
错误现象: RPC: Program not registered & retrying 原因:nfs服务没有启动 解决方法:启动服务
错误现象:The stale file handle error 原因:服务器上的共享资源移动位置了 解决方法:客户端使用umount和mount重新挂接