2012年(28)
分类: LINUX
2012-08-28 16:47:43
NFS原理,优化,配置
系统:Red Hat Enterprise Linux Server release 6.1 (Santiago)
NFS(网络文件系统):通过网络让不同的机器之间可以共享文件。
RPC(远程过程调用协议)
在nfs服务中,nfs的功能很多,所以nfs功能所对应的端口无法对应。所以系统就采用RPC这个服务,当启动nfs时会随机产生的端口号,主动的向RPC进行注册,然后采用rpc固定端口111来监听客户端的请求。
所以在启动NFS服务之前一定要启动RPC服务,否则NFS无法向RPC进行注册。
在nfs启动时至少需要2个daemon,一个是rpc.nfsd和rpc.mountd
Rpc.nfsd主要是管理客户机登陆nfs服务器时,判断改客户机是否能登陆,和客户机ID信息。
Rpc.mountd主要是管理nfs的文件系统。当客户机顺利登陆nfs服务器时,会去读/etc/exports文件中的配置,然后去对比客户机的权限。
当客户机挂载了远程nfs服务器时,会发现一个问题。当你用一个普通用户的身份去挂载nfs时,你可能会发现文件的UID和GID发生了变化,是因为NFS本身没有身份认证机制。如果nfs服务器和客户机都有相同的账号和组时,就不会有这样的问题(/etc/passwd和/etc/group相同)。如果不相同的话,可能服务器上的UID=501可能对应的是alan,但客户机上的uid=501可能对应的是alan1。
所以在用cat /etc/passwd | grep nfsnobody 会发现有一个nfsnobody这样用户,此时我们可以将nfs服务器上的共享目录的群主改为nfsnobody。
Nfs的配置文件为/etc/exports
/home/nfsshare *(rw,async,all_squash,anonuid=500)
snc:同步读写。数据同时写入到内存和硬盘中。
aync:异步读写。数据先暂存到内存中,然后再写到硬盘中。
no_root_squash:如果登录NFS服务器共享目录的用户是root的话,则该目录就有root权限。这个选项不建议使用。
root_squash:登录nfs服务器如果是root身份的话,则这个用户的权限被视为nfsnobody。
all_squash:不论登录NFS服务器的用户是什么身份,都被视为nfsnobody。
anonuid:一般和all_squash或root_squash在一起使用,定义登录nfs服务器后,显示的uid,这时的UID已经不是nfsnobody,而是客户机中/etc/passwd中显示的UID。
anongid:一般和all_squash或root_squash在一起使用,定义登录nfs服务器后,显示的gid,这时的GID已经不是nfsnobody,而是客户机中/etc/group中显示的GID。
服务启动:
/etc/init.d/nfs restart
/etc/init.d/rpcbind restart
mount -t nfs 192.168.140.133:/home/nfsshare /home/nfsdir/
此时你用df时就会发现nfs成功挂载上了。
Nfs优化:
mount -t –o rsize=8192,wsize=8192 nfs 192.168.140.133:/home/nfsshare /home/nfsdir/
rsize和wsize分别是nfs读写大小,可以根据各自系统的情况自行去设置读写大小。
当在系统中输入ps -ef | grep nfs,此时你会发现有很多nfsd的进程,这些进程就是nfs设置的最大连接数。
可以在/etc/init.d/nfs中进行修改[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8