NFS(network file system)网络文件共享服务【服务端:rpcbind端口111】
主要功能是通过网络让不同主机系统之间可以共享文件或目录。【NFS作为所有前端web服务器的共享存储】,NFS客户端的端口通过RPC(Pemote Procedure Call)服务来实现。【默认端口111】
RPCf服务在CentOS6.X下名称为rpcbind:主要功能就是记录每个NFS功能对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的客户端,从而确保客户端可以连接到正确的NFS端口上,达到实现数据传输交互数据目的。
安装软件包:yum -y install nfs-utils yum -y install rpcbind
检查rpcbind服务状态:/etc/init.d/rpcbind status
启动rpcbind服务:/etc/init.d/rpcbind start
确认rpcbind服务开启后,开启NFS服务:/etc/init.d/nfs start
查看rpchind服务与NFS都开启后信息:rpcinfo-p localhost
设置开机启动:chkconfig rpcbind on chkconfignfs on 查看:chkconfig --list rpcbind
NFS系统守护进程
nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;
mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。
portmap:主要功能是进行端口映射工作
exportfs -au 卸载所有共享目录
exportfs -rv 重新共享所有目录并输出详细信息
nfs服务需要开启mountd,nfs,nlockmgr, rpcbind,rquotad这5个服务,需要将这5个服务的端口加到iptables里面,nfs端口2049,rpcbind端口111。
nfsstat:查看NFS的运行状态
NFS配置文件的完整参数设定的文件: cat /var/lib/nfs/etab
NFS的配置文件/etc/export
格式:<共享目录>[客户端1 选项(访问权限,用户映射,其他)][客户端2……]
客户端:指定IP、域名、子网内所有主机0/24、所有主机:*
访问权限:ro只读、rw读写
用户映射:
no_root_squash:客户端登陆者如果为root,则登录共享目录后具有root权限
root_squash:root登录后身份被压缩为nfsnobody(默认情况下)
all_squash:所有用户登录后身份被压缩为nfsnobody(默认下)
anonuid=xxx:anongid=xxx:将访问的所有用户/组都映射为指定本地该用户的UID、GID。
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,可以提高效率;
NFS Server服务端设置【注意共享文件的权限】【注意加入开机启动项chkconfig】
可以直接用root用户建立,也可以用以下指定固定的UID用户配置NFS共享:
【建立用户组lhs并指定GID 888,建立用户lhs并指定GID 888,加入lhs组,所有的客户端也一样建立:groupadd zuma –g 888 useradd zuma –u 888 –g zuma
部署NFS Server:mkdir /oldboy chown –R zuma.zuma /oldboy 】
配置NFS服务配置文件【/etc/exports】:echo’/oldboy
192.168.50.0/24(rw,sync,all_squash,anonuid=888,anongid=888)’>>/etc/exports
重新加载NFS设置:exportfs –rv 或者/etc/init.d/nfs reload
服务器端使用showmount命令查询NFS的共享状态:
默认查看自己共享的服务:showmount –e localhost
显示已经与客户端连接上的目录信息:showmount –a
服务端部署完成
在客户端client执行的操作【注意共享文件的权限】
安装rpcbind、启动RPC服务、关闭防火墙、设置开机启动:yum install -y nfs-utils rpcbind
为了使用showmount等功能,所有客户端最好也安装NFS软件,但是不需要启动。
groupadd zuma –g 888 useraddzuma –u 888 –g zuma chown –R zuma.zuma/video
建立挂载点;mkdir /video 查看RPCF服务:/etc/init.d/rpcbind status
检查能否挂载:showmount –e 192.168.50.134【NFS服务器共享IP】
挂载客户端格式:mount NFS服务器IP:共享目录 本地挂载点目录
mount -t nfs 192.168.50.134:/oldboy /video
查看结果:df-h
测试文件 touch /video/new.txt ls –ld
指定NFS共享的用户zuma共享/oldboy目录的配置成功。
NFS客户端开机自动挂载:添加内容/etc/init.d/rpcbindstart和/bin/mount -t nfs 192.168.50.128:/oldboy /vide到文件/etc/rc.local内
排错:【端口、防火墙】
确定NFS服务器端的配置和服务是否OK:showmount–e localhost
挂载自己的目录下试试:mount -t nfs 192.168.50.134:/oldboy /video df -h
确认showmount是否OK:showmount–e 192.168.50.134
安全加优化的挂载方法:mount -t nfs –o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize-131072,wsize=131072192.168.50.128:/oldboy video
mount –o选项参数;
nosuid:不允许set-user-identifier orset-group-indentifier位生效;
noexec:在挂载的文件系统中不允许执行二进制文件
noatime:访问文件时不更新文件的inode时间戳,高并发环境下推荐使用,提高I/O性能
rsize、wsize:读出、写入的区块大小,影响输出数据的缓冲存储量。
intr:当使用挂载的资源timeout后可以在timeout后把它中断掉,避免整个系统被NFS锁死
【安全:nosuid、noexec、nodev】【优化:禁止更新时间戳noatime、nodiratime】
Showmount常用参数命令说明:
-e显示NFS服务器输出的目录列表、-d共享目录、-a:IP地址和可被挂载的目录
rpcinfo –n端口、-u主机名程序号、-p主机、-b-d程序号版本号
说明:
建立一个用户,设定UID和PID,在exports文件中加入anonuid和anongid的固定位置、可以设置多个IP中间逗号隔开,客户端与选项之间没有空格。