NFS服务简介
定义
NFS(Network File System,网络文件系统)是一种通过网络共享文件的协议。它允许不同的计算机和操作系统通过TCP/IP网络共享文件。NFS服务器可以将共享的目录挂载到本地文件系统中,使得远程主机的目录看起来像是本地磁盘分区。
NFS的工作原理
NFS的核心是通过远程过程调用(RPC)协议来实现的。NFS服务器在启动时,会随机使用一些端口,并向RPC注册这些端口。RPC会记录这些端口信息,并通过111端口等待客户端的请求。当客户端请求时,RPC会将NFS端口信息反馈给客户端,客户端通过这些端口与NFS服务器建立连接并进行数据传输。
NFS的优缺点
优点节省本地存储空间:常用数据可以存放在一台服务器上,通过网络访问。简单易用:NFS的配置和使用相对简单。方便部署和维护:NFS的部署速度快,维护也很简单。缺点单点故障:如果NFS服务器宕机,所有客户端都无法访问。性能有限:在高并发情况下,NFS的效率和性能有限。安全性一般:NFS没有用户认证机制,数据通过明文传输,安全性较低。数据完整性:NFS的数据是明文的,不做数据完整性验证。连接管理复杂:多台机器挂载NFS服务器时,连接管理和维护较为麻烦。
系统环境配置
系统:国产操作系统 Kylin V10 Server SP3 2403系统IP:192.168.1.5/24
1 服务端系统配置
系统安装(常规配置)
系统分区:/boot/efi 1G(UEFI模式需要配置)/boot/ 1G/ 剩余给根
软件选择:基本环境选择带UKUI GUI的服务器,附加软件选择开发工具
[root@NFS]# nkvers
NFS服务端开启相关服务
需要安装 rpcbind 和 nfs-utils,麒麟系统自带,启动并enable即可
systemctl start rpcbind.service systemctl enable rpcbind.service systemctl start nfs.service systemctl enable nfs.service
NFS服务端关闭防火墙(或放行相关服务)
(1)无特殊要求直接关闭防火墙即可
systemctl stop firewalldsystemctl disable firewalld
(2)如不允许关闭防火墙,则放行以下服务:rpc-bind、nfs、mountd
firewall-cmd --zone=public --add-service=rpc-bind --permanentfirewall-cmd --zone=public --add-service=nfs --permanentfirewall-cmd --zone=public --add-service=mountd --permanentfirewall-cmd --reload

创建共享目录
[root@NFS]# mkdir /public[root@NFS]# chmod -R 777 /public #如有需求本次举例共享目录单独挂载一个数据盘,如下:
配置/etc/exports
将配置参数写入/etc/exports,使用vim编辑或者echo写入:
echo "/public 192.168.1.0/24(rw,no_root_squash,no_subtree_check,async)" >> /etc/exports
参数解释:服务端地址可以是主机名、IP 地址、网段地址,允许使用“”、 “?”通配符rw:表示允许读写,ro:表示为只读no_root_squash: 表示当客户机以root身份访问时赋予本地root权限no_subtree_check:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率async:将数据先保存在内存缓冲区中,必要时才写入磁盘其它常用选项:root_squash:表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户all_squash:所有访问用户都映射为匿名用户或用户组subtree_check:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限sync:表示同步写入到内存 与硬盘中
重新加载NFS服务,使配置生效
exportfs -rv

2 客户端系统配置
(1)查看NFS服务端的共享目录:
showmount -e 192.168.1.5
(2)客户端创建挂载目录:
mkdir /public
(3)挂载共享目录并查看挂载情况:
mount -t nfs -o vers=4 192.168.1.5:/public /public
(4)设置开机自动挂载在/etc/fstab末尾加上下面的内容:
echo "192.168.1.5:/public /public nfs defaults,_netdev 0 0" >> /etc/fstab
_netdev :表示挂载设备需要网络
/etc/fstab配置完成后最好检查一下,配置错误重启系统后可能会无法进入系统