Linux/centos上如何配置管理NFS服务器?
1 NFS基础了解
- NFS(Network File System)即文件操作系统;
- NFS允许网络中不同计算机相互之间共享资源。
1.1 NFS概述
- 1980年由SUN发展出来的在UNIX&Linux系统间实现文件共享的一种方法;
- 是一种文件系统协议,支持应用程序在客户端通过网络存取位于服务器磁盘中的数据;
- NFS只提供网络文件共享,不提供数据传输功能;
- NFS客户端和服务端需借助- RPC(Remote Procedure Calls)实现数据传输;
- NFS服务器目录被访问称为导出(- export),客户机访问导出目录过程称为挂载(- mount)或导入(- import)。
2.1 NFS工作流程
第一步:访问NFS共享资源,NFS客户端发出询问请求,即客户端RPC服务通过网络向服务端RPC服务的111端口发出询问请求。
第二步: NFS服务端RPC找到对应已注册的NFSdaemon端口,通知客户端RPC;
第三步:NFS客户端获取端口,直接与NFSNFSdaemon联机存储数据。
第四步:NFS客户端吧数据存储成功后,告诉用户结果。
2 安装和启动NFS服务
-  一般情况,系统均已安装NFS; 
-  先检查下是否安装NFS,以下两个是相关的依赖包 rpm -qa | grep nfs-utils rpm -qa | grep rpcbind 
-  如果系统没有安装NFS依赖包,则需要安装: yum clean all yum -y install nfs-utils rpcbind
2.2 启动NFS服务
-  NFS状态查看: systemctl status rpcbind.service systemctl status nfs.service 
-  启动NFS systemctl start rpcbind.service systemctl start nfs.service 
-  停止NFS服务: systemctl stop nfs.service
-  重启NFS服务: systemctl restart nfs.service
-  设置开机自启动NFS服务: systemctl enable rpcbind.servicesystemctl enable nfs.service
3 配置NFS服务器和客户端
3.1 配置NFS服务器
- 配置文件在/etc/exports;
- 格式为: 
  共享目录 [客户端1(参数)] [客户端2(参数)] 共享目录:NFS服务器需要共享的实际路径(绝对路径); 客户端:可以访问共享目录的计算机。
- 客户端常用形式: 
  客户端 说明 192.168.1.111指定IP地址的主机 192.168.1.0/24指定子网的所有主机 192.168.1.*指定子网的所有主机 www.xxx.com指定域名的主机 *.xxx.com指定域中的所有主机 *所有主机 
- 常用访问权限: 
  访问权限 说明 ro只读 rw读写 
用户映射参数
- 用户映射参数表: 
  用户映射 说明 all_squash将远程访问的所有用户映射为匿名用户或用户组( nfsnobody)no_all_squash与上边相反(默认设置) root_squash将root用户… (默认设置) no_root_squash与上边相反 anonuid=xxx将该匿名账号为本地账号( UID=xxx)anongid=xxx将该匿名用户组为本地用户组( GID=xxx)
其它参数:对输出目录进行控制。
-  常用其它参数: 其它参数 说明 secure限制客户端只能从小于1024的TCP/IP端口链接NFS insecure语序客户端大于1024的TCP/IP端口连接NFS sync将数据同步写入内存缓冲区与磁盘中 async将数据先保存在缓冲区中,必要时才写入磁盘 wdelay检查是否有相关的写操作 no_wdelay有写操作立即执行,与 sync配合使用subtree_check若输出目录为子目录,则NFS服务器将检查父目录的权限 no_subtree_check若输出目录为子目录,则NFS服务器不检查父目录的权限 
-  比如将 /mnt/temp目录,只给IP为172.16.1.33的计算机进行读写权限:/mnt/temp 172.16.1.33 (rw, sync)
-  比如将 /mnt/temp01目录,只给子网中为172.16.1.0/24的计算机进行读写权限,其他计算机制只读权限:/mnt/temp0 172.16.1.0/24 (rw, async) * (ro)
配置中不能有空格


3.2 配置NFS客户端
-  查看NFS服务器信息: showmount [选项] (参数)-d:仅显示已被NFS客户端加载的共享目录; 
 -e:显示NFS服务器上所有的共享目录。
 在使用showmount时建议关闭防火墙,将SELinux设为为允许。systemctl stop firewalld.service setenforce 0 getenforce
-  挂在NFS服务器的共享目录: 将NFS的共享目录挂在到本地: 
 mount -t NFS服务器IP:输出目录 本地挂在目录
-  比如: mkdir /mnt/mytemp mount -t nfs 192.168.0.190:/mnt/mytemp /mnt/mytemp
-  卸载NFS服务器: umount 挂载点
-  启动时自动挂在NFS共享目录: 192.168.0.190: /mnt/temp /mnt/mytemp nfs defaults 0 0
4 实际示例
4.1 基本要求
- NFS服务器192.168.0.190; 
  - 要求1:共享目录/mnt/temp,允许192.168.0.0/24网段内计算机访问;
- 要求2:共享目录/mnt/share, 允许用户zhang访问,IP为192.168.0.10;
- 要求3:共享目录/mnt/upload,允许192.168.0.0/24网段作为上传目录,所属组为nfsupload,UID和GID均为666;
- 要求4:共享目录/mnt/nfs,除192.168.0.0/24网段用户访问,只读,可向internet提供数据内容;
 
4.2 案例实现
4.2.1 NFS服务器配置
-  安装NFS服务: yum -y install rpcbind yum -y install nfs-utils
-  创建目录和测试文件: # 创建目录: mkdir -p /mnt/public mkdir -p /mnt/minio
-  编辑 vi /etc/exports 
-  刷新配置 exportfs -r
-  查看共享 exportfs -v
-  启动服务 systemctl start rpcbind systemctl start nfs
-  设置开机自动启动 systemctl enable rpcbind.service systemctl enable nfs-server.service
showmount -e 查看NFS服务器端共享目录
4.2.2 NFS客户端配置
-  关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service
-  关闭selinux vi /etc/selinux/config把SELINUX改成disabled 
-  安装nfs-utils和rpcbind yum -y install nfs-utils rpcbind
-  启动服务 systemctl start rpcbind systemctl start nfs
-  设置开机自动启动 systemctl enable rpcbind.service systemctl enable nfs-server.service
-  查看服务端的共享目录 showmount -e 192.168.0.243
-  建立本地目录 mkdir /mnt/243_share_dir
-  把服务器端的共享目录mount到本地目录 mount -t nfs 192.168.0.243:/share_dir /mnt/243_share_dir验证: df -h
-  编辑/etc/fstab,开机自动挂载 vi /etc/fstab
-  在结尾添加如下一行 192.168.0.243:/share_dir /mnt/243_share_dir nfs4 defaults 0 0




![[RISCV] 发现一个可以看RISC-V CPU行为的开源项目](https://img-blog.csdnimg.cn/direct/74eb27892818445781a2809e32f2db89.png)














