nfs客户端卡死情况

本文探讨了NFS客户端在网络中断时出现的问题,并详细解释了hard模式与soft模式的区别。通过配置soft模式,可以避免客户端在网络异常时长时间阻塞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:对一台有nfs的服务器断网后,nfs客户端卡死,直到恢复网络后,依然没有恢复过来

分析:
这里写图片描述
解决:
改成soft-mount模式
soft和hard模式
当nfs的服务器端出现异常的时候,linux服务器的底层有重发机制,nfs客户端一直去向服务器端请求,判断服务器是否正常,一直阻塞。
当客户端挂载的时候采用hard模式,服务器端出现异常,则客户端会一直发请求,直到服务器正常。
当客户端挂载的时候采用soft模式,我们可以配置timeo和retry参数,配置超时时间,服务器端出现异常,客户端也会向服务器端发请求,当超过我们配置的时间,则会返回错误,不会一直阻塞。
hard模式挂载:
mount -t nfs -o rw 192.168.1.2:/home/nfs /mnt local_path
soft模式挂载
mount -t nfs -o rw,soft,timeo=30,retry=3 192.168.1.2:/home/nfs /mnt
timeo的单位是0.1秒,配置为30就是隔3秒客户端向服务器端请求。

断网命令:iptables -A OUTPUT -d 172.16.18.0/24 -j DROP
恢复命令:iptables -F
查看报错:
dmesg | tail -n 40

注意:该问题我猜测nfs低版本和高版本Linux内核不兼容的bug,升级成高版本一些的nfs,问题也能解决

<think>好的,我需要帮助用户设置和测试NFS网络文件系统实验环境。首先,我得回顾用户提供的引用内容,确保信息准确。用户提到了三个引用,分别涉及环境配置、实验目的与内容,以及mount挂载的细节。 首先,根据引用[1]和[2],实验需要两台Ubuntu PC,确保网络连通。然后搭建NFS服务器,配置共享目录,最后挂载客户端。引用[3]提到查看服务端和客户端的配置参数,这部分可能对测试有帮助。 接下来,我需要分步骤说明设置过程。首先是网络连接,确保两台机器在同一网络,可以互相ping通。然后是服务端的配置,安装NFS服务,编辑/etc/exports文件,添加共享目录和权限,例如允许所有客户端读写,使用no_root_squash。之后,重启服务,用exportfs验证配置是否正确。如果用户遇到问题,可能需要检查防火墙设置,或者共享目录的权限是否正确。 客户端方面,需要安装nfs-common,创建挂载点,使用mount命令挂载。这里要强调命令的正确格式,比如指定nfs版本,或者添加参数如nolock。测试阶段,可以在客户端创建文件,检查服务端是否有该文件,以验证读写是否正常。最后,建议配置开机自动挂载,编辑/etc/fstab,但要注意添加nofail选项,防止启动失败。 可能的问题包括网络不通、权限配置错误、防火墙阻止访问。需要提醒用户检查这些方面。另外,用户可能需要了解如何卸载NFS,使用umount命令,或者在fstab中注释掉相关行。 最后,生成相关问题需要考虑用户可能的后续需求,比如调试技巧、安全优化、与其他协议的对比,以及自动化部署方法。这些能帮助用户深入学习和应用NFS。</think>### 设置和测试NFS网络文件系统实验环境的步骤 #### 一、实验环境准备 1. **硬件要求** - 两台安装Ubuntu系统的PC机(一台作为NFS服务端,另一台作为客户端)[^2]。 - 确保两台机器通过局域网连通(可通过`ping <IP地址>`测试连通性)。 2. **软件依赖** - 服务端需安装NFS服务包: ```bash sudo apt install nfs-kernel-server ``` - 客户端需安装NFS客户端工具: ```bash sudo apt install nfs-common ``` --- #### 二、NFS服务端配置 1. **创建共享目录** ```bash sudo mkdir /nfs_share sudo chmod 777 /nfs_share # 开放目录权限 ``` 2. **配置共享规则** 编辑`/etc/exports`文件,添加以下内容: ```bash /nfs_share *(rw,sync,no_root_squash,no_subtree_check) ``` - `rw`:允许读写 - `no_root_squash`:允许客户端以root权限访问 - `sync`:同步写入磁盘[^3]。 3. **生效配置并重启服务** ```bash sudo exportfs -a # 重新加载exports配置 sudo systemctl restart nfs-kernel-server ``` 使用`showmount -e`验证共享目录是否可见: ```bash showmount -e localhost ``` --- #### 三、客户端挂载NFS 1. **创建本地挂载点** ```bash sudo mkdir /mnt/nfs_client ``` 2. **挂载NFS共享目录** ```bash sudo mount -t nfs <服务端IP>:/nfs_share /mnt/nfs_client -o nolock ``` - `-t nfs`:指定文件系统类型 - `-o nolock`:禁用文件锁(某些场景需添加)[^3]。 3. **验证挂载** - 执行`df -h`查看挂载状态。 - 在客户端创建测试文件,检查服务端共享目录是否同步: ```bash touch /mnt/nfs_client/test.txt ``` --- #### 四、调试与常见问题 1. **服务端配置检查** - 查看NFS服务端详细参数: ```bash cat /var/lib/nfs/etab # 显示导出的共享目录配置 ``` 2. **客户端挂载参数验证** - 检查挂载详情: ```bash cat /proc/mounts | grep nfs # 显示NFS挂载参数 ``` 3. **防火墙与权限问题** - 若客户端无法连接,需开放服务端防火墙的NFS相关端口(如2049)。 - 确保共享目录权限为`777`,避免客户端写入失败。 --- #### 五、持久化挂载(可选) 编辑客户端`/etc/fstab`文件,添加以下行实现开机自动挂载: ```bash <服务端IP>:/nfs_share /mnt/nfs_client nfs defaults,nofail 0 0 ``` - `nofail`:防止因网络问题导致系统启动卡死。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值