首页 > 代码库 > linux   - NFS

linux   - NFS

NFS  -  Network File System  

作用: 主要功能就是通过网络使得不同的主机系统可以彼此共享文件和目录。 构建与IP协议之上。

应用场景: 应用在企业集群架构中,如存储共享的视频、图片、文件等静态资源(即一般将用户上传的放置在NFS共享里)  ——  共享存储 (解决集群请求分发时候原始用户访问不到之前上传的数据)

NFS客户端(一般为应用服务器)可以通过挂载(mount)的方式将NFS服务器端共享的数据文件目录挂载到客户端本地系统中。跟linux的samba及windows的共享目录相似。


文件系统选型:

	注意查看系统支持的文件系统种类:
	/lib/modules/kernel-versiion/kernel/fs   目录
	
	a、 SAS/SATA硬盘文件系统选择
		reiserfs : 大量小文件业务首选
		xfs : 数据库业务  门户案例
		ext4 : 视频下载、流媒体、数据库   小文件业务也ok
		ext2 : 蓝汛的cache业务 (ext2没有日志,数据难以恢复)
	
	常规应用:
		centos5X : 常规应用选磨人的ext3
		centos6X: 默认ext4 
	  centos默认文件系统很优秀; xfs与reiserfs是需要单独安装的,默认不支持,所以维护不方便。
	  大并发并不是过多的对磁盘做优化,而是前面增加做缓存。
	b、SSD 文件系统选择:
		
		Reiserfs、ext4 都可以,但未对ssd做优化,不能充分发挥ssd性能,且影响ssd使用时间。
		Btrfs 对ssd做了优化,mount通过参数启用,但文件系统处于试验阶段,生产慎用
		JFFS2、Nilfs2、YAFFS 是常用的flash file system ,在嵌入式环境应用广泛,建议使用。
		
		
NFS挂载 :

  常规挂载:  mount 源   目标
  NFS  :  mount  NFS-Server-IP:/源目录    本地目标目录
  
  NFS的服务端口不固定,而且启动时会开启很多其他的辅助端口,为了解决客户端确认服务端服务端口问题,NFS引入了 RPC 服务。
  NFS的RPC服务主要是记录每个NFS功能所对应的端口号。
  
  NFS原理:
  1、先开启RPC服务(方便NFS汇报自己情况)(centos5:portmap ; centos6 : rpcbind)
  2、启动NFS服务,向RPC服务上报自己开启的服务端口
  3、客户端请求NFS服务(如 3567)(客户端通过本地的RPC向远程RPC请求)
  4、返回端口等信息给客户端
  5、客户端利用端口及ip信息发起数据请求(注意客户端要开启RPC服务)
  
   rpcinfo  -p  localhost : 查看本地rpc  (rpc服务默认本地端口为 111)
  NFS:
         /etc/init.d/rpcbind start   (注意检查 chkconfig)
		/etc/init.d/nfs start 
		chkconfig nfs on
		chkconfig --list nfs
		
	NFS配置文件:/etc/exports   (配置共享的目录,注意其格式) :  /data  10.0.0.0/24(rw,sync)  
	
	注意: 添加了共享目录 ,需要重启nfs服务  :    /etc/init.d/nfs  reload     (使用reload平滑重启  ,尽量不要使用restart)
	
	检查是否可以共享(先自身检查下) : showmount -e localhost  (showmount主要在客户端使用)
	
	客户端挂载:  mount -t nfs 10.0.0.7:/data   /mnt   (直接命令方式挂载在重启后就会消失,所以最好放在rc.local)
	客户端查看挂载情况 :  df -h   即可看得到
	
NFS 总结(服务端):
	1、检查服务器版本:  
		cat /etc/redhat-release 
		uname -r
		uname  -m
	2、检查并安装NFS服务   
			rpm -aq  nfs-utils  portmap  rpcbind 
			LANG=en 
			yum gouplist 
			yum install mfs-utils rpcbind -y 
			rpm -aq  nfs-utils  portmap  rpcbind 
	3、启动RPCN及NFS服务	
          /etc/init.d/rpcbind start 
		  /etc/init.d/rpcbind status 
		  /etc/init.d/nfs start (注意先启动rpc服务)
		  ps -ef | grep rpc 
		  rpcinfo -p localhost 
	4、设置开启启动并检查
		chkconfig nfs on 
		chkconfig rpcbind on 
		
		chkconfig --list nfs 
		chkconfig --list rpcbind
		
	5、配置共享目录	(/etc/exports)
	cat >>/etc/exports<<EOF
	  # share data for xxx  at  2017-XXX
	  /data  10.0.0.0/24(rw,sync)
	EOF
	
	6、创建共享目录
	7、重新加载NFS服务并检查  : 
		/etc/init.d/nfs reload 
		showmount -e localhost


linux   - NFS