最近做嵌入式开发的时候,需要NFS加载文件系统,顺便搭建了一个NFS。
NFS:Network File System
功能也就是能把远程网络的文件挂载到NFS Server上,在Server上看来,客户端的挂载的目录就像自己的子目录一样,可以对它操作。所以,对于嵌入式系统的调试是很方便的。
NFS支持的功能很多,所以对应的端口号是不固定的,是随机分配的,但都是小于1024。那么客户机是怎么连接到NFS Server上去的呢?这里有一个RPC的东西来支持。
RPC:(Remote Procedure Call Protocol)
远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
RPC在NFS搭建过程钟的功能就是在Server上分配端口号,可以让客户端能从远程连接上Server。RPC固定采用111端口监听。
所以整个NFS实现的过程就是:
-
Client向服务器的RPC(port 111)发出请求
-
服务器注册好端口,把端口信息传回客户端
-
客户端知道正确的端口后,可以连接NFS daemon
NFS 安装:nfs-utils(主要NFS功能) portmap(RPC 端口分配)
可以先rpm -qa | grep xxx 查看下,若不存在则安装!
NFS 配置文件
# vim /etc/exports 在这里可以对客户端各种权限的设置
/tmp *(rw,no_root_squash) # 允许任何IP挂载/tmp目录
NFS 启动
portmap启动
# service portmap start
或者
# /etc/init.d/portmap start
nfs启动
# service nfs start
或者
# /etc/init.d/nfs start
# netstate -tunl | grep “111″ #查看portmap有没有启动
# chkconfig –list | grep “nfs” #查看nfs服务是否启动
# showmount -e localhost #查看本地共享文件系统
NFS文件挂载
先在主机上尝试把/tmp挂载到/mnt下
[ local ]# mount 127.0.0.1:/tmp /mnt #进入/mnt查看
远程网络挂载
[ client ]# mount ServerIP:/tmp /mnt