1. 关于NFS NFS就是Network File System的缩写,即网络文件系统。 功能:就是可以通过网络,让不同的机器,不同的操作系统可以彼此共享文档。 NFS的优点: a) 客户端使用更少的磁盘空间,通用的数据可以通过网络存放到NFS服务端。 b) 类似home目录的形式,可以使用NFS。 c) 诸如软驱,CDROM之类的存储设备可以再网络上面被别的机器使用,从而减少整个网络上的可移动介质设备的数量。 网络拓扑: 图1. 网络拓扑 2. 关于RPC RPC是Remote Procedure Call的缩写。 RPC的功能:指定每个NFS功能所对应的端口号,并且回报给客户端。 注意点: 启动NFS前必须先启动RPC,否则NFS无法向RPC注册。 如果RPC重启,那么它管理的所有服务都需要重启,以便重新向RPC注册。 NFS与RPC服务系统操作的相关性 图2. NFS 与 RPC 服务及文件系统操作的相关性 a) 客户端会向服务器端的RPC发出NFS档案存取功能的询问要求; b) 服务器端找到对应的已注册的NFS端口,并转发给客户端; c) 客户端得到正确端口后,就可以直接与NFS联机了。 RPC启动的守护进程 l rpc.nfsd:管理客户端是否能够使用服务器文件系统挂载信息等。 l rpc.mountd:管理NFS的文件系统。 l rpc.lockd(非必要):NFS的文件锁,必须在客户端和服务端同时启动,并常与rpc.statd同时使用。 l rpc.statd(非必要):检查文件的一致性, 更多守护进程参考帮助文档。 NFS的文件访问权限 图2. NFS 的服务器端与客户端的使用者身份确认机制 由于NFS本身没有登录身份识别,所有客户端和服务端的用户会存在如下三种情况: 1) 客户端和服务端同时有相同账号和组; 2) 客户端服务端同时具有UID为501的账号,则以UID为准。(以UID=501为例) 3) 客户端没有改UID的账号,则客户端身份会被强制变为匿名用户(UID为65534) 4) 特殊的用户root,默认情况下root会被强制为匿名用户。 注意点: NFS服务器有开发可写入的权限(在/etc/exports中设定), 实际的文件权限具有可写入的权限。 3. NFS Server端装配 需要的软件: CentOS 5.x NFS主程序:nfs-utils RPC主程序:portmap CentOS 6.x NFS主程序:ufs-utils RPC主程序:rpcbind NFS的软件结构: 主配置文件:/etc/exports NFS文件系统维护命令:/usr/sbin/exportfs 分享资源的登录文档:/var/lib/nfs/*tab,该目录下有两个比价重要的文档: l 一个是etab:主要记录NFS所分享出来的目录的完整权限设定值; l 一个是xtab:记录曾经链接到此NFS服务器的相关客户端数据。 客户端查询服务端分享资料的命令:/usr/sbin/showmount Exports配置文件的语法以及参数: [root@www ~]# vim /etc/exports/tmp 192.168.100.0/24(ro) localhost(rw) *.ev.ncku.edu.tw(ro,sync)[分享目录] [准许访问的客户端(权限)] [可用主机名] [可用通配符]关于主机名的使用方式: 1) IP 192.168.0.10; 2) 网段 192.168.1.0/24 192.168.1.0/255.255.255.0; 3) 主机名,在/etc/hosts内、或者使用DNS解析,可以支持通配符。 权限方面(更多参数参考man exports): rw 读写,最终能否读写还要与文件系统的rwx以及用户有关; ro 只读,最终能否读写还要与文件系统的rwx以及用户有关; sync 数据同步写入到内存与硬盘中; async 数据先暂存内存中,而非直接写入硬盘; no_root_squash 客户端不强制root用户变为匿名用户; root_squash 客户端强制root为匿名用户; all_squash 任何用户使用nfs都会强制变为匿名用户; anonuid 自定义UID anongid 自定义GID 启动NFS CentOS 5.x /etc/init.d/portmap start /etc/init.d/nfs start CentOS 6.x /etc/init.d/rpcbind start /etc/init.d/nfs start 启动日志:tail /var/log/messages 查看NFS监听端口: netstat –tulnp|grep –E ‘(rpc|nfs)’ rpcinfo –p localhost 显示共享目录:showmount –e localhost 查看NFS详细权限:tail /var/lib/nfs/etab 固定NFS端口 [root@www ~]# vim /etc/sysconfig/nfs RQUOTAD_PORT=1001 <==约在 13 行左右 LOCKD_TCPPORT=30001 <==约在 21 行左右 LOCKD_UDPPORT=30001 <==约在 23 行左右 MOUNTD_PORT=1002 <==约在 41 行左右 # 删除左边的注释,端口号可以自己设置。 4. NFS Client装配 手动挂载: 启动必须的服务: /etc/init.d/rpcbind start(CentOS 5.x /etc/init.d/portmap start) /etc/init.d/nfslock start(服务端启动该服务则客户端启动,否则不需要启动) 查看服务端的共享:showmount –e 192.168.1.10(为服务端IP或者主机名) 挂载:mkdir /home/nfs mount –t nfs 192.168.1.10:/home /home/nfs 测试命令:df 卸载:umount /home/nfs 客户端挂载参数: SUID(默认值) NOSUID:对应系统文件的SUID; rw(默认值) ro:读写权限 dev(默认值) nodev:是否保留挂载文档的特殊功能 exec(默认值) noexec:是否具有执行文件的执行权限。 user nouser(默认值):是否准许使用者进行文档的挂载和卸载功能 auto(默认值) noauto:auto指的是mount -a NFS特殊的挂载参数: fg(默认值) bg:设置挂载为前台执行还是后天执行, soft hard(默认值):hard状态,任何一端脱机,则RPC会持续呼叫,直到恢复。soft状态RPC会在time out后重复呼叫。 intr:使用hard挂载,在加上intr参数,则当RPC持续呼叫中,该次的呼叫是可以被中断的。 rsize wsize:读出与写入的区块大小,默认 rsize=1024 wsize=1024 无法挂载的可能原因: 1) 客户端测主机名或IP网段是否被准许 2) 服务端或客户端的某些服务未启动 3) 被防火墙挡住了 |
|
来自: charlie_linux > 《NFS》