一 NFS 简介
NFS是网络文件系统的简称(NetWork File System) 的简称,是分布式计算机系统的一个组成部分,可以实现在异构网络上共享和装配远程文件系统,NFS由SUN公司开发,目前已成为文件服务的一种标准(RFC1904,RFC1813),最大的功能就是让不同操作系统通过网络实现计算机共享数据。
NFS 协议:
使用NFS,客户端可以透明的访问服务器上的文件和系统,这不同于FTP协议,FTP会产生一个完整的副本,NFS只访问一个进程引用文件的那一部分,并且NFS的一个目的就是实现透明访问。
NFS使用sunRPC构造的客户端/服务器应用程序,NFS客户端通过向一个NFS服务器发送RPC请求来访问其上的文件,尽管这一工作可以使用一半的用户进程来实现, NFS客户端可以第一个用户进程,对服务器进行显式调用,而服务器也可以是一个用户进程--因为两个理由,NFS不能这样实现
1 :访问NFS文件必须是对客户端透明,因此NFS的客户端调用是由客户端操作系统代表用户进程实现的
2 :处于效率考虑,NFS服务器在服务器操作系统中实现,如果NFS服务器是一个用户进程,则每个客户端请求和服务器应答,将不得不在内核和用户进程之间进行切换,这个代价太大,
二 NFS工作流程
1 访问的是一个本地文件还是一个NFS文件对于客户端来说是透明的,当文件被打开时,由内核决定这一点,文件被打开后,内核将本地文件的所有引用传递该名为“本地文件访问”的框中,而将一个NFS文件的所有引用传递给名为“”NFS客户端“”的框中
2 NFS客户端通过他的TCp/ip模块向NFS服务器发送RPC请求,NFS主要使用UDP,最新的可以使用TCP
3 NFS服务器在端口2049接受作为UDP数据包的客户端的请求,尽管NFS是被实现成使用端口映射器,允许服务器使用一个临时端口,但是大多数实现都是直接指定UDP端口2049
4 当NFS服务器收到一个客户端的请求时,他将这个请求传递到本地文件访问例程,然后访问服务器上的一个本地的磁盘文件
5 NFS服务器需要花一段时间来处理一个客户端的请求,访问本地文件系统一般也需要一定的时间,在这段时间间隔内,服务器不应该阻止其他客户端的请求,为了实现这一功能,大多数NFS服务器都是多线程的,服务器的内核中实际有多个NFS本身的加锁管理程序中运行,实现不同操作系统的运行,共同技术就是启动一个用户进程(nfsd)的多个实例,这个实例执行一个系统调用,使自己作为一个内核进程保留在操作系统的内核中
6 同样在客户端主机上,NFS客户端需要花一定的时间来处理一个用户进程的请求,NFS客户端向服务器发送一个RFC调用,然后等待服务器的应答,为了给使用NFS客户端主机上的进程提供更过的并发性,在客户端内核中一般运行着多个NFS客户端,同样,具体实现依赖于操作系统
RPC(remote procedure call) 远程过程调用
因为NFS支持的功能多,不同功能都会使用不同程序来启动,每启动一个功能就会启动一些端口来传输数据,因此NFS的功能所对应的端口没有固定住,而是采用随机取用一些未被使用小于1024的端口来作为传输之用,如此又带来客户端想连服务器的困扰,因为客户端要知道服务器端口的相关端口才能够联机,此时我们使用RPC服务,RPC最主要的功能就是指定每一个NFS功能对应的端口,并且汇报给客户端,让客户端可以连接刀片正确的端口,RPC是如何知道每个NFS的端口号,这个因为服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,因此,RPC可以知道每个端口对应的NFS功能,然后PRC又是固定端口111来监听客户端的请求并汇报给客户端正确的端口,。
注:在启动NFS之前,必须先启动RPC,否则无法完成注册,所以NFS服务器也被称为RPC server 之一,那么NFS服务器的主要任务是进行文件系统的分享,文件系统的分享则与权限有关,所以NFS服务器启动时至少需要两个daemons,一个管理客户端是否能够登入的问题,另一个管理客户端能够取得权限。
其中RFC处于会话层,而NFS是应用层
NFS服务器的模块:
1 rpc.nfsd :主要的NFS服务器提供商,这个daemon主要的共鞥是管理客户端是否能够使用服务器文件西戎挂载信息等,其中还包括这个登入这的ID判断。
2 rpc.mountd :这个daemon 主要的共鞥,则是在管理NFS的文件系统,当客户端顺利通过rpc.nfsd而登入服务器之后,在他可以使用NFS服务器提供的档案之前,还会经过档案权限(-rwxrwxrwx 与 owner,group 那几个权限)的认证程序,它会读取NFS的配置文件/etc/exports来比较客户端的权限,当通过这一关之后就可以取得使用NFS档案的权限。
3 rpc.lockd (非必要)
这个是用在管理档案的锁定(lock)用途,当多个客户端同时尝试同时某个档案时,就需要此功能了,此服务需要在客户端和服务器端同时开启方可生效。,此外rpc.lockd也常与rpc.statd同时启动。
4 rpc.statd(非必要)
可以用来检查档案的一致性,与rpc.lockd有关,若发生因为客户端同时使用同一档案可能有所损毁时,rpc.statd可以用来检查并尝试恢复该档案,此服务也是客户端和服务器端同时开启方可
/etc/init.d/nfs /etc/init.d/nfslock中,
与服务器相关的在nfs中,与客户端相关的在rpc.lockd中
三NFS的配置文件
1 主要配置文件
:/etc/exports
2 NFS文件系统维护指令
:/usr/sbin/exportfs
可以利用这个指令重新分享/etc/exports 变更的目录资源,讲NFS server 分享的目录卸载或重新分享等,
3 分享资源的登录档:
/var/lib/nfs/*tab
4 客户端查询服务器资源的指令:
/usr/sbin/showmount
exports 是用在NFSserver端,showmount 则主要是用在client端的。
/etc/exports 中的参数设定
权限方面的参数设定:
三 NFS的安装与配置
1 一般NFS的挂载配置
1 NFS服务器端安装与配置
2 客户端检验结果
3 在服务器端开启防火墙安全策略
4 客户端测试
5 服务器端创建并编辑共享文件夹,并刷新
6 客户端查看并挂载
2 自动NFS的挂载配置
1 客户端卸载当前挂载
2 安装测试
注:其必须进入共享目录的最底层,
配置其快速卸载
配置自动挂载
上述文件/etc/auto.nfs需要自己建立
此配置为只读模式重启服务
测试:
此也需进入目录的最底层查看挂载情况:
其显示为只读挂载配置为读写挂载:
服务器端配置
授权并刷新:
查看验证
3 创建文件的限制
允许文件的权限1002的用户和1002的组
1 创建用户
2 加入其中并刷新
客户端测试
此时客户端若有1002的用户和组,则此UID为1002的用户将成为该文件的所属者和所属组
使其权限为root权限创建文件,之前创建的文件都是
客户端测试
若想对访问的用户进行控制和权限进行控制则
进行设置
客户端的/etc/auto.nfs 与服务器端的/etc/exports文件均为写权限切共享目录有写权限时方可执行写权限。
转载于:https://blog.51cto.com/11233559/2050478