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/24192.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服务器
#servicerpcbindrestart #servicenfsrestart #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