Linux-nfs服务器

张开发
2026/4/10 9:28:17 15 分钟阅读

分享文章

Linux-nfs服务器
NFS服务器NFSNetwork File System网络文件系统是FreeBSD支持的文件系统中的一种它允许网络中的计算机不同的计算机、不同的操作系统之间通过TCP/IP网络共享资源主要在unix系列操作系统上使用。在NFS的应用中本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件就像访问本地文件一样。 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中而在本地端的系统中看来那个远程主机的目录就好像是自己的一个磁盘分区一样。 由于NFS支持的功能比较多而不同的功能都会使用不同的程序来启动每启动一个功能就会启用一些端口来传输数据因此NFS的功能所对应的端口并不固定而是随机取用一些未被使用的小于1024的端口用于传输。但如此一来就会产生客户端连接服务器的问题因为客户端需要知道服务器端的相关端口才能够连接。 此时就需要RPCRemote Procedure Call远程过程调用的服务。由于当服务器在启动NFS时会随机选取数个端口号并主动向RPC注册所以RPC知道每个NFS功能所对应的端口号RPC将端口号通知给客户端让客户端可以连接到正确的端口上去。RPC采用固定端口号port 111来监听客户端的需求并向客户端响应正确的端口号。 注在启动NFS之前要先启动RPC否则NFS会无法向RPC注册。另外RPC若重新启动原来注册的数据会消失不见因此RPC重启后它管理的所有服务都需要重新启动以重新向RPC注册一、核心概念到底谁挂载谁你在客户端执行mount命令这里有一个绝对不变的定义服务端 (Server)IP 是172.25.254.50它负责把/nfs/share这个文件夹共享出来。客户端 (Client)IP 是172.25.254.100它负责把服务端的文件夹挂载到自己本地的/mnt/nfs上。总结一句话客户端把服务端的目录挂载到自己的目录上。就像把 U 盘插在电脑上一样你是客户端U 盘是服务端。二、最常见的 3 个报错及解决方法这是你过程中遇到的坑每一个都对应了明确的原因1. 报错clnt_create: RPC: Unable to receive原因网络不通、防火墙拦截了 RPC 端口或者服务端的rpcbind和nfs-server没启动。解决服务端启动服务systemctl start rpcbind nfs-server临时测试直接关掉防火墙systemctl stop firewalld和setenforce 0看能否连通。2. 报错mount.nfs: access denied by server原因权限没对上。服务端/etc/exports里允许的客户端 IP 范围不包含你的客户端 IP172.25.254.100。你当前配置的172.25.254.0/24理论上是对的但可能因为配置没生效或网络细节问题被拒。解决检查配置cat /etc/exports重新加载配置必做exportfs -rv最快测试把配置改成*允许所有 IP测试通了再改回去。3. 挂载命令一直卡住原因服务器没响应。通常是防火墙没放行 NFS 所需的动态端口或者服务端共享没配置对。解决先关闭服务端防火墙测试确认连通后再配置防火墙规则。三、完整搭建速查表服务端 (172.25.254.50)安装yum install nfs-utils rpcbind创建目录mkdir -p /nfs/share写配置/etc/exports/nfs/share 172.25.254.0/24(rw,sync,no_root_squash)生效exportfs -rv配置修改之后重新生效reexport verbose启动systemctl enable --now nfs-server rpcbind防火墙放行 NFS 相关端口或直接测试时关防火墙。客户端 (172.25.254.100)安装客户端yum install nfs-utils创建挂载点mkdir -p /mnt/nfs挂载mount-tnfs172.25.254.50:/nfs/share /mnt/nfs 测试挂载df-h[roottest nfs]# df -h文件系统 容量 已用 可用 已用% 挂载点 devtmpfs4.0M04.0M0% /dev tmpfs1.8G01.8G0% /dev/shm tmpfs 725M9.1M 716M2% /run /dev/nvme0n1p3 95G6.3G 89G7% / /dev/nvme0n1p1 960M 233M 728M25% /boot /dev/sr0 12G 12G0100% /rhel9 tmpfs 363M4.0K 363M1% /run/user/0172.25.254.50:/nfs/share 95G2.8G 93G3% /mnt/nfs测试touch /mnt/nfs/test.txt开机自动挂载/etc/fstab 172.25.254.50:/nfs/share /mnt/nfs nfs defaults 0 0四、关键参数解释参数作用rw读写权限最重要sync同步写入磁盘数据更安全no_root_squash客户端 root 用户在服务端也拥有 root 权限生产慎用不安全no_all_squash保留客户端用户的原有权限一般配合no_root_squash使用五、配置自动挂载autofs这个服务是在客户端的上面它会持续的检测某个指定的目录并预先设置当使用到该目录的某个子目录时 将会取得来自服务器端的NFS文件系统资源并进行自动挂载的操作。1.客户端下载autofs[roottest nfs]# yum install autofs.x86_64 -y2.编辑/etc/auto.master#客户端本地文件目录(里面有upload目录) #配置文件存放本地设置的文件目录 服务端的ip:目录文件/client /etc/auto.suibian[roottest client]# vim /etc/auto.suibianupload172.25.254.50:/nfs/share ~ ~[roottest client]# tree ././ └── upload ├──111└── dfdfdfd

更多文章