阿里云挂载 NFS 磁盘

2020/06/09 Linux

阿里云挂载 NFS 磁盘

其实阿里云买了服务过后,作为一个开发者,跟着文档走,大部分问题都可以解决,现成的指令甚至连参数都帮你替换好了,复制粘贴就好,但是因为复杂,会接连出现多个文档,缺少统一性。

安装组件以及调优

$ sudo yum install nfs-utils
$ echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
$ echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf
$ reboot
$ cat /proc/sys/sunrpc/tcp_slot_table_entries

挂载 NFS 磁盘

首先先购买 NAS 文件系统,买完之后,其实就可以理解为拥有了一个根分区的容量很大的磁盘,可以通过 mount 的方式将这个文件系统作为普通目录挂载在 ECS 中。

打开 NAS 文件系统控制台,点击资源进入,在挂载使用里面给出了“已自动替换参数的命令”,简单的操作就是复制到 ECS 主机上就可以了。

$ sudo mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt
参数 描述
file-system-id.region.nas.aliyuncs.com:/ /mnt 表示<挂载点地址>: <当前服务器上待挂载的本地路径>
vers 文件系统版本,目前只支持nfsv3和nfsv4。

挂载文件系统时,可选择多种挂载选项,详情情参见下表。

  • 如果您必须更改IO大小参数 (rsize和wsize),建议您尽可能使用最大值 (1048576),以避免性能下降。
  • 如果您必须更改超时参数 (timeo),建议您使用150或更大的值。该timeo参数的单位为0.1秒,因此150表示的时间为15秒。
  • 不建议使用soft选项,有数据一致性风险。如果您要使用soft选项,相关风险需由您自行承担。
  • 避免设置不同于默认值的任何其他挂载选项。如果更改读或写缓冲区大小或禁用属性缓存,会导致性能下降。
选项 说明
rsize 定义数据块的大小,用于在您的客户端与云中的文件系统之间读取数据。建议值:1048576。
wsize 定义数据块的大小,用于在您的客户端与云中的文件系统之间写入数据。建议值:1048576。
hard 指定在NAS暂时不可用的情况下,使用文件系统上某个文件的本地应用程序时应停止并等待该文件系统恢复在线状态。建议启用该参数。
timeo 指定时长(单位为0.1秒),即NFS客户端在重试向云中的文件系统发送请求之前等待响应的时间。建议值:600(60秒)。
retrans 指定NFS客户端应重试请求的次数。建议值:2。
noresvport 指定在网络重连时使用新的TCP端口,保障在网络发生故障恢复的时候不会中断连接。建议启用该参数。
$ df -h|grep aliyun

错误处理

这中间可能会出现一些问题导致无法挂载,阿里云已经写好了 python 脚本去检测问题。

$ wget -N https://code.aliyun.com/nas_team/nas-client-tools/raw/master/linux_client/check_alinas_nfs_mount.py -P /tmp/
$ python2.7 /tmp/check_alinas_nfs_mount.py file-system-id.region.nas.aliyuncs.com:/ /mnt

其中,file-system-id.region.nas.aliyuncs.com 为挂载点地址,/ 为 NAS 文件系统目录,/mnt 为当前服务器上待挂载的本地路径。

它的原理就是先假定你给的参数用于 NFS 系统挂载,逐步检测问题,我遇到的问题一是 /mnt 目录下存在文件;问题二未知,检测脚本一直卡在验证 NAS 是否使用 noresvport 参数,一直卡在那里,mount 也不行,重启之后问题解决。(重启试试:)。

参考

Search

    Table of Contents