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共享存储服务(包含操作详解)的主要内容,如果未能解决你的问题,请参考以下文章