CentOS6搭建NFS服务器

EulGerstaec 8年前

来自: http://my.oschina.net/u/2381678/blog/628750


NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

  NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

  NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输

  • 系统环境

OS:centOS6

nfs server:172.17.210.219

nfs client:172.17.210.220

防火墙已关闭/iptables: Firewall is not running.

SELINUX=disabled

  • 安装NFS服务器

yum install nfs-utils.x86_64

这条命令把依赖包都安装了,可以直接使用。运行后安装了5个服务,分别是:nfs,nfslock,rpcbind,rpcgssd,rpcsvcgssd

按照我的习惯,把服务都关闭,需要时再打开:

chkconfig nfs         off

chkconfig nfslock     off

chkconfig rpcbind     off

chkconfig rpcgssd     off

chkconfig rpcsvcgssd  off

service nfs         stop

service nfslock     stop

service rpcbind     stop

service rpcgssd     stop

service rpcsvcgssd  stop

主要文件:

/etc/exports                           NFS服务的主要配置文件

/usr/sbin/exportfs                     NFS服务的管理命令

/usr/sbin/showmount                   客户端的查看命令

/var/lib/nfs/etab                      记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab                      记录曾经登录过的客户端信息

客户端也需要同样的安装,但是不需要开启服务。

  • 服务器配置

/etc/exports文件内容格式:

<输出目录> [客户端1(选项)] [客户端2(选项)]

a. 输出目录:

输出目录是指NFS系统中需要共享给客户机使用的目录;

b. 客户端:

客户端是指网络中可以访问这个NFS输出目录的计算机

客户端常用的指定方式

  • 指定ip地址的主机:192.168.0.200

  • 指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0

  • 指定域名的主机:david.bsmart.cn

  • 指定域中的所有主机:*.bsmart.cn

  • 所有主机:*

c. 选项

访问权限选项

  • 设置输出目录只读:ro

  • 设置输出目录读写:rw

用户映射选项

  • all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

  • no_all_squash:与all_squash取反(默认设置);

  • root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

  • no_root_squash:与rootsquash取反;

  • anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

  • anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

  • secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

  • insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

  • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

  • async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

  • wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

  • no_wdelay:若有写操作则立即执行,应与sync配合使用;

  • subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

  • no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;q

  • 启动NFS服务器

# service rpcbind restart  # service nfs restart  # exportfs

服务器执行命令:

# showmount -e     查询NFS的共享状态

# showmount -a   显示已经与客户端连接上的目录信息

客户端:

#showmount -e  NFS服务器IP                   查询NFS的共享状态

mount  172.17.210.219:/root/nfs   /root/nfs       挂载NFS

umount    /root/nfs                                          卸载NFS


参考:http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html