两台 Linux 机器,一台跑应用,一台专门存文件,要让应用机器直接读写存文件机器上的目录,内网里搭个 nfs服务 是最省事的方案,不用装数据库,也不用配一套账号体系。

服务端三步

CentOS 上先装包:yum install nfs-utils,然后编辑 /etc/exports,把要共享的目录和允许访问的网段写进去:

/data/share 192.168.1.0/24(rw,sync)

rw 表示可读写,sync 是写入落盘再返回,ro 则是只读。权限收紧点好,能限定单个 IP 就别放开整个网段。接着启动:systemctl enable --now nfs-server,以后改了 exports,用 exportfs -rv 让配置立即生效,不用重启服务。

客户端挂载

挂载 nfs服务 前,先看服务端放出了什么:showmount -e 192.168.1.10,列出的就是可挂载目录。然后建本地挂载点并挂上:

mkdir -p /mnt/nfs mount -t nfs 192.168.1.10:/data/share /mnt/nfs

开机自动挂载就把这条写进 /etc/fstab,记得加 _netdev 选项,避免网络没就绪就卡在挂载上。卸载用 umount,挂载点被占用时加 -l 懒卸载。

两个常见的坑

一是防火墙:nfs 主端口是 2049,还有 mountd 等辅助端口,防火墙没放行时,客户端 showmount 会一直卡住没输出。二是 root 权限映射:默认 root_squash 会把客户端的 root 压成普通用户,有人图省事加 no_root_squash,等于共享目录对客户端 root 完全敞开,内网环境也建议谨慎。

要不要用 nfs 也可以简单判断:纯内网、Linux 之间、普通文件读写,它最简单;跨公网或者有 Windows 机器混着用,考虑 SFTP 或 SMB 更合适。