凌峰创科服务平台

Linux NFS服务器搭建怎么操作?

Linux NFS(Network File System)服务器搭建是一个涉及系统配置、服务安装、权限管理和网络优化的过程,广泛应用于跨主机文件共享场景,以下是详细搭建步骤及注意事项,适用于主流Linux发行版(如Ubuntu/Debian、CentOS/RHEL)。

Linux NFS服务器搭建怎么操作?-图1
(图片来源网络,侵删)

环境准备

假设搭建环境如下:

  • NFS服务器端:IP地址为192.168.1.100,操作系统为Ubuntu 22.04 LTS或CentOS 8。
  • NFS客户端:IP地址为192.168.1.x(网段内任意主机),需与服务器端网络互通。

更新系统包

在服务器端执行以下命令更新系统:

  • Ubuntu/Debian
    sudo apt update && sudo apt upgrade -y
  • CentOS/RHEL
    sudo yum update -y

安装NFS服务

安装nfs-kernel-server(Ubuntu/Debian)

Ubuntu/Debian系统使用nfs-kernel-server作为NFS服务端:

sudo apt install nfs-kernel-server -y

安装后,服务会自动启动,可通过systemctl status nfs-server检查状态。

Linux NFS服务器搭建怎么操作?-图2
(图片来源网络,侵删)

安装nfs-utils(CentOS/RHEL)

CentOS/RHEL系统使用nfs-utils

sudo yum install nfs-utils -y

安装后启动服务并设置开机自启:

sudo systemctl start nfs-server
sudo systemctl enable nfs-server

配置共享目录

创建共享目录

创建/data/nfs_share作为共享目录,并设置权限:

sudo mkdir -p /data/nfs_share
sudo chmod 755 /data/nfs_share  # 设置读写执行权限
sudo chown nobody:nogroup /data/nfs_share  # 所属用户为nobody(避免权限冲突)

编辑NFS配置文件

NFS主配置文件为/etc/exports(Ubuntu/Debian)或/etc/exports.d/exports.exports(CentOS/RHEL),使用vimnano编辑:

sudo vim /etc/exports

添加以下配置(根据需求调整参数):

/data/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

参数说明

  • 168.1.0/24:允许访问的客户端IP网段(可指定单个IP,如168.1.200)。
  • rw:允许客户端读写(ro为只读)。
  • sync:数据同步写入磁盘,确保数据安全(async为异步,性能更高但可能丢失数据)。
  • no_subtree_check:不检查子目录,提升性能(建议开启)。
  • no_root_squash:允许客户端root用户拥有root权限(生产环境建议使用root_squash映射为匿名用户)。

生效配置

修改/etc/exports后,需执行以下命令使配置生效:

  • Ubuntu/Debian
    sudo exportfs -a
  • CentOS/RHEL
    sudo exportfs -r

    同时检查导出列表:

    sudo showmount -e

    输出应包含配置的共享目录及允许的客户端IP。

配置防火墙与SELinux

防火墙配置

NFS默认使用多个端口(2049、111、32768-32771等),需开放相关端口或直接允许NFS服务。

Ubuntu/Debian(ufw)

sudo ufw allow from 192.168.1.0/24 to any port nfs  # 开放NFS端口(2049)
sudo ufw allow from 192.168.1.0/24 to any port mountd  # 开放mountd端口(通常为20048)
sudo ufw allow from 192.168.1.0/24 to any port rpcbind  # 开放rpcbind端口(111)
sudo ufw reload

CentOS/RHEL(firewalld)

sudo firewall-cmd --permanent --add-service=nfs  # 允许NFS服务
sudo firewall-cmd --permanent --add-service=rpc-bind  # 允许rpc-bind服务
sudo firewall-cmd --permanent --add-service=mountd  # 允许mountd服务
sudo firewall-cmd --reload

SELinux配置(仅CentOS/RHEL)

若SELinux为启用状态(sestatus检查),需设置NFS相关策略:

sudo setsebool -P nfs_export_all_rw 1  # 允许NFS读写共享
sudo semanage fcontext -a -t public_content_t "/data/nfs_share(/.*)?"  # 设置目录安全上下文
sudo restorecon -Rv /data/nfs_share  # 应用上下文

客户端挂载NFS共享

安装客户端工具

客户端需安装nfs-common(Ubuntu/Debian)或nfs-utils(CentOS/RHEL):

# Ubuntu/Debian
sudo apt install nfs-common -y
# CentOS/RHEL
sudo yum install nfs-utils -y

创建挂载点

sudo mkdir -p /mnt/nfs_client

挂载NFS共享

sudo mount 192.168.1.100:/data/nfs_share /mnt/nfs_client

检查挂载状态:

df -h | grep nfs

或查看/proc/mounts确认挂载信息。

设置开机自动挂载(可选)

编辑/etc/fstab添加以下行:

168.1.100:/data/nfs_share /mnt/nfs_client nfs defaults 0 0

参数说明:

  • defaults:使用默认挂载选项(可包含rw、sync等)。
  • 0 0:表示dump备份和fsck磁盘检查的优先级(通常为0)。

NFS性能优化建议

优化项 说明
网络配置 使用千兆以上网络,调整MTU值(如1500)减少 fragmentation。
磁盘类型 推荐使用SSD或高速磁盘,避免机械磁盘I/O瓶颈。
同步模式 生产环境建议使用sync确保数据安全,测试环境可尝试async提升性能。
客户端缓存 客户端可通过actimeo参数设置属性缓存(如actimeo=30,单位为秒)。
并发连接 调整rpc.nfsd线程数(如sudo sysctl -w fs.nfsd.threads=16)。

常见问题排查

  1. 客户端挂载失败,提示“Permission denied”

    • 检查服务器端共享目录权限(chmod 755)及/etc/exports中的no_root_squash配置。
    • 确认客户端IP是否在允许的网段内。
  2. NFS服务无法启动,提示“rpcbind failed”

    • 确保先启动rpcbind服务(sudo systemctl start rpcbind),再启动nfs-server
    • 检查防火墙是否开放111端口(rpcbind服务端口)。

相关问答FAQs

Q1: 如何查看NFS服务器的共享目录列表?
A1: 在客户端执行以下命令查看服务器端导出的共享目录:

showmount -e 192.168.1.100

若提示“RPC program not registered”,需检查服务器端nfs-serverrpcbind服务是否正常运行。

Q2: NFS共享目录如何实现用户权限映射?
A2: 通过/etc/exports中的uidgid参数指定映射的用户和组ID,将客户端用户test映射为服务器端用户nfsuser

/data/nfs_share 192.168.1.0/24(rw,all_squash,anonuid=1000,anongid=1000)

anonuid=1000anongid=1000为服务器端nfsuser的UID和GID,需提前创建用户并设置目录所属权限。

分享:
扫描分享到社交APP
上一篇
下一篇