Centos7.x 安装配置NFS服务和挂载

Centos7.x 安装配置NFS服务和挂载

背景

  由于目前公司的项目都是直接将上传的文件存放到服务的某个位置,所以如果部署多台服务器进行集群的话,获取上传了的文件将会是一个问题。

  例如:在192.168.118.225部署了项目,那么用户上传的文件则会将文件存放到192.168.118.225服务器;但是如果我再多个服务器都部署了项目(192.168.118.225192.168.118.226192.168.118.227),那么用户在使用负载均衡的时候会切换到不同节点,就会将文件上传到不同的服务器,那么上传的文件会分散在不同的服务器(有可能会找不到附件)。

  所以就需要将文件统一存放到一个服务器中(例如:192.168.118.225)的某个目录(/nfs/data),然后将服务器(192.168.118.225)的目录影响到本地的某个文件夹,这样就完美解决了问题

一、环境介绍

  本地使用三台服务器,具体说明如下:

  • 服务器:192.168.118.225
  • 客户端:192.168.118.226、192.168.118.227
  • 服务器nfs文件的存放目录:/nfs/data
  • 客户端映射到本地的目录:/upload

二、服务端的操作

2.1、启动rpcbind

  因为centos7自带了rpcbind,所以不用安装rpc服务,rpc监听在111端口,可以使用ss -tnulp | grep 111查看rpc服务是否自动启动,如果没有启动,就systemctl start rpcbind启动rpc服务。

  rpc在nfs服务器搭建过程中至关重要,因为rpc能够获得nfs服务器端的端口号等信息,nfs服务器端通过rpc获得这些信息后才能连接nfs服务器端。

  如果执行完systemctl start rpcbind命令发现程序没有报错,然而111端口也没有启动,则需要检查一下rpcbind的启动命令;本人在安装的过程中就遇到了这种问题:

# 查看一下rpcbind命令路径
$ find /etc/ -name '*rpcbind.socket*'
/etc/systemd/system/sockets.target.wants/rpcbind.socket

# 编辑查看上一步查询到的结果,例如:
$ vim /etc/systemd/system/sockets.target.wants/rpcbind.socket
[Unit]
Description=RPCbind Server Activation Socket

[Socket]
ListenStream=/var/run/rpcbind.sock

[Install]
WantedBy=sockets.target

  将启动命令修改为如下内容:

[Unit]
Description=RPCbind Server Activation Socket

[Socket]
ListenStream=/var/run/rpcbind.sock
ListenStream=[::]:111
ListenStream=0.0.0.0:111
BindIPv6Only=ipv6-only

[Install]
WantedBy=sockets.target

  重新加载之后,然后重启

$ systemctl daemon-reload

$ systemctl start rpcbind

2.2、安装nfs-utils,并检查是否安装成功

$ yum -y install nfs-utils

  查看是否安装成功

$ rpm -qa nfs-utils
nfs-utils-1.3.0-0.68.el7.x86_64

2.3、创建文件存放目录并编辑/etc/exports

  创建文件存放目录:

$ mkdir -p /nfs/data

  编辑/etc/exports ,添加以下内容

/nfs/data       192.168.118.0/24(rw,sync,no_root_squash)
2.3.1、内容介绍
  • /nfs/data:nfs共享的文件夹目录(共享哪个目录)
  • 192.168.118.0/24:共享的IP网段(允许哪个客户端去访问)
  • rw:允许读写
  • sync:同步写入
  • no_root_squash:当客户机以root身份访问时,赋予root权限(即超级用户保留权限),否则,root用户所有请求映射成anonymous用户一样的权限(默认)

2.4、启动nfs服务

# 启动nfs服务
$ systemctl start nfs

# 使用命令进行查看
$ rpcinfo -p localhost
   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
    100024    1   udp  34354  status
    100024    1   tcp  51370  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    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
    100021    1   udp  52382  nlockmgr
    100021    3   udp  52382  nlockmgr
    100021    4   udp  52382  nlockmgr
    100021    1   tcp  41087  nlockmgr
    100021    3   tcp  41087  nlockmgr
    100021    4   tcp  41087  nlockmgr

2.5、开机自启服务设置

# nfs服务开机自启
$ systemctl enable nfs-server.server

# rpc服务开机自启
$ systemctl enable rpcbind

2.6、将服务端的/nfs/data映射到/upload目录

$ ln -s /nfs/data/ /upload

2.7、防火墙添加规则

  如果要能够关闭防火墙,则可以不用进行当前设置,如果防火墙必须开启的话,则可以参考如下操作:

# 添加入站规则:192.168.0.0 范围端的内容都可入站
$ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"

# 添加操作后别忘了执行重载
firewall-cmd --reload

2.8、创建一个文件到共享目录中

# 创建一个测试文件
$ touch /nfs/data/abc.txt

# 往测试文件中添加数据
$ echo "hello nfs" >> /nfs/data/abc.txt

三、客户端的操作

3.1、安装nfs-utils

# 客户端上不需要启动nfs服务,只是为了使用showmount工具
$ yum -y install nfs-utils

3.2、检测rpc是否启动

3.3、使用showmount -e 192.168.118.225查看

$ showmount -e 192.168.118.225
Export list for 192.168.118.225:
/nfs/data 192.168.118.0/24

3.3、远程目录挂载至本地/upload目录

# 挂载之前先创建挂载的文件夹
$ mkdir /upload

# 执行挂载的命令
$ mount -t nfs 192.168.118.225:/nfs/data /upload

3.4、查看挂载的数据

$ cat /upload/abc.txt
hello nfs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值