NFS存储服务

centos7.5NFS存储服务

一、NFS概念:

NFS是Network File System的缩写,中文意思是网络文件系统,
它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录存储服务的种类
用于中小型企业: 实现数据共享存储
NFS 是在linux与linux之间数据传输,不能实现linux与windows;samba服务可实现linux与windows之间数据传输

二、NFS存储服务作用

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

三、NFS服务部署流程

nfs01服务端

1)下载安装软件
rpm -qa|grep -E “nfs|rpc”
yum install -y nfs-utils rpcbind
rpc: 远程过程调用服务程序(网络编程支持)
NFS存储服务

2)编写nfs服务配置文件/etc/exports
NFS存储服务

第一个字段: 设置数据存储的目录 /nfs_share_data
第二个字段: 设置网络地址段,允许哪些主机连接到存储服务器进行数据存储
第三个字段: 配置存储目录的权限及功能(24后面跟括号"()",没有空格)

3)创建存储目录及改变存储目录属主和属组
mkdir /nfs_share_data
chown nfsnobody.nfsnobody /nfs_share_data
NFS存储服务

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

web01客户端:
1) 安装nfs服务软件
yum install -y nfs-utils
NFS存储服务
2)实现远程挂载共享目录
mount -t nfs 172.16.1.31: /nfs_share_data /mnt/nfs_share_data
NFS存储服务

四、NFS服务工作原理

nfs01服务端:
1) 先启动rpc服务,自动开启rpc111端口
2) 再启动nfs服务
3) 最后自动实现nfs服务进程和端口好的注册
nfs服务进程与端口注册信息
没有注册时候:
NFS存储服务
注册了的情况:
NFS存储服务

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

五、nfs01服务端详细配置

1)实现多个网段主机可以进行挂载
第一种方法:
/nfs_share_data 172.16.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)
第二种方法:
/nfs_share_data 172.16.1.0/24(rw,sync)
/nfs_share_data 10.0.0.0/24(rw,sync)

2)NFS配置参数权限及功能
rw – 存储目录是读写权限
ro – 存储目录是只读权限
sync – 同步方式存储数据 直接将数据保存到磁盘(数据存储安全)
async – 异步方式存储数据 直接将数据保存到内存(提高数据存储效率)
no_root_squash – 不要将root用户身份进行转换
root_squash – 将root用户身份进行转换
all_squash – 将所有普通用户身份都进行转换
no_all_squash – 所有普通用户身份不进行转换

2.1)all_squash测试:(每一次修改配置文件都要重启nfs服务)
服务端nfs01修改配置文件/etc/exports
NFS存储服务
客户端web01挂载远程目录并切换到ysx用户进行测试,结果可以创建文件
NFS存储服务
2.2)no_all_squash测试:
服务端:
NFS存储服务

客户端:
NFS存储服务
结果:不可以创建文件,权限阻止
解决权限问题:
NFS存储服务
NFS存储服务
结果:可以进行创建文件,但是没有转换身份

2.3)root_squash测试:
NFS存储服务
NFS存储服务
结果:可以创建文件,但是也转换了身份

2.4)no_root_squash测试
NFS存储服务
NFS存储服务
结果:可以创建文件,没有转换身份

六、企业如何配置NFS 各种squash参数

保证网站存储服务器用户数据安全性:
no_all_squash 需要进行配置,共享目录/nfs_share_data的属主改为为www(确保客户端用户 服务端用户 uid数值一致)
root_squash 需要进行配置

6.1)测试一下
服务端:
NFS存储服务
NFS存储服务
客户端:
NFS存储服务
切换普通用户(黑客)添加删除数据测试:
NFS存储服务
root测试
NFS存储服务

结果:因为配置文件设置了no_all_squash,所以普通用户不能创建或删除文件;root—>nfsnobody-----x—>目录/nfs_share_data<—www(root会转换为nfs进程管理用户nfsnobody,而/nfs_share_dadta共享由www用户管,nfsnobody不能管理www所管理的目录,因此root也不行)。以上配置都是从安全角度出发

6.2)查看nfs默认配置
NFS存储服务
6.3)让root用户可以操作管理www用户管理的/nfs_share_data目录
修改映射用户:www的id为1001
即修改nfs进程管理用户,添加anonuid=1001,anongid=1001
NFS存储服务
web01客户端root测试:
NFS存储服务
6.4)企业中如何编辑nfs配置文件
01)通用方法
/nfs_share_data 172.16.1.0/24(rw,sync)
02)特殊情况 (让部分人员不能操作存储目录 可以看目录中的数据)
/nfs_share_data 172.16.1.0/24(ro,sync)
03)修改默认的匿名用户
/nfs_share_data 172.16.1.0/24(rw,sync,anonuid=xxx,anongid=xxx)

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

七、nfs客户端详细配置

1) 实现自动挂载
1.1) 使用/etc/rc.local,但是要赋予rc.local执行权限
echo “mount -t nfs 172.16.1.31:/nfs_share_data /mnt” >>/etc/rc.local
1.2) 使用/etc/fstab文件
vim /etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
但是要开启remote-fs.target服务
systemctl start remote-fs.target
NFS存储服务
NFS存储服务
NFS存储服务

umount -lf /mnt — 强制卸载挂载点
-l 不退出挂载点目录进行卸载
-f 强制进行卸载操作

八、NFS服务挂载不上排查方法

服务端进行排查:
1)检查nfs进程信息是否注册
rpcinfo -p localhost/172.16.1.31
问题原因:
服务启动顺序不对,没有启动nfs服务
2)检查有没有可用存储目录
showmount -e 172.16.1.31
问题原因:
配置文件编写有问题,重启nfs服务
3)在服务端进行挂载测试
是否能够在存储目录中创建或删除数据
客户端测试:
1)检查nfs进程信息是否注册
rpcinfo -p localhost/172.16.1.31
问题原因:
服务启动顺序不对,没有启动nfs服务
2)检查有没有可用存储目录
showmount -e 172.16.1.31
问题原因:
配置文件编写有问题,重启nfs服务
3)网络问题
ping 172.16.1.31
telnet 172.16.1.31 111