NFS存储服务

第1章 NFS介绍

1.1 什么是NFS

NFS是Network File System的缩写,中文意思是网络文件共享系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,列如web)可以通过挂载(mount)的方式将NFS服务器端共享到数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端NFS服务器的目录

1.需要不同的服务器实时共享文件

2.数据共享,不同服务器保持数据一致性

1.2 存储服务的种类

1.2.1 用于中小型企业:实现数据共享存储

FTP(文件传输协议)

samba(windows—linux之间数据传输 linux部署samba)

NFS(linux—linux之间数据传输)

1.2.2 用于大型企业(门户网站)

利用分布式存储

Moosefs(mfs)

GlusterFS

FastDFS --企业应用较多

1.3 NFS存储服务作用

  1.    实现数据的共享存储
    
  2.    编写数据操作管理
    
  3.    节省购买服务器磁盘开销
    

1.4 NFS服务部署流程

RPC:远程过程调用的服务过程

1.nfs依赖于RPC服务来传递消息

2.NFS服务启动的端口号是随机的,启动之后会向本地的RCP注册

3.先启动RPC服务,再启动NFS服务

4.NFS和RPC之间的通讯是他们自己内部完成的,对于用户来说无感知

5.NFS客户端和服务端不会直接沟通,必须通过RPC服务传递消息

6.防火墙要开放RPC服务的端口

1.4.1 服务端部署

1.4.1.1 第一个历程

#下载安装软件
rpm -qa | grep “nfs|rpc”
yum -y install nfs-utils rpcbind

1.4.1.2 第二个历程:

编写nfs服务配置文件

vim /etc/exports
01      02(03)
01:设置数据存储的目录 /data
02:设置网络一个白名单(允许哪些主机连接到存储服务器进行数据存储)
03:配置存储目录的权限信息    存储目录一些功能
/data   172.16.1.0/24(rw,sync)

1.4.1.3 第三个历程

#创建一个存储目录
mkdir -p /data
chown  nfsnobody.nfsnobody /data

1.4.1.4 第四个历程

启动服务程序
先启动rpc服务
systemctl start rpcbind
systemctl enable rpcbind
再启动nfs服务
systemctl start nfs
systemctl enable nfs

1.4.2 客户端部署

1.4.2.1 第一个历程

#下载安装软件
yum -y install nfs-utils

1.4.2.2 第二个历程

#实现远程挂载共享目录
mount -t nfs 172.16.1.31:/data /mnt

1.5 NFS服务工作原理

1.5.1 服务端:

1)        启动rpc服务,开启111端口
2)        启动nfs服务
3)        实现nfs服务进程和端口号的注册
#检查nfs服务进程与端口注册信息
[root@nfs01 ~]# rpcinfo -p localhost

1.5.2 客户端

1)        建立TCP网路连接
2)        客户端执行挂载命令,进行远程挂载
3)        可以实现数据远程传输存储

1.6 nfs服务端详细配置说明

1.6.1 实现多个网段主机可以进行挂载

第一种方法:

/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)

第二种方法:

/data 172.16.1.0/24(rw,sync)

/data 10.0.0.0/24(rw,sync)

1.6.2 共享目录的权限和哪些因素有关

和存储目录的本身权限有关(775 属主:nfsnobody)

和配置文件中的权限配置有关rw/ro xxx_squash anonuid/anongid

和客户端挂载命令的参数有关

1.6.3 NFS配置参数权限

rw                        #存储目录是否有读写权限
ro                        #存储目录是否是只读权限
sync                      #同步方式存储数据------直接将数据保存到磁盘(数据存储安全)
async                     #异步方式存储数据------直接将数据保存到内存(提高数据存储效率)
no_root_squash            #不要将root用户身份进行转换
root_squash               #将root用户身份进行转换
all_squash                #将所有用户身份都进行转换
no_all_squash             #不要将普通用户身份进行转换
anonuid                   #指定匿名用户
anongid                   #指定匿名用户组

1.6.4 操作演示all_squash参数功能:

服务端:

[root@nfs01 ~]# vim /etc/exports
/data   172.16.1.0/24(rw,sync,all_squash)

客户端

[oldboy@web01 ~]$ touch /mnt/123.txt
[oldboy@web01 mnt]$ ll
total 0
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul  6 17:43 123.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul  6 16:52 backup_data.txt

1.6.5 操作演示no_all_squash参数功能:

服务端:

[root@nfs01 ~]# vim /etc/exports
/data   172.16.1.0/24(rw,sync,no_all_squash)
[root@nfs01 ~]# chmod o+w /data/

客户端:

[oldboy@web01 mnt]$ touch oldboy.txt
[oldboy@web01 mnt]$ ll
total 0
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul  6 17:43 123.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul  6 16:52 backup_data.txt
-rw-rw-r-- 1 oldboy    oldboy    0 Jul  6 17:53 oldboy.txt

1.6.6 操作演示root_squash参数功能

服务端:

[root@nfs01 data]# vim /etc/exports
/data   172.16.1.0/24(rw,sync,root_squash)  

客户端:

[root@web01 mnt]# touch root_data.txt
[root@web01 mnt]# ll
total 0
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul  6 17:43 123.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul  6 16:52 backup_data.txt
-rw-rw-r-- 1 oldboy    oldboy    0 Jul  6 17:53 oldboy.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul  6 17:57 root_data.txt

1.6.7 操作演示no_root_squash参数功能

服务端

[root@nfs01 data]# vim /etc/exports
/data   172.16.1.0/24(rw,sync,no_root_squash)
[root@nfs01 data]# chmod 755 /data/
[root@nfs01 data]# ll -d /data/
drwxr-xr-x 2 nfsnobody nfsnobody 83 Jul  6 17:57 /data/‘

客户端:

[root@web01 mnt]# touch root_data02.txt
[root@web01 mnt]# ll
total 0
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Jul  6 17:43 123.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul  6 16:52 backup_data.txt
-rw-rw-r-- 1 oldboy    oldboy    0 Jul  6 17:53 oldboy.txt
-rw-r--r-- 1 root      root      0 Jul  6 17:59 root_data02.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jul  6 17:57 root_data.txt 

1.7 企业互联网公司如何配置NFS各种squash参数

保证网站存储服务器用户数据安全性:
all_squash绝对不能配置
no_all_squash需要配置
共享目录权限改为www(虚拟用户,确保客户端用户和服务端用户UID数值一致)
root_squash需要设置
nfs默认配置
cat /var/lib/nfs/etab            记录nfs服务的默认配置记录信息
如何让root用户可以操作管理www用户管理的data目录
anonuid=65534, anongid=65534           可以指定映射的用户信息
修改映射用户www
/data       172.16.1.0/24(rw,sync,anonuid=1002,anongid=1002)

1.8 企业中如何编辑nfs配置文件

1.8.1 通用方法

/data       172.16.1.0/24(rw,sync)

1.8.2 特殊情况(让部分人员不能操作存储目录,可以看目录中的数据

/data       10.0.0.0/24(ro,sync)

1.8.3 修改默认的匿名用户

/data       10.0.0.0/24(ro,sync,anonuid=xxx,anongid=xxx)

1.8.4 nfs服务问题

nfs服务器重启,挂载后创建数据比较慢
服务器重启方式不正确
服务重启:
restart     重启服务     强制断开所有连接   用户感受不好
reload    重启服务(平滑重启)  强制断开没有数据传输的连接    

1.9 nfs客户端详细配置说明

mount -t nfs 172.16.1.31:/data /mnt
如何实现自动挂载
利用rc.local
echo “mount -t nfs 172.16.1.31:/data /mnt” >>/etc/rc.local
利用fstab
vim /etc/fstab
172.16.1.31:/data                         /mnt                    nfs     defaults        0 0

1.10 NFS故障

1.如果NFS服务端停止了服务,而客户端没有执行卸载,挂载目录就会直接卡住
2.如果设置了开机自启动,但是NFS服务没有起来,则会卡住1分47秒
这个时候有2种解决方法:
1.等,如果是物理服务器,建议等
2.如果不是物理机进入救援模式,注释或删掉/etc/fstab的nfs自动挂载记录
开机启动时添加rd.break
ctrl+x
mount -o remount,rw /sysroot/
chroot /sysroot/

NFS小结

#NFS 存储优点
1.NFS 文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
2.NFS 文件系统内存放的数据都在文件系统之上,所有数据都是能看得见
#NFS 存储局限
1.存在单点故障, 如果构建高可用维护麻烦 web->nfs()->backup
2.NFS 数据明文, 并不对数据做任何校验。
3.客户端挂载 NFS 服务没有密码验证, 安全性一般(内网使用)
#NFS 应用建议
1.生产场景应将静态数据尽可能往前端推, 减少后端存储压力
2.必须将存储里的静态资源通过 CDN 缓存 jpg\png\mp4\avi\css\js
3.如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用
posted @ 2019-07-26 20:17  helloord  阅读(270)  评论(0编辑  收藏  举报