Linux网络服务——NFS共享存储服务(包含操作详解)

Posted 0611#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络服务——NFS共享存储服务(包含操作详解)相关的知识,希望对你有一定的参考价值。

NFS共享存储服务概述

  • NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。
  • 对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。但是由于NFS没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局域网中使用。
  • NFS 服务的实现依赖于 RPC(Remote Process Call 远端过程调用)机制,以完成远程到本地的映射过程。所以需要安装 nfs-utils、rpcbind 软件包来提供 NFS共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持
  • NFS 的配置文件为/etc/exports 格式为:共享的目录位置 客户机地址(权限选项)

NFS应用场景

  • 在企业集群架构的工作场景中,特别是中小型公司,NFS网络文件系统一般用来存储共享视频、图片等静态资源文件,例如把网站用户上传的文件放到NFS共享里,通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录内的数据

NFS服务器配置

一、服务器的配置

1、安装nfs-utils、rpcbind软件包

[root@pakho ~]# yum -y install nfs-utils rpcbind  #下载服务
[root@pakho ~]# systemctl enable nfs-server      
[root@pakho ~]# systemctl enable rpcbind          #并且将两个服务设置为开机自启动

2、设置共享目录

  • NFS的配置文件为/etc/exports 文件默认为空
  • 格式为:共享的目录位置 客户机地址(权限选项)

例如:要将文件夹/mnt/nfstest文件共享给192.168.100.0/24网段使用,允许读写,操作如下

[root@pakho ~]# mkdir -p /mnt/nfstest    #创建共享目录
[root@pakho ~]# vim /etc/exports         #进入主配置文件
/mnt/nfstest  192.168.100.0/24(rw,sync,no_root_squash)
  • rw:允许读写
  • ro:只读
  • sync:表示同步写入
  • no_root_squash:表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)ps:因为nfs系统用户权限很低加上后不作降权处理

例如:需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)”即可。例如,将以下操作将/var/ftp/public 目录共享给两个客户机,并分别给予只读、读写权限

[root@pakho ~]# vim /etc/exports         #进入主配置文件
/var/ftp/pub 192.168.100.20(ro) 192.168.100.30(rw)

3、启动NFS服务程序

[root@pakho ~]# systemctl start rpcbind
[root@pakho ~]# systemctl start nfs-server   #切记必须按顺序启动
  • 两个服务必须按上述顺序启动 否则会发生报错!

4、查看本机发布的NFS共享目录

[root@pakho ~]# showmount -e    #本机查看不需要加路径
Export list for pakho:
/mnt/nfstest 192.168.100.0/24

注:如果发生报错,提示 RPC:程序未注册
参照第三步先关闭两个服务在按上述顺序启动(可能是虚拟机的bug)

二、客户端的配置

1、安装nfs-utils、rpcbind软件包

[root@client ~]# yum -y install nfs-utils rpcbind    #下载服务
[root@client ~]# systemctl enable nfs-server
[root@client ~]# systemctl enable rpcbind            #并且将两个服务设置为开机自启动

2、查看NFS服务器端共享了哪些目录
查询格式为showmount -e 服务器地址

[root@client ~]# showmount -e 192.168.100.20        
Export list for 192.168.100.20:
/mnt/nfstest 192.168.100.0/24

3、手动挂载NFS共享目录

[root@client ~]# mkdir /mnt/nfsclient               #首先创建一个挂载点
[root@client ~]# mount 192.168.100.20:/mnt/nfstest /mnt/nfsclient
#将NFS服务器共享的/mnt/nfstest目录挂载到本地目录/mnt/nfsclient 

确认挂载结果

4、fstab自动挂载设置

  • 修改/etc/fstab文件,加入NFS共享目录的挂载设置
192.168.100.20:/mnt/nfstest /mnt/nfsclient nfs defaults,_netdev 0 0  

5、强制卸载NFS

  • NFS客户端与服务器端的耦合度是非常高,如果客户端正在挂载使用,服务器端NFS服务突然间停掉了,那么在客户端就会出现执行df -h命令卡死的现象。
  • 这个时候使用umount命令是无法直接卸载的,需要加上 -lf才能卸载
  • -l 表示解除正在繁忙的文件系统
  • -f 表示强制

NFS常见故障解决思路

  • 当NFS共享无法挂载使用时,首先检查配置文件的正确性,查看是否允许该网段的访问。然后将服务端的NFS服务和 rpcbind 服务都要开启,同时客户端也要开启 rpcbind 服务,这是能够成功挂载使用NFS共享存储的大前提。
  • 在两边服务都开启的情况下,如果客户端挂载共享存储出现长时间挂载等待的情况,此时要ping服务器的地址,检查客户端到服务器端的网络是否正常。
  • 如果客户端到服务器端的网络是没有问题的,但是还是无法 mount 挂载使用,可以使用telnet命令加服务端的地址和端口号,远程连接服务器。当出现 “ connected to… ” 的字样时,表示已经连接上了。这就表示客户端与服务器端是通的。
  • 客户端无法正常访问服务器端,也有可能是iptables导致的,使用telnet命令连接服务器时会显示 “ no route to host ” 的字样,这就表示是防火墙的问题。在服务器端本地telnet自己,如果正常就表示服务器端是没有问题的。
  • 当然也可以使用 showmount -e 命令检查,或者是在服务端 mount 挂载自己本地共享的目录看能否挂载成功。

以上是关于Linux网络服务——NFS共享存储服务(包含操作详解)的主要内容,如果未能解决你的问题,请参考以下文章

Linux三阶段之三:存储服务(NFS)

Linux的nfs技术

Linux(10):期中架构--- NFS存储服务

Linux CentOS7系统NFS共享存储服务

Linux 环境下搭建NFS服务

小胖学Linux day42~43:NFS共享存储