搭建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-utils rpcbind软件包
yum install nfs-utils rpcbind -y # 下载服务
systemctl enable nfs-server && systemctl enable rpcbind # 将两个服务设置为开机自启动
# 设置共享目录
# NFS的配置文件为 /etc/exports 文件默认为空
# 格式为:共享的目录位置 客户机地址(权限选项)
# 例如:要将文件夹/mnt/nfstest文件共享给192.168.100.0/24网段使用,允许读写,操作如下
mkdir /mnt/nfstest -p # 创建共享目录
[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)
# 启动NFS服务程序
systemctl start rpcbind
systemctl start nfs-server # 切记必须按顺序启动 两个服务必须 按上述顺序启动 否则会发生报错!
# 查看本机发布的NFS共享目录
showmount -e # 本机查看不需要加路径
Export list for pakho:
/mnt/nfstest 192.168.100.0/24
注:如果发生报错,提示 RPC:程序未注册
参照第三步先关闭两个服务在按上述顺序启动(可能是虚拟机的bug)
客户端的配置
# 安装nfs-utils rpcbind软件包
yum -y install nfs-utils rpcbind # 下载服务
systemctl enable nfs-server && systemctl enable rpcbind # 将两个服务设置为开机自启动
# 查看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
# 手动挂载NFS共享目录
# 手动挂载NFS共享目录
mkdir /mnt/nfsclient # 首先创建一个挂载点
mount 192.168.100.20:/mnt/nfstest /mnt/nfsclient
# 将NFS服务器共享的/mnt/nfstest目录挂载到本地目录/mnt/nfsclient
确认挂载结果
# fstab永久挂载设置
vim /etc/fstab
192.168.100.20:/mnt/nfstest /mnt/nfsclient nfs defaults,_netdev 0 0
强制卸载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 挂载自己本地共享的目录看能否挂载成功。