Centos7.8搭建NFS服务

NFS介绍

  • 专用于Linux和Linux之间的专门文件共享服务(NFS服务),network filesystem网络文件系统
  • NFS服务可以把远程Linux机器上的文件目录数据,通过挂载的方式,映射到本地机器上

(Linux用户在自己本地有一个文件夹,通过NFS服务,把本地的这个文件夹,远程挂载到网络中的一台机器的文件夹)

NFS特点

  • NFS很像Windows的网络共享,samba服务
  • samba主要用于办公室的局域网共享服务
  • NFS发展30年,代表了一个稳定的网络共享系统,中小型企业最佳的文件共享选择

共享存储的形式

分为软件、硬件共享存储形式

软件共享存储—NFS服务搭建

硬件共享存储

中小型企业一般不会购买硬件存储设备,成本太高;大公司业务发展特别快,需要购买硬件设备分散网站的压力,因此主流企业都会选择开源的软件替代硬件设备,比如NFS集群服务的搭建

NFS和RPC的概念

NFS通过port传输数据,但NFS服务在传输数据的时候,端口是随机选择的(可以重启NFS服务,查看端口是否变化)

因此NFS是通过RPC服务,进行一个端口的注册,实现告知用户,NFS的工作端口是哪一个

什么是RPC

RPC(远程过程调用)

Linux上使用NFS服务,必须启动2个服务

  • RPC服务
  • NFS服务

NFS服务通过RPC注册自己的端口功能

RPC服务功能就是记录每个NFS功能对应的一个端口号,并且RPC保证了NFS客户端发出请求的时候,把该功能对应端口信息告知NFS客户端,保证客户端能够正确连接到NFS服务端的端口,达到数据传输的目的

RPC服务如何知道NFS服务端的端口信息?

答案:NFS服务端启动的时候,会随机采用若干个端口,并主动在RPC服务中进行注册,因此,RPC服务就正确知道所有NFS服务端端口功能了。RPC默认使用Linux的111端口来和NFS客户端进行一个交流,并且通过111端口将正确的NFS服务端的端口信息,告知给NFS客户端;所有NFS客户端能够正确找到NFS服务端的端口信息了

RPCBIND

RPC在centos7系统平台下,实现的软件是rpcbind

NFS服务的配置,必须先运行rpcbind服务才行

如果rpcbind服务重新启动了,原本注册的NFS服务端的信息也就失效了,你还得再重启NFS服务端,重新注册信息才行

如果仅仅是修改了NFS的配置文件,就不需要重启NFS服务端,因为重启后,端口信息就更新了,还得重新注册;只需要执行如下命令,重新读取NFS配置文件即可

exportfs -rv
systemctl reload nfs

安装配置NFS

  • nfs-utils:NFS服务的主程序,包括了rpc.nfsd rpc.mountd这两个守护进程,相关的配置文件信息
  • rpcbind:是一个RPC服务进程
yum install -y nfs-utils rpcbind

修改NFS服务的配置文件

/etc/exports

nfs配置文件 需要遵守如下的规则
NFS服务器共享的目录  NFS客户端地址(参数1,参数2,...)  NFS客户端地址(参数1,参数2,...)

例如:
把nfs服务器的根目录共享出去,且允许两个主机名client1,client2的机器,进行一个rw读写权限
/  client1(rw)  client2(rw)
把nfs服务器的/public目录共享出去,允许任意地址进行rw
/public  *(rw)
把nfs服务器的/home目录共享出去,只允许指定的IP地址进行读权限
/home  192.168.100.200(ro)
允许某个网段
/home  192.168.100.0/24(ro)

nfs客户端权限参数解释

rw 读写
ro 只读
root_squash 当nfs客户端以root账号访问NFS服务器共享目录的时候,把root映射成一个NFS的匿名用户,该用户的UID,GID都会变成nfsnobody的信息
no_root_squash 几乎同上,但root账号会映射成root账号,非常不安全
all_squash 所有nfs客户端用户都映射为匿名用户,很安全,生产环境常用
sync 数据同步写入到磁盘中,保证数据的安全性,但效率低
async 数据先写入到内存,再持久化到磁盘,效率高,但服务端突然崩溃,会造成数据丢失

启动NFS服务端进行文件目录共享

NFS服务端都是基于RPC的111端口,必须确保先启动了RPC服务

如果RPCBIND服务停止了,111端口也不会挂掉,因为centos7还提供了一个rpcbind.socket服务运行着

1.保证rpcbind正确运行
systemctl start rpcbind
systemctl status rpcbind

2.在配置文件写入需要共享的目录
[root@localhost ~]# cat /etc/exports
/mnt/samba_test  192.168.100.0/24(rw)

3.创建共享目录
mkdir /mnt/samba_test/
4.如果设置了用户映射成匿名用户,应修改权限,不让会导致权限不够
chown -R nfsnobody:nfsnobody /mnt/samba_test/

5.启动nfs服务
systemctl start nfs

6.列出本地共享了哪些文件夹
[root@localhost ~]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/mnt/samba_test 192.168.100.0/24

7.再次检查nfs服务端的共享参数
[root@localhost ~]# cat /var/lib/nfs/etab 
/mnt/samba_test	192.168.100.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)

8.对需要访问到nfs服务器共享文件夹的机器进行挂载(注意客户端也需要安装nfs-utils)
mount -t nfs 192.168.100.200:/mnt/samba_test/ /opt/test/

9.查看是否挂载成功
[root@localhost ~]# mount -l | tail -1
192.168.100.200:/mnt/samba_test on /opt/test type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.100.200,local_lock=none,addr=192.168.100.200)

10.查看挂载的目录是否共享到了远程文件夹的数据
[root@localhost ~]# ls /opt/test/
aa.txt

NFS自动挂载服务

  • 配置开机挂载服务,每次开机都能用nfs
把命令写到开机自动挂载文件中
[root@localhost ~]# tail -1 /etc/fstab 
192.168.100.200:/mnt/samba_test /opt/test nfs defaults 0 0 
  • autofs自动挂载服务

如果开机就强制挂载很多内容,但是又不经常使用,会给服务器造成很大的压力

因此一些具有动态特性的文件系统,可以选择进行动态挂载

比如
光盘,软盘,U盘,移动硬盘,NFS,SMB等文件系统
  • autofs特点

autofs和mount命令不同点在于

autofs是一个守护进程,它会在后台检测用户是否要访问某一个还未挂载的文件系统,autofs会自动检测该文件系统是否存在,如果存在则进行挂载,如果用户过一段时间没有使用该文件系统,autofs自动将其卸载,节省人力维护成本,以及节省服务器资源

  • autofs缺点

autofs特点是,当用户请求时候才挂载文件系统,如果是高并发的业务场景,大量用户并发访问文件系统,autofs突然进行大量挂载,会给服务器造成很大的压力,因此在一些高并发场景下,宁愿保持持续挂载,也不用autofs

  • autofs安装
yum install -y autofs
  • 修改autofs配置文件
1.打开autofs配置文件,找到第7行,添加如下代码
vim /etc/auto.master
/-  /etc/auto.home  #自定义自动挂载配置文件
2.修改自定义挂载配置文件
[root@localhost ~]# cat /etc/auto.home 
/opt/test  -rw.soft,intr 192.168.100.200:/mnt/samba_test
挂载点      权限           要挂载的目录
3.启动服务
systemctl start autofs
4.测试
[root@localhost ~]# umount /opt/test/
[root@localhost ~]# ls /opt/test/
aa.txt  bb.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值