坚持也是一种胜利!
分类: LINUX
2012-10-24 16:57:22
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) 被防火墙挡住了