只针对Linux系统的用户,Windows用户请忽略。

第一步,检查是否使用noresvport挂载参数

  1. 在ECS上下载check_noresvport.py检查脚本。
    wget -N https://code.aliyun.com/nas_team/nas-client-tools/raw/master/linux_client/check_noresvport.py -P /tmp/
  2. 使用python执行检查脚本。
    python2.7 /tmp/check_noresvport.py

    如果脚本输出:本台ECS无须处理noresvport问题,则无须处理。否则请执行第二步,noresvport参数修复方法

第二步,noresvport参数修复方法(建议在业务低峰进行)

  • 如果使用ECS直接挂载NAS,请使用参数-r再次执行检查脚本。
    python2.7 /tmp/check_noresvport.py -r
  • 如果使用容器挂载NAS,请使用参数-c再次执行检查脚本。
    python2.7 /tmp/check_noresvport.py -c

第三步,更新自动挂载配置

  • 如果之前配置过自动挂载,请参考自动挂载NFS文件系统更新自动挂载参数,加入noresvport挂载参数。
  • 如果之前没有配置过自动挂载,可以跳过此步骤。

修复完成后,请再次执行第一步,检查是否使用noresvport挂载参数确认修复生效。如果仍有问题请及时联系我们(钉钉群号:23110762)。

常见问题

  • 为什么要使用noresvport参数挂载NAS?不重新挂载会有什么后果?

    如果发生网络切换或者后端服务的HA倒换,小概率会造成NFS文件系统阻塞,那就可能需要几分钟时间连接才会自动恢复,极端情况下甚至需要重启ECS才能恢复。使用noresvport参数后,这个恢复几秒就可以自动完成。

  • 什么情况会引发网络切换或者后端服务的HA倒换?

    NAS服务是稳定的,网络切换或者后端服务的HA倒换都是罕见情况。后端服务升级会触发上述切换,但导致客户端阻塞的概率很低,并且在升级之前我们会提前通知相关集群的用户,留出充足时间使用noresvport参数。其他可能引发切换的场景,还有负载均衡调整、服务端硬件故障等情况,有一定的不可预测性,所以即使服务端没有升级安排,也请尽快使用noresvport参数避免这样的风险。

  • 为什么需要重新挂载?还有没有其他的方案?

    需要重新挂载的原因是要把之前没有使用noresvport参数的TCP连接断掉,然后使用noresvport参数挂载时,会建立新的TCP连接。为了把老的TCP连接断掉,就必须把NAS相关的业务都停掉,然后执行umount卸载。如果不希望重新挂载,可以考虑新建NAS挂载点,使用noresvport参数挂载到新的本地路径,然后把业务进程逐步迁移过去,最后废弃老的挂载路径和挂载点。