NFS共享服务
NFS概述
NFS (Network File System)网络文件系统
NFS是一种基于TCP/ IP
传输的网络文件系统协议。通过使用NFS
协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。
对于大多数负载均衡群集来说,使用NFS
协议来共享数据存储是比较常见的做法,NFS
也是NAS
存储设备必然支持的一种协议。但是由于NFS
没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只能在局域网中使用。
依赖于RPC (远端过程调用)
需安装nfs-utils、 rpcbind软件包
系统服务: nfs、rpcbind
共享配置文件: /etc/exports
格式:共享的目录位置 客户机地址(权限选项)
NFS配置文件
NFS 服务的配置文件为 /etc/exports
,(文件默认内容为空)
格式:共享的目录位置 客户机地址 (权限选项)
客户机地址可以为:单个IP地址或者是网段
NFS服务配置操作
查看是否安装了这两个软件包
rpm -q rpcbind nfs-utils
yum -y install nfs-utils rpcbind
设置共享目录
mkdir -p /opt/share
chmod 777 /opt/share/
vim /etc/exports
/opt/share 192.168.111.0/24(rw,sync,no_root_squash)
客户机地址可以是主机名、IP 地址、网段地址,允许使用“*”、“?”通配符。
常用选项
“rw” 表示允许读写,“ro” 表示为只读;
sync :表示同步写入到内存与硬盘中。
async :将数据先保存在内存缓冲区中,必要时才写入磁盘。
no_root_squash : 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash)。
root_squash :表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户。
all_squash :所有访问用户都映射为匿名用户或用户组。
subtree_check(默认):若输出目录是一个子目录,则nfs服务器将检查其父目录的权限。
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。
启动 NFS 服务程序
启动NFS共享服务时,最后先启动 rpcbind 服务,再启动 nfs 服务。
用户对共享目录中的文件,能否创建删除 要看上级目录的权限中有没有w权限
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
exportfs -rv #发布共享
showmount -e #查看共享
在客户机中访问 NFS 共享资源
服务中也要安装 rpcbind nfs 这两个软件包
rpm -q rpcbind nfs-utils
yum -y install nfs-utils rpcbind
systemctl start rpcbind
systemctl enable rpcbind #设置为开机自启
#使用 NFS 需要关闭防护墙
systemctl stop firewalld.service
setenforce 0
#查看 NFS 服务器端共享了哪些目录
showmount -e 192.168.31.101
客户端挂载 NFS 共享目录
方法一:手动挂载
mkdir /myshare
mount 192.168.31.101:/opt/share /myshare
方法二:自动挂载
vim /etc/fstab
192.168.31.101:/opt/share /myshare nfs defaults,_netdev 0 0
#_netdev :表示挂载设备需要网络
mount -a #挂载 fstab 中的所有文件系统
df -Th #确认挂载结果
手动挂载
自动挂载
执行 vim /etc/fstab
, 编辑自动挂载配置文件,添加一行配置后,mount -a ,立即生效,自动会挂载。
验证 NFS 共享目录
挂载后,因为我之前服务器给了客户端可读写的权限,并且同步写入内存和磁盘,此时客户端创建个文件,服务端能看到,双反修改文件后,双方都能看到修改后的结果。
强制解挂 NFS
模拟状况,如果服务器端的NFS服务突然间停掉了,但是客户端已经挂载,并且证照使用这个共享文件时,如果客户端执行 df -h 命令就会卡死。
这个时候直接使用 umount 命令是无法直接卸载的,需要加上 -lf 选项才能强制卸载。
umount -lf /myshare