Ubuntu 20.04离线环境下的NFS服务部署与配置指南

张开发
2026/4/15 23:47:49 15 分钟阅读

分享文章

Ubuntu 20.04离线环境下的NFS服务部署与配置指南
1. 离线环境下的NFS服务部署准备在开始部署NFS服务之前我们需要先了解什么是NFS以及为什么要在离线环境下使用它。NFSNetwork File System是一种分布式文件系统协议允许不同计算机之间通过网络共享文件和目录。在离线环境中NFS特别适合用于内部网络的文件共享比如实验室环境、企业内部服务器集群等场景。对于Ubuntu 20.04系统离线安装NFS需要提前准备好所有依赖包。我建议在一台可以联网的机器上先下载好所有必要的deb包。具体来说我们需要以下软件包nfs-kernel-serverNFS服务端主程序nfs-commonNFS客户端工具rpcbind远程过程调用绑定服务libtirpc3传输独立RPC库libnfsidmap2NFS ID映射库这些软件包之间存在依赖关系所以最好一次性下载完整。我通常使用以下命令来获取所有依赖apt-get download nfs-kernel-server nfs-common rpcbind libtirpc3 libnfsidmap2下载完成后将这些deb包复制到目标机器的某个目录下比如/home/user/nfs_packages。记得检查下载的包是否完整我遇到过因为网络问题导致包下载不完整的情况这时候就需要重新下载。2. 安装NFS服务端软件有了所有必要的deb包后我们就可以开始安装了。这里有个小技巧先安装基础依赖包再安装主程序包。这样可以避免一些依赖问题。具体步骤如下首先进入存放deb包的目录cd /home/user/nfs_packages然后按顺序安装各个包sudo dpkg -i libtirpc3_*.deb sudo dpkg -i rpcbind_*.deb sudo dpkg -i libnfsidmap2_*.deb sudo dpkg -i nfs-common_*.deb sudo dpkg -i nfs-kernel-server_*.deb安装过程中可能会遇到依赖问题这时候可以运行sudo apt-get --fix-broken install -y这个命令会自动解决依赖关系。我在多个项目中使用这个方法效果很稳定。安装完成后可以通过以下命令验证是否安装成功dpkg -l | grep nfs应该能看到nfs-kernel-server和nfs-common都已经安装好了。3. 配置NFS服务端NFS服务安装好后我们需要进行配置才能使用。首先创建一个共享目录sudo mkdir -p /nfs_share sudo chmod 777 /nfs_share这里我将权限设置为777是为了测试方便在实际生产环境中应该根据需求设置更严格的权限。接下来编辑NFS的配置文件/etc/exportssudo tee /etc/exports EOF /nfs_share 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) EOF这个配置表示将/nfs_share目录共享给192.168.1.0/24网段的所有主机权限为读写(rw)同步写入(sync)不检查子目录(no_subtree_check)并且允许root用户保持权限(no_root_squash)。如果想让所有IP都能访问仅限测试环境可以使用echo /nfs_share *(rw,sync,no_subtree_check,insecure) | sudo tee -a /etc/exports配置完成后需要启动相关服务。这里有个顺序很重要先启动rpcbind再启动nfs-serversudo systemctl enable --now rpcbind sudo systemctl enable --now nfs-server4. 验证NFS服务状态服务启动后我们需要验证是否正常工作。首先检查rpcbind是否注册了NFS服务sudo rpcinfo -p | grep nfs应该能看到nfs服务的相关信息。然后查看共享列表sudo showmount -e localhost预期输出应该是Export list for localhost: /nfs_share 192.168.1.0/24如果能看到这个输出说明服务端配置成功了。为了进一步验证可以在服务端创建一个测试文件echo nfs-server-test | sudo tee /nfs_share/testfile cat /nfs_share/testfile这个文件稍后我们可以在客户端验证是否能正常访问。5. 客户端配置与挂载现在我们来配置客户端。首先同样需要安装必要的软件包主要是nfs-commonsudo dpkg -i nfs-common_*.deb rpcbind_*.deb libtirpc3_*.deb安装完成后创建挂载点sudo mkdir -p /mnt/nfs_share然后进行手动挂载测试sudo mount -t nfs NFS_SERVER_IP:/nfs_share /mnt/nfs_share将NFS_SERVER_IP替换为实际的NFS服务器IP地址。挂载成功后可以查看挂载情况df -h应该能看到nfs_share已经挂载上了。现在测试文件访问cat /mnt/nfs_share/testfile应该能看到之前创建的nfs-server-test内容。为了确保每次开机自动挂载我们需要编辑/etc/fstab文件echo NFS_SERVER_IP:/nfs_share /mnt/nfs_share nfs rw,hard,intr,noatime 0 0 | sudo tee -a /etc/fstab然后测试fstab配置是否正确sudo mount -a如果没有报错说明配置正确。最后我们可以在客户端创建一个测试文件验证写入权限echo client-test-file | sudo tee /mnt/nfs_share/client_test然后回到服务端检查这个文件是否存在cat /nfs_share/client_test6. 常见问题排查在实际部署过程中可能会遇到各种问题。这里分享几个我遇到过的典型问题及解决方法。首先是挂载失败的问题。如果mount命令报Connection refused可能是服务端的rpcbind或nfs服务没有启动。检查服务状态sudo systemctl status rpcbind sudo systemctl status nfs-server如果服务已经启动但还是无法连接可能是防火墙阻止了NFS端口。NFS使用多个端口最简单的办法是临时关闭防火墙测试sudo ufw disable测试通过后再配置防火墙规则放行NFS相关端口。另一个常见问题是权限问题。如果客户端无法写入文件检查服务端的/etc/exports配置是否正确特别是权限设置(rw)和no_root_squash选项。同时检查共享目录的权限ls -ld /nfs_share应该显示777或适当的权限设置。性能问题也经常遇到。如果文件传输速度慢可以尝试调整挂载参数。比如使用async替代sync但要注意这可能会增加数据丢失的风险。还可以尝试增加rsize和wsize参数mount -t nfs -o rsize32768,wsize32768 NFS_SERVER_IP:/nfs_share /mnt/nfs_share7. 安全加固建议虽然NFS很方便但在生产环境中使用时需要注意安全性。以下是我总结的几个安全建议限制访问IP范围在/etc/exports中尽量指定具体的IP或子网而不是使用通配符*。使用更安全的权限设置避免使用no_root_squash除非确实需要。这个选项允许客户端root用户保持权限存在安全风险。考虑使用NFSv4NFSv4比早期版本更安全支持更好的认证机制。可以通过修改/etc/default/nfs-kernel-server来启用sudo sed -i s/RPCNFSDOPTS--nfs-version 2,3,4/RPCNFSDOPTS--nfs-version 4/g /etc/default/nfs-kernel-server sudo systemctl restart nfs-server结合防火墙规则只开放必要的端口。NFSv4只需要2049端口比早期版本简单。定期检查日志NFS的日志通常位于/var/log/syslog中定期检查可疑连接尝试。8. 性能优化技巧根据我的经验NFS性能可以通过以下几个方法优化调整rsize和wsize这两个参数控制读写的数据块大小。对于千兆网络32KB是个不错的起点mount -t nfs -o rsize32768,wsize32768 server:/share /mnt/nfs使用TCP协议默认情况下NFS可能使用UDP。对于不稳定或高延迟网络TCP更可靠mount -t nfs -o prototcp server:/share /mnt/nfs启用noatime减少对访问时间的更新可以提高性能mount -t nfs -o noatime server:/share /mnt/nfs考虑使用async选项这会延迟写入操作提高性能但增加数据丢失风险适合对可靠性要求不高的场景。服务器端优化增加nfsd线程数可以提高服务器性能。编辑/etc/default/nfs-kernel-serverRPCNFSDCOUNT16然后重启nfs-server服务。这个值应该根据服务器CPU核心数调整通常设置为核心数的2-4倍。

更多文章