Centos系统部署nfs共享存储

一、NFS存储服务简介

1.存储服务的种类

#ftp、tftp
文件传输协议

#http
超文本传输协议

#samba       
window--linux之间的数据传输

#nfs         
linux--linux之间的数据传输

#分布式存储    
Moosefs、GlusterFS、FastDFS

2.NFS存储服务介绍

NFS是Network File System的缩写,中文意思是网络文件共享系统,它的主要功能是通过网络让不同的主机系统之间可以共享文件或目录

3.NFS存储服务作用

#实现数据的共享存储

#编写数据操作管理

#节省购买服务器磁盘开销

二、NFS服务端部署

  • 安装软件
#检查是否安装NFS、RPC软件
rpm -qa | grep -E "nfs-utils|rpcbind"

#安装NFS、RPC软件
yum install -y nfs-utils rpcbind
  • 修改配置文件
#nfs配置文件权限简介
man exports
rw                        #读写权限
ro                        #只读权限
sync                      #同步方式存储数据(直接将数据保存到磁盘)
async                     #异步方式存储数据(直接将数据保存到内存)
no_root_squash            #root用户身份不进行转换   
root_squash               #root用户身份进行转换
all_squash                #所有用户身份都进行转换 
no_all_squash             #所有用户身份都不进行转换
anonuid=UID,anongid=GID   #修改NFS服务默认映射用户(NFS默认映射的用户为nfsnobody)

#编写nfs配置文件
vim /etc/exports
/data   192.168.1.0/24(rw,sync)

#配置文件格式
message1 message2(message3)
message1:设置数据存储目录
message2:设置网络一个白名单
message3:设置存储目录的权限信息、存储目录的功能
  • 设置共享目录权限
#创建存储目录
mkdir /data

#设置存储目录权限(虚拟用户nfsnobody在安装nfs软件的时候系统就创建完成)
chown nfsnobody.nfsnobody -R /data
chown nobody.nobody -R /data   #Centos8不会创建nfsnobody用户
  • 启动共享服务
#先启动RPC服务(使用111端口)
systemctl enable --now rpcbind

#再启动NFS服务
systemctl enable --now nfs-server.service

#关闭RPC服务
systemctl stop rpcbind.service
Warning: Stopping rpcbind.service, but it can still be activated by:
  rpcbind.socket #此时还是可以通过rpcbind.socket服务激活rpcbind.service服务,所以还要停止rpcbind.socket服务

systemctl stop rpcbind.socket 

三、NFS客户端端部署

  • 命令mount参数简介
#命令语法
mount [-a] [-t vfstype] [-o options] device dirname

[-a]          加载文件/etc/fstab启动所有挂载

[-t vfstype]  指定文件系统的类型(通常不必指定mount会自动选择正确的类型)

[-o options]  主要用来描述设备或档案的挂接方式
rw            实现挂载后挂载点目录可读可写(默认)
ro            实现挂载后挂载点目录可读可写
suid          在共享目录中可以让setuid权限位生效(默认)
nosuid        在共享目录中可以让setuid权限位失效(提供共享目录的安全性)
exec          共享目录中的执行文件可以直接执行
noexec        共享目录中的执行文件可以无法直接执行(提供共享目录的安全性)
auto          可以实现自动挂载(配合mount -a实现加载fstab文件自动挂载)
noauto        不可以实现自动挂载
nouser        禁止普通用户可以卸载挂载点
user          允许普通用户可以卸载挂载点

device        要挂载的设备(也可以使用挂载设备的UUID)

dirname       挂接点目录名称
  • 使用mount命令挂载访问
#安装软件
yum install -y nfs-utils

#列出nfs共享资源
showmount -e 192.168.1.10

#参数-t指定挂载类型为nfs
mount -t nfs 192.168.1.10:/data /mnt

#mount命令自动选择挂载类型(推荐)
mount 192.168.1.10:/data /mnt       

#验证挂载是否成功
df -h
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda3          38G  1.6G   37G   5% /
devtmpfs          981M     0  981M   0% /dev
tmpfs             992M     0  992M   0% /dev/shm
tmpfs             992M  9.6M  982M   1% /run
tmpfs             992M     0  992M   0% /sys/fs/cgroup
/dev/sda1         197M  102M   95M  52% /boot
tmpfs             199M     0  199M   0% /run/user/0
192.168.1.10:/data   38G  1.6G   37G   5% /mnt
  • 写入/etc/fstab文件实现永久挂载
#安装软件
yum install -y nfs-utils

#编写配置文件
vim /etc/fstab
192.168.1.10:/data  /mnt  nfs   user,auto  0 0
192.168.1.10:/data  /mnt  nfs   defaults   0 0  #推荐

#验证挂载是否成功
mount -a
  • 使用autofs服务实现自动挂载
#安装软件
yum install -y nfs-util autofs

#修改主配置文件
vim /etc/auto.master 
/-      /etc/auto.nfs  

#修改子配置文件
vim /etc/auto.nfs
/mnt  -rw,sync  192.168.1.10:/data

#启动autofs服务
systemctl enable --now autofs.service

四、NFS服务工作原理

1.服务端工作步骤

#先启动RPC服务开启111端口

#再启动NFS服务

#NFS服务向RPC服务注册端口信息
rpcinfo -p 192.168.1.10  #没有注册NFS服务(此时只打开了RPC服务,关闭RPC服务后rpcinfo命令无法使用)
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

rpcinfo -p 192.168.1.10  #NFS服务注册之后(此时先打开RPC服务再打开NFS服务)
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl

2.客户端工作步骤

#客户端通过服务端的RPC服务建立建立TCP网络连接(但是客户端不需要RPC服务)

#客户端执行挂载命令进行远程挂载

#客户端实现数据远程传输存储

五、NFS配置文件权限示例

1.多个网段主机进行挂载

vim /etc/exports
#方法一
/data  192.168.1.0/24(rw,sync) 172.1.1.0/24(rw,sync)

#方法二
/data  192.168.1.0/24(rw,sync)
/data   172.1.1.0/24(rw,sync)

2.影响共享目录的权限的因素

#和存储目录的本身权限有关(755权限、属主属组nfsnobody)
ll -d /data/
drwxr-xr-x 2 nfsnobody nfsnobody 6 Jul 27 22:23 /data/

#和配置文件中的权限配置有关

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

3.NFS配置不同文件权限示例

#服务端修改配置文件权限为ro
vim /etc/exports
/data   192.168.1.0/24(ro,sync)

#客户端重新挂载NFS存储,此时创建文件提示只有只读权限
#服务端修改配置文件权限为all_squash
vim /etc/exports
/data   192.168.1.0/24(ro,sync,all_squash)

#客户端重新挂载NFS存储,此时创建文件文件的属主、属组为nfsnobody
#服务端修改配置文件权限为no_all_squash
vim /etc/exports
/data   192.168.1.0/24(ro,sync,no_all_squash)

#客户端重新挂载NFS存储,此时创建文件文件的属主、属组为普通用户yangwn

#由于普通用户不进行转换,可以在服务端/data目录增加其他用户写入的权限chmod o+w /data
#服务端修改配置文件权限为root_squash
vim /etc/exports
/data   192.168.1.0/24(ro,sync,root_squash)

#客户端重新挂载NFS存储,此时创建文件文件的属主、属组为普通用户nfsnobody
#服务端修改配置文件权限为no_root_squash
vim /etc/exports
/data   192.168.1.0/24(ro,sync,no_root_squash)

#客户端重新挂载NFS存储,此时创建文件文件的属主、属组为root

5.企业中NFS配置文件参数实际应用

#历程一服务端修改配置文件权限为no_all_squash
此时普通用户存储数据的时候也不会被切换为nfsnobody,依旧保存原来的属主、属组

#历程二服务端共享目录/data权限为www(确保服务端和客户端www用户uid数值一致)
此时普通用户中,只有www用户可以对共享目录/data经行操作

#历程三服务端修改配置文件权限为root_squash
此时root用户会被转换成nfsnobody,然而共享目录只能www用户进行操,保证了root用户也无法对共享目录/data经行操作,确保数据安全
#nfsnobody这个虚拟用户是有家目录的
grep nfsnobody /etc/passwd  
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

#记录nfs服务的默认配置记录信息(其中anonuid=65534,anongid=65534就是nfsnobody用户的uid何gid,所以nfs默认映射的用户为nfsnobody)
cat /var/lib/nfs/etab 
/data   192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)  

#让root用户可以操作管理www用户管理的data目录(此时可以将nfs默认映射的用户nfsnobody,修改为www用户)
vim /etc/exports
/data   192.168.1.0/24(rw,sync,anonuid=1002,anongid=1002)  #此时模拟www用户的uid和gid为1002

6.企业中如何编辑NFS配置文件

#通用方法
/data   192.168.1.0/24(rw,sync)

#特殊情况(让部分人员不能操作存储目录 可以看目录中的数据)
/data   192.168.1.0/24(ro,sync)

#修改默认的映射用户(此时共享目录的属主、属组也要修改为映射用户)
/data   192.168.1.0/24(ro,sync,anonuid=xxx,anongid=xxx)

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

1.客户端自动挂载失败原因

#Centos6
根据系统服务启动顺序(串行启动)
先加载/etc/fstab(实现自动挂载磁盘) network服务 netfs服务 再次加载/etc/fstab(实现自动挂载磁盘)
Centos6必须启动netfs服务才能实现开机自动挂载磁盘

#Centos7
根据系统服务启动顺序(并行启动)
先加载/etc/fstab(实现自动挂载磁盘) network服务 remote-fs.target服务 再次加载/etc/fstab(实现自动挂载磁盘)
Centos7必须启动remote-fs.target服务才能实现开机自动挂载磁盘
#开机启动启动会创建一个软连接到/etc/systemd/system/multi-user.target.wants目录中
systemctl enable sshd 
Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.

#查看开机运行的服务
ll /etc/systemd/system/multi-user.target.wants #Centos7利用目录查看开机运行的服务

#查看全部运行服务
systemctl list-unit-files        #Centos7
chkconfig --list                 #Centos6

2.故障排除方法

#检查NFS进程信息是否注册,原因服务启动顺序不对,没有启动NFS服务
rpcinfo -p localhost

#检查有没有可用存储目录,原因配置文件编写有问题,重启NFS服务
showmount -e 192.168.1.10

#在服务端进行挂载测试
是否能够在存储目录中创建或删除数据

#网络问题
ping 192.168.1.10
telnet 192.168.1.10

七、其他博文

Centos系统部署samba共享存储

猜你喜欢

转载自blog.csdn.net/qq_41938046/article/details/113898238