挂载NFS协议类型文件存储到边缘虚拟机(Linux) 本节介绍NFS协议的文件存储如何挂载到Linux系统的边缘虚拟机上。 操作场景 当创建文件存储后,您需要使用边缘虚拟机来挂载该文件存储,以实现多个边缘虚拟机共享使用文件存储的目的。 同一文件存储不能同时支持 NFS 协议和 SMB 协议。 边缘裸金属服务器操作与边缘虚拟机一致,但裸金属服务器使用的是 underlay 的 VPC 网络挂载文件存储。 前提条件 在需要操作的地域创建虚拟私有云 VPC。 已创建该 VPC 下的边缘虚拟机,并根据操作系统类型,安装相应的 NFS 客户端。 已创建该 VPC 下的文件存储,协议类型为 NFS,并获取到文件存储的挂载点名称。 如果需要跨 VPC 访问文件存储,需要配置对等连接以确保 VPC 网络互通。 操作步骤 1. 以 root 用户登录弹性边缘虚拟机。 2. 安装 NFS 客户端。 查看系统是否安装 NFS 软件包。 说明 CentOS、Red Hat、Oracle Enterprise Linux、SUSE、Euler OS、Fedora或OpenSUSE系统下,执行如下命令: rpm qagrep nfs Debian或Ubuntu系统下,执行如下命令: dpkg l nfscommon 不同操作系统回显会有所不同,如果回显如下类似信息,说明已经成功安装 NFS 软件包。 说明 CentOS、Red Hat、Euler OS、Fedora 或 Oracle Enterprise Linux 系统下,回显如下类似信息: libnfsidmap nfsutils SUSE 或 OpenSUSE 系统下,回显如下类似信息: nfsidmap nfsclient Debian 或 Ubuntu 系统下,回显如下类似信息: nfscommon 如果查看到未安装,根据不同的操作系统,执行不同命令。 注意 执行以下命令前要求边缘虚拟机已连接到互联网,否则安装 NFS 客户端失败。 说明 CentOS、Red Hat、Euler OS、Fedora 或 Oracle Enterprise Linux 系统下,执行如下命令: sudo yum y install nfsutils Debian 或 Ubuntu 系统下,执行如下命令: sudo aptget install nfscommon SUSE 或 OpenSUSE 系统下,执行如下命令: zypper install nfsclient 3. 执行如下命令,创建用于挂载文件存储的本地路径。 mkdir 本地路径 说明 如果本地路径已挂载其他磁盘等资源,为被占用状态时,需要新建其它目录进行挂载(nfs 客户端不会对重复挂载进行拦截,当重复挂载时会表现为最后一次成功挂载的信息)。 4. 执行如下命令,将文件存储挂载到与文件存储所属 VPC 相同的边缘虚拟机上。 mount t nfs o vers3,timeo600,noresvport,nolock 挂载地址 本地路径 参数说明 参数 说明 :: vers 文件存储版本,支持 NFSv3 和 NFSv4。如果您的业务场景不包含多台实例同时编辑同一个文件,建议您选择 NFSv3,达到最优性能。 timeo NFS 客户端重传请求前的等待时间(单位为 0.1 秒)。建议值:600。 noresvport 指定 NFS 客户端向 NFS 服务端重新发起建立连接时使用新的 TCP 端口。强烈建议使用 noresvport 参数,这可以保障网络发生故障恢复事件后文件存储服务不会中断。 lock/nolock 选择是否使用 NLM 协议在服务器上锁文件。当选择 nolock 选项时,锁对于同一主机的应用有效,对不同主机不受锁的影响。建议值:nolock。如不加此参数,则默认为 lock,就会发生其他服务器无法对此文件存储写入的情况。ECX文件存储暂不支持非本地锁操作,需要显式添加 nolock 参数防止客户端调用非本地锁而导致抢锁失败的写入慢问题。 proto NFS 客户端向服务器发起传输请求使用的协议,可以为 UDP 或者 TCP。 挂载地址 文件存储的格式为:文件存储 ip:/ 路径,例如:192.168.0.10:/var/ecx/filenvmecv4lq0bkrj0lnj8u23n0。 本地路径 边缘虚拟机上用于挂载文件存储的本地路径,例如 “/localpath”。 注意 请将上述命令中的 “挂载地址” 替换为实际的文件存储 IP 地址及路径,将 “本地路径” 替换为在边缘虚拟机上创建的具体本地路径。 挂载文件存储时,更多性能调优的挂载参数,可参考更多参数配置,各参数之间以逗号进行分隔。例如: mount t nfs o vers3,timeo600,nolock,rsize1048576,wsize1048576,hard,retrans3,tcp,noresvport,ro,async,noatime,nodiratime 挂载地址 本地路径 更多参数 参数 说明 :: rsize 每次向服务器读取文件的最大字节数。实际数据小于或等于此值。rsize 必须是 1024 倍数的正整数,小于 1024 时自动设为 4096,大于 1048576 时自动设为 1048576。默认时,服务器和客户端进行协商后设置。建议设置为最大值 1048576。 wsize 每次向服务器写入文件的最大字节数。实际数据小于或等于此值。wsize 必须是 1024 倍数的正整数,小于 1024 时自动设为 4096,大于 1048576 时自动设为 1048576。默认时,服务器和客户端进行协商后设置。建议设置为最大值 1048576。 soft/hard 取值为 soft,即软挂载方式挂载系统,如果 NFS 请求超时,则客户端向调用程序返回错误;取值为 hard,即使用硬连接方式,如果 NFS 请求超时,则客户端一直重新请求直至成功。默认为 hard。 retrans 客户端返回错误前的重传次数。建议值:1。 tcp/udp 不指定 mountproto 时,客户端默认先尝试使用 udp 协议挂载,如果 udp 网络不通则会在卡顿几秒后再尝试 tcp 协议挂载。当前默认没有放通安全组入方向 mount 协议的 udp 端口号,需要将 mount 挂载协议设置为 TCP 传输协议,即 mountprototcp。 ro/rw ro:表示采用只读的方式挂载。rw:表示采用读写的方式挂载。默认为 rw。未写明 ro/rw 时,则默认为采用 rw 读写的方式挂载。 noresvport 指定 NFS 客户端向 NFS 服务端重新发起建立连接时使用新的 TCP 端口。强烈建议使用 noresvport 参数,这可以保障网络发生故障恢复事件后文件存储服务不会中断。 sync/async sync 为同步写入,表示将写入文件的数据立即写入服务端;async 为异步写入,表示将数据先写入缓存,再写入服务端。同步写入要求 NFS 服务器必须将每个数据都刷入服务端后,才可以返回成功,时延较高。建议设置为 async。 noatime 如果不需要记录文件的访问时间,可以设置该参数。避免频繁访问时,修改访问时间带来的开销。 nodiratime 如果不需要记录目录的访问时间,可以设置该参数。避免频繁访问时,修改访问时间带来的开销。 说明 没有 “使用建议” 的参数推荐使用默认参数。 5. 挂载完成后,执行如下命令,查看已挂载的文件存储。 mount l 如果回显包含如下类似信息,说明挂载成功。 挂载地址 on /localpath type nfs (rw,vers3,timeo600,nolock,addr) 6. 挂载成功后,用户可以在边缘虚拟机上访问文件存储,执行读取或写入操作。