搭建NFS共享存储服务

NFS介绍

  NFS(Network File System)网络文件系统。它的主要功能是通过网络让不同的主机系统之间可以共享文件或者目录。
  NFS网络文件系统很像windows系统的网络共享,linxu系统的samba服务类似。一般情况下,windows网络共享服务或者samba服务用于局域网内共享。互联网中小型企业网站集群架构后端常用NFS进行数据共享。如果是大型的网站可能还会用到更加复杂的分布式文件系统;如Moosefs(mfs)、GlusterFS、FastDFS等.
NFS企业中使用场景


实例:
  淘宝网就曾替换了很多硬件设备,比如用 lvs+haproxy替换netscaler负载均衡设备。用FastDFS、TFS配合PC服务器替换了netapp、emc等商业存储设备,去IOE正在成为互联网公司的主流。
NFS工作原理流程图

NFS系统是通过网络利用RPC服务来进行数据传输
注:RPC中文意思是远程调用,

  1.先启动RPC服务
  2.启动NFS服务(nfs会自动注册启动的端口)
  3.客户请求NFS服务
  4.返回端口到客户
  5.客户拿着地址端口请求传输数据

NFS服务搭建

部署前环境准备

服务器系统                  角色                        IP
Centos 6.6 x86_64       NFS服务器(nfs-server)      10.0.0.7
Centos 6.6 x86_64       NFS客户端1(nfs-server)      10.0.0.8
Centos 6.6 x86_64       NFS客户端2(nfs-server)      10.0.0.9

小技巧:保存yum安装的程序
vi /etc/yum.conf
keepcache=0更改为keepcache=1

默认的存放目录:
cachedir=/var/cache/yum/$basearch/$releasever
一些基础软件:
yum install lrzsz nmap tree dos2unix nc -y
更新系统
yum update 或者yum upgrade
查看NFS软件包
rpm -qa nfs-utils rpcbind
安装NFS
yum install nfs-utils rpcbind
启动服务
1.先启动RPC服务(默认端口111\894)
/etc/init.d/rpcbind start
查看rpcbind是否启动
netstat -lntup|grep rpcbind
查看NFS注册的端口
rpcinfo -p localhost
2.启动NFS服务(nfs会自动注册启动的端口,主端口2049)
/etc/init.d/nfs start
加入开机自启动
chkconfig rpcbind on
chkconfig nfs on

NFS的常用服务
查看NFS的进程
ps -ef|egrep "rpc|nfs"

rpcbind   #rpcbind服务的主程序
rpc.statd   #检查文件一致性
rpc.rquotad   #磁盘配额进程
rpc.mountd   #权限管理验证等
rpc.idmapd   #名字后台映射
nfsd   #nfs服务的主程序

NFS服务的配置

NFS服务端配置文件路径
NFS服务的默认配置文件路径为/etc/exports 并且默认是空的
/etc/exports的配置格式:
NFS的共享的目录 NFS客户端地址(参数1 参数2)


查看exports的语法文件:
man exports 然后切换到文件结尾,可以快速查看格式
说明:
1.NFS共享的目录:
NFS服务端的要共享的实际目录,要用绝对路径(如/data)注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写;
2.客户端地址:
为NFS客户端的授权访问的共享目录的NFS客户端地址,单独的IP地址或者主机名域名等,可以为整个的网段地址,还可用”*”来匹配所有客户端地址。

企业生产场景NFS exports配置实例

配置1(NFS服务器端):

/data 10.0.0.0/24(rw,sync)  #允许客户端读写,并且数据同步到服务器的磁盘里
说明:默认的连接到NFS服务器的客户端拥有的是nfsnobody的权限

1)创建共享目录并授权nfsnobody访问

mkdir /data/ -p #创建要共享的目录
id nfsnobody  #查看nfsnobody的uid,gid,组信息
ls -ld /data   #查看data的属性信息
chown -R nfsnobody.nfsnobody /data   #授权nfsnobody访问data目录

2)编辑exports配置文件信息

cat >>/etc/exports<<EOF
#share data by liuliya for kaifa at 20161231
/data 172.16.1.0/24(rw,sync)
EOF

查看配置
cat /etc/exports
3)配置文件生效
/etc/init.d/nfs reload
4)检查NFS是否正常服务

showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

出现以上提示初步说明NFS服务正常

showmount -e 172.16.1.31
mount -t nfs 172.16.1.31:/data /mnt
df -h
umount /mnt

经过以上步骤说明服务端NFS服务正常
配置NFS客户端
1)安装NFS并检查

yum install nfs-utils rpcbind
rpm -qa nfs-utils rpcbind

2)启动rpcbind

/etc/init.d/rpcbind start
/etc/init.d/rpcbind status

3)配置rpcbind开机启动并检查

chkconfig rpcbind on
chkconfig --list rpcbind

4)挂载nfs服务端到客户端目录
挂载前检查确认有正确回显
showmount -e 172.16.1.31
挂载命令:
mount -t nfs 172.16.1.31:/data /mnt
命令解释:

mount -t #挂载的类型
nfs  #服务名称
172.16.1.31:/data  #NFS服务器地址对应的共享目录
/mnt  #客户端本地的挂载目录

5)检查是否挂载正常
方法1:
df -h
  看到172.16.1.31:/data 8.8G 1.5G 7.0G 18% /mnt即是挂载成功
方法2:
cat /proc/mounts
6)挂载命令放到开启启动(rc.lcoal)并检查

echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
tail -1 /etc/rc.local

NFS故障总结

前提:NFS原理以及部署的步骤要熟练

1.yum install nfs-utils -y 后不启动服务
2.wrong fs type错误提示 :解决办法: 安装nfs-utils
 提示:Centos5及以前版本没有这个问题;Centos6.6客户端不安装nfs-utils会出现,安装nfs-utils即可
3.selinux和iptables没关(防火墙端口111是否阻挡)
4.配置文件错误(格式不正确)
5.服务器共享目录要授权
6.注意rpcbind 和nfs启动顺序

补充NFS服务开机挂载
1.如果把客户端挂载的命令的放在/etc/fstab里面实现开机挂载会有问题。
因为NFS服务开启优先于网卡启动
解决办法:
安装netfs服务加入开机启动即可
NFS配置文件常用参数说明

rw    #Read-Write  表示可读写权限
ro    #Read-only    表示只读权限
sync   #请求或者写入数据时,数据同步写入到NFS Server的硬盘后才返回
优点,数据安全不会丢,缺点,性能比不启用要差。
async    #写入数据时会优先写入到内存缓冲区,只有当硬盘空档才会写入磁盘,这样可以提升写入效率,风险为若服务器
宕机或不正常关机,会丢失缓冲区未写入磁盘的数据。(解决办法:主板加电池或UPS不间断电源)
all_squash    #不管访问NFS共享目录的用户身份如何,它的权限都被压缩成匿名用户,同时他的UID和GID都会变成nfsnobody的身份

生产中配置NFS的重要技巧:
1)确保所有客户端服务器对NFS共享目录具有相同的用户的访问权限;
2)所有的客户端和服务端需要有一个相同UID和GID的用户即nfsnobody(UID必须相同)
anonuid #参数以anon*开头即指anonymous匿名用户,这个用户的UID设置通常为nfsnobody的UID的值,当然也可以自行设置。但是设置UID必须和nfsnobody的UID相同;

/usr/sbin/showmount   #查看NFS配置及挂载结果的命令
/var/lib/nfs/etab    #NFS配置文件的完整参数设定的文件
/var/lib/nfs/etab       master table of exports
/var/lib/nfs/xtab    #适合C5.x记录曾经挂载过的NFS客户端的信息,包含IP地址等,Centos6.6没有此文件了。
/proc/mounts   #客户端挂载参数
/var/lib/nfs/rmtab   #客户端访问服务器exports的信息列表

发表评论

发表评论

*

沙发空缺中,还不快抢~