NFS共享存储服务
1. 基本概念
- NFS (Network File System):是一种网络文件系统协议,用于通过网络共享文件系统,依赖于 RPC(远端过程调用)。属于 NAS类别。NFS 是实现 NAS 的一种协议,NAS 可以使用 NFS 协议来提供文件共享服务。
- 拓展类别(硬件):
- NAS(Network Attached Storage,网络附加存储):
- 定义:NAS 是一种专门用于文件存储的设备,连接到网络后,允许多个客户端通过网络访问存储在其中的数据。用户可以像访问本地文件系统一样访问 NAS 上的文件。
- 特点:易于管理、支持多个协议(如 NFS、SMB/CIFS)、适用于文件共享和备份。
- 分布式存储:
- 定义:分布式存储是将数据分布在多个物理或虚拟存储设备上,并通过网络进行访问。它通过冗余和数据分布来实现高可用性和可靠性。
- 特点:弹性扩展、容错能力强、适合大规模数据存储和处理,常用于大数据、云计算等场景。
- Flash 闪存存储阵列:
- 定义:基于闪存(如 SSD)的存储阵列,提供高速的数据读写性能。相较于传统的机械硬盘,闪存存储阵列具有更快的读写速度和更低的延迟。
- 特点:高性能、低延迟、功耗低、适用于数据库、虚拟化等高性能要求的应用。
- SAS(Serial Attached SCSI,串行连接 SCSI)直连存储:
- 定义:SAS 是一种用于连接存储设备的高性能接口标准,主要用于服务器和存储设备之间的高速数据传输。SAS 直连存储是指直接通过 SAS 接口连接存储设备到服务器。
- 特点:高速传输、支持多设备连接、适合企业级存储系统和数据中心。
- NAS(Network Attached Storage,网络附加存储):
- 依赖于RPC(远端过程调用):负责管理 RPC(Remote Procedure Call)服务,是 NFS 的依赖服务之一。
- 依赖的软件包:
nfs-utils
、rpcbind
。 - 系统服务:nfs、rpcbind
- 共享配置文件:/etc/exports
- 应用场景(YUM):可以将共享的挂载点挂载到客户端,再编辑YUM配置文件(baseurl=file:///),实现YUM的网络配置。
2. 案例:配置与使用
服务端配置
-
安装必要软件NFS和RPC
yum install -y nfs-utils rpcbind systemctl enable nfs systemctl enable rpcbind # 配置服务在系统启动时自动启动
-
设置共享目录并配置访问规则
mkdir -p /opt/wwwroot chmod 777 /opt/wwwroot/ # 确保共享目录对所有访问者都可用 vim /etc/exports # 配置共享目录,此文件定义了哪些目录被共享,以及可以访问这些目录的客户端。 /opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash) /var/ftp/pub 192.168.4.11(ro) 192.168.4.110(rw) /share *(rw,sync)
解释:
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)
:- /opt/wwwroot:要共享的目录路径。
- 192.168.7.0/24:指定允许访问该共享目录的网络范围(即 192.168.7.0 网络中的所有主机)。
- rw:允许客户端对该目录进行读写操作。
- sync:数据在写入时同步到硬盘中,减少数据丢失的风险,确保数据的写入一致性。(当客户端写入数据时,数据会立即同步写入到服务器的硬盘中,而不是先暂时保存在缓存中再延后写入。服务器会在确认数据已成功写入到硬盘后,才会向客户端返回写入成功的确认信息。)
- no_root_squash:(直译:不_root_去除)允许客户端的 root 用户在访问共享目录时保留 root 权限(默认是root_squash)。
- root_squash:表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户。(默认情况下,NFS 服务器会将来自客户端的 root 用户请求映射为匿名用户(通常是 nobody),以减少安全风险。这种行为被称为 root_squash )。
/var/ftp/pub 192.168.4.11(ro) 192.168.4.110(rw)
:- /var/ftp/pub:要共享的另一个目录路径。
- 192.168.4.11(ro):允许指定的客户端(192.168.4.11)以只读方式访问该目录。
- 192.168.4.110(rw):允许指定的客户端(192.168.4.110)以读写方式访问该目录。
其他常用选项
- all_squash:所有访问用户都映射为匿名用户或用户组。
- async:将数据先保存在内存缓冲区中,必要时才写入磁盘。
- subtree_check(默认):若输出目录是一个子目录,则nfs服务器将检查其父目录的权限。
- no_subtree_check:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。
-
启动服务
systemctl start rpcbind # 先启动rpcbind systemctl start nfs systemctl enable rpcbind --now # 开机自启并当前启动
-
查看端口检查启动情况
netstat -natp | grep rpcbind
-
查看共享
查看当前主机共享出去的目录列表
showmount -e
此时会输出:
Export list for ftp-nfs: /opt/wwwroot 192.168.110.0/24
客户端配置
-
同样需要安装NFS和RPC
yum install -y nfs-utils rpcbind
-
添加自启并启动
systemctl enable rpcbind --now systemctl status rpcbind
-
创建挂载点
mkdir /myshare
-
查看指定IP主机可供挂载的目录
showmount -e 192.168.110.128 # 后面要跟IP地址 # 输出: Export list for 192.168.110.128: /opt/wwwroot 192.168.110.0/24
-
手动挂载 NFS 共享目录(可省)
mkdir /myshare mount 192.168.110.128:/opt/wwwroot /myshare
-
设置自动挂载(永久挂载)
vim /etc/fstab # 添加内容 192.168.110.128:/opt/wwwroot /myshare nfs defaults,_netdev 0 0 # 根据/etc/fstab文件的配置,挂载所有未挂载的文件系统 mount -a # 查看挂载点 df -hT
解释:
_netdev:表示挂载设备需要网络
-
测试验证
上传文件,查看占用空间即可
-
强制卸载
如果服务器端NFS服务突然间停掉了,而客户端正在挂载使用时,在客户端就会出现执行 df -h 命令卡死的现象。这个时候直接使用 umount 命令是无法直接卸载的,需要加上-If 选项才能卸载。
umount -lf /myshare