注意:资源与内容较老,参考即可
目 录
一、NFS管理.................................................................................................................. 1
1.1、NFS基础知识................................................................................................... 1
1.2、NFS启动的 RPC daemons(后台进程)................................................................. 4
1.3、NFS 的文件存取权限(以linux为例).................................................................. 5
1.4、NFS Server 端的设定........................................................................................ 6
1.5、/etc/exports文件讲解......................................................................................... 9
1.6、exportfs命令................................................................................................... 12
1.7、主机端如何mount输出的资源......................................................................... 13
二、NETAPP关于NFS的文档....................................................................................... 15
2.1、NFS基础知识................................................................................................. 15
2.2、NFS的配置..................................................................................................... 17
2.3、访问权限测试.................................................................................................. 20
2.4、NFS的性能调整.............................................................................................. 23
一、NFS管理
1.1、NFS基础知识
NFS 就是 Network FileSystem 的缩写,最早是由 Sun 公司所提出的。 它最大的功能就是可以通过网络,让不同的计算机、不同的操作系统、可以彼此分享档案 (share files)。所以,也可以简单的将它看做是一个档案服务器 (file server)!这个 NFS 服务器可以让你的PC将网络远端的 NFS 主机分享的目录,挂载到本地端的机器当中, 在本地端的机器看起來,那个远端主机的目录就好像是自己的一个磁盘分区(partition)!使用上相当的方便!
既然 NFS 是通过网络来进行资料的传输,那么 NFS 使用那个 port来进行传输呢?答案是....不知道!因为 NFS 用来传输的 port 是随机选择小于 1024 以下的端口来使用的。 那用户端怎么知道服务器端使用那个port 呢?这时候就得要远程过程调用(Remote Procedure Call, RPC) 协议来辅助了。
远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务。由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。在 RPC 中,发出请求的程序是客户程序,而提供服务的程序是服务器。
因为NFS支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些 port 来传输资料,因此, NFS 的功能所对应的 port 才没有固定住, 而是采用随机取用一些未被使用的小于1024 的端口来作为传输之用。但如此一来又造成客户端想要连上服务器的困扰, 因为客户端必须要知道服务器端的相关端口才能够连接。
这时候RPC 最主要的功能就是指定每个NFS 功能所对应的 port number ,并且反馈给客户端,让客户端可以连接到正确的端口上去。 那 RPC 又是如何知道每个NFS 的端口呢?这是因为服务器在启动NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后RPC 又是固定使用 port 111 来监听客户端的需求并反馈客户端正确的端口。
所以在服务器端启动NFS服务之前,RPC对应的portmap服务就要启动了,否则NFS无法注册端口。
由于 NFS 的各项功能都必須要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能的 port number, PID, NFS 服务器所监听的 IP 等等,而客户端才能够通过 RPC 找到正确对应的端口。 也就是说,NFS 必須要有 RPC 存在时才能成功的提供服務, 因此我们称 NFS 为RPC server 的一种。事实上,有很多这样的服务器都是向 RPC 注册的, 比如,NIS (Network Information Service) 也是 RPC server 的一种。 此外,不论是客户端还是服务器端,在要使用 NFS 时,两者都需要启动 RPC 才行。
在linux服务器上启动NFS服务的过程 [root@rhel5 ~]# service nfs start ç==没有启动portmap服务前,NFS启动不了 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] Starting NFS daemon: [FAILED] Starting NFS mountd: Cannot register service: RPC: Unable to receive; errno = Connection refused [FAILED] [root@rhel5 ~]# service portmap start ç==先启动portmap服务后,NFS启动正常 Starting portmap: [ OK ] [root@rhel5 ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] ------------------------------------------------------------------------------------------------------------ [root@rhel5 ~]# ps -ef|grep rpc root 1842 1 0 Dec12 ? 00:00:00 rpc.statd root 1875 1 0 Dec12 ? 00:00:00 rpc.idmapd rpc 9280 1 0 18:53 ? 00:00:00 portmap root 9310 1 0 18:53 ? 00:00:00 rpc.rquotad root 9319 7 0 18:53 ? 00:00:00 [rpciod/0] root 9326 1 0 18:54 ? 00:00:00 rpc.mountd [root@rhel5 ~]# netstat -ultn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5801 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:752 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1010 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:47093 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:601 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN tcp 0 0 :::6001 :::* LISTEN tcp 0 0 :::22 :::* LISTEN udp 0 0 0.0.0.0:1024 0.0.0.0:* udp 0 0 0.0.0.0:2049 0.0.0.0:* udp 0 0 0.0.0.0:1212 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:* udp 0 0 0.0.0.0:746 0.0.0.0:* udp 0 0 0.0.0.0:749 0.0.0.0:* udp 0 0 0.0.0.0:1007 0.0.0.0:* udp 0 0 0.0.0.0:111 0.0.0.0:* udp 0 0 0.0.0.0:631 0.0.0.0:* udp 0 0 0.0.0.0:1022 0.0.0.0:* udp 0 0 :::1025 :::* udp 0 0 :::5353 :::* [root@rhel5 ~]# rpcinfo -p localhost program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100011 1 udp 1007 rquotad 100011 2 udp 1007 rquotad 100011 1 tcp 1010 rquotad 100011 2 tcp 1010 rquotad NFS版本 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 udp 1212 nlockmgr 100021 3 udp 1212 nlockmgr 100021 4 udp 1212 nlockmgr 100021 1 tcp 47093 nlockmgr 100021 3 tcp 47093 nlockmgr 100021 4 tcp 47093 nlockmgr 100005 1 udp 1022 mountd 100005 1 tcp 601 mountd 100005 2 udp 1022 mountd 100005 2 tcp 601 mountd 100005 3 udp 1022 mountd 100005 3 tcp 601 mountd [root@rhel5 ~]# cat /etc/services|grep 111 sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP tan> netstat -an ç==在存储上看111端口也是开的 Active TCP connections (including servers) Local Address Remote Address Swind Send-Q Rwind Recv-Q State *.80 *.* 0 0 0 0 LISTEN *.445 *.* 0 0 0 0 LISTEN *.139 *.* 0 0 0 0 LISTEN *.10568 *.* 0 0 0 0 LISTEN *.10569 *.* 0 0 0 0 LISTEN *.10567 *.* 0 0 0 0 LISTEN *.10571 *.* 0 0 0 0 LISTEN *.22 *.* 0 0 0 0 LISTEN *.514 *.* 0 0 0 0 LISTEN *.23 *.* 0 0 0 0 LISTEN *.4047 *.* 0 0 0 0 LISTEN *.4045 *.* 0 0 0 0 LISTEN *.4046 *.* 0 0 0 0 LISTEN *.2049 *.* 0 0 0 0 LISTEN *.111 *.* 0 0 0 0 LISTEN Active UDP sockets (including servers) Local Address Remote Address Send-Q Recv-Q *.138 *.* 0 0 *.137 *.* 0 0 *.69 *.* 0 0 *.161 *.* 0 0 *.4049 *.* 0 0 *.4047 *.* 0 0 *.4045 *.* 0 0 *.4046 *.* 0 0 *.2049 *.* 0 0 *.111 *.* 0 0 *.520 *.* 0 0 |
NFS是一个分布式文件系统,它容许用户访问远程系统上的文件和目录,这些文件和目录对用户来说好像是在本地。用户可以使用OS命令创建,删除,读写远程文件和目录,以及设置远程文件和目录的属性,而这一切都是在本地完成的。NFS使用RPC而不受本地机器类型、OS和网络结构的限制。
NFS基于客户机/服务器模式。一个NFS服务器拥有本地磁盘上的文件,客户机通过NFS访问它。拥有实际磁盘,并通过NFS将这些磁盘共享出来的主机叫NFS服务器,通过NFS访问文件系统的叫NFS客户机。服务器给客户机共享文件系统的操作叫做导出(export ).客户机要访问服务器导出的文件系统之前,必须在本地先挂接(mount)这个文件系统。
NFS服务器导出的目录叫做远程资源,并通常写做:hostname:pathname 格式,其中hostname是NFS服务器的主机名,pathname是服务器上被导出目录的绝对路径。在客户机上安装远程资源的那个目录叫做挂接点(mount point)。
更多内容请下载附件查看:
网友留言: