Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281055
  • 博文数量: 28
  • 博客积分: 690
  • 博客等级: 上士
  • 技术积分: 860
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-24 13:52
文章分类

全部博文(28)

文章存档

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启动时至少需要2daemon,一个是rpc.nfsdrpc.mountd

         Rpc.nfsd主要是管理客户机登陆nfs服务器时,判断改客户机是否能登陆,和客户机ID信息。

         Rpc.mountd主要是管理nfs的文件系统。当客户机顺利登陆nfs服务器时,会去读/etc/exports文件中的配置,然后去对比客户机的权限。

 

         当客户机挂载了远程nfs服务器时,会发现一个问题。当你用一个普通用户的身份去挂载nfs时,你可能会发现文件的UIDGID发生了变化,是因为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_squashroot_squash在一起使用,定义登录nfs服务器后,显示的uid,这时的UID已经不是nfsnobody,而是客户机中/etc/passwd中显示的UID

anongid:一般和all_squashroot_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/

rsizewsize分别是nfs读写大小,可以根据各自系统的情况自行去设置读写大小。

当在系统中输入ps -ef | grep nfs,此时你会发现有很多nfsd的进程,这些进程就是nfs设置的最大连接数。

可以在/etc/init.d/nfs中进行修改[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8

阅读(6682) | 评论(0) | 转发(2) |
0

上一篇:防止SSH攻击

下一篇:滑动窗口

给主人留下些什么吧!~~