阿里云文件存储 NAS(File Storage NAS)是面向阿里云ECS实例、E-HPC和ACK等计算节点的文件存储服务。阿里云NAS服务具有无缝集成、共享访问、安全控制等特性,非常适合跨多个ECS、E-HPC或ACK实例部署的应用程序访问相同数据来源的应用场景。本文介绍如何配置NAS共享存储。
背景信息
为了保护数据科学家的工作内容并方便读取共享的训练数据,建议在Arena提交作业的运行环境中配置共享存储卷并挂载。确保数据科学家的工作内容(代码、数据)得以保留,不会随着容器删除而丢失。在团队开发中,建议分配一个共享的存储池,让数据和代码能够在团队里共享。
在Arena提交作业时,如果声明了配置共享存储及要挂载到运行环境的路径,可以使用--data
参数。共享存储将会被挂载到指定的目录中,提交作业可以复用这部分数据或者代码。
在Kubernetes中,通过存储卷(PV)和存储声明(PVC)描述存储对象。作为集群管理员,分配环境时需要为每个数据科学家创建属于自己的存储声明。例如用户A和用户B,存储声明的后端可以挂载到相同的NAS或者CPFS,但是必须指定不同的子目录,保证他们的工作环境隔离。
步骤一:创建NAS实例
有关创建NAS实例的具体操作步骤,请参见通过控制台创建通用型NAS文件系统。
创建NAS实例的参数配置说明如下:
文件系统类型设置为通用型。
地域设置为和ACK集群相同的地域。
专有网络VPC选择和ACK集群相同的VPC。
协议类型设置为NFS。
步骤二:挂载文件系统
创建文件存储NAS实例后,需要将NFS文件系统挂载至同一VPC内的ECS实例并验证挂载,本文以控制台一键挂载为例。更多挂载方式请参见挂载文件系统场景说明。
挂载NAS文件系统
登录NAS控制台,执行以下操作:
在左侧导航栏,选择
。在页面左侧顶部,选择目标文件系统所在的资源组和地域。
找到刚创建的文件系统,然后单击操作列的挂载。
说明首次使用NAS一键挂载功能,需要进行NAS一键挂载关联角色授权,请根据对话框中的提示,完成NAS一键挂载服务关联角色授权。更多信息,请参见文件存储NAS服务关联角色。
在挂载面板,完成挂载NAS文件系统配置。
选择挂载点,然后单击下一步。
选择目标ECS实例,然后单击下一步。
请选择与NAS在同一VPC下的ECS实例,当选择不一致时,NAS会提示可能导致网络不通,请注意排查。
说明如果您在实例下拉菜单中查询不到新建的ECS实例,请您刷新页面后再次尝试。
该配置仅支持选择一台目标ECS实例,如果您需要多台ECS实例挂载同一文件系统,请参见多台ECS实例批量挂载同一NFS协议文件系统。
配置挂载到ECS。
配置项
说明
挂载路径
目标ECS实例上待挂载文件系统的本地路径。
自动挂载
默认选中开机自动挂载,当您重启ECS实例时,无需重复挂载操作。
协议类型
选择文件系统协议类型。
通用性NAS文件系统支持NFSv3和NFSv4.0。如果您的业务场景不包含多台ECS实例同时编辑同一个NAS文件,建议您选择NFSv3,达到最优性能。
极速型NAS文件系统支持NFSv3。
NAS目录
NAS文件系统目录。
NAS的根目录(/)或任意子目录(例如:/abc)。
说明如果提示目录不存在,您可以选中确认新建目录,在文件系统中新建该目录。同时您还需要配置创建该目录的UID和GID以及POSIX权限,如果不配置,则使用默认值和默认权限直接创建。
挂载参数
建议您使用默认挂载参数。更多参数说明,请参见参数说明。
单击完成挂载。
挂载需要大约1~2分钟。当挂载状态为挂载成功时,则表示NAS文件系统已成功挂载至ECS。
如果挂载状态为挂载失败时,您可以通过排查工具进行排查,详情请参见Linux挂载NFS协议文件系统失败自动检查脚本。
挂载完成后,您还可以连接ECS实例,执行
mount -l
或者df -h
命令,查看挂载参数信息或文件系统容量信息。
验证挂载
挂载成功后,可以在ECS上把NAS文件系统当作一个普通的目录来访问和使用,示例如下。
远程连接ECS实例,执行以下命令,在ECS实例上访问NAS文件系统。
mkdir /mnt/dir1 mkdir /mnt/dir2 touch /mnt/file1 echo 'some file content' > /mnt/file2 ls /mnt
返回如图所示信息,说明成功访问通用容量型NAS NFS文件系统。
在文件存储NAS中,需要通过挂载点将文件系统挂载至云服务器ECS。添加更多挂载点、查看挂载点地址的具体操作,请参见管理挂载点。
添加挂载点需注意:
挂载点类型设置为专有网络。
VPC网络和交换机设置为和ACK集群一致的VPC和交换机。
步骤三:配置ACK集群的存储卷(PV)和存储声明(PVC)
创建PV
创建PV,在集群中“注册”已有的NAS文件系统。
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在存储卷页面,单击创建,在弹出的对话框完成参数配置,然后单击创建。
配置项
说明
示例值
存储卷类型
选择NAS。
NAS
名称
PV名称,在集群内保持唯一。
pv-nas
总量
PV容量声明。此声明仅为PVC匹配依据,不限制实际可用容量。应用实际可用存储上限为NAS文件系统总容量。
NAS实际容量上限由其规格决定,请参见通用型NAS和极速型NAS。
5Gi
访问模式
配置访问模式。可取值:
ReadWriteMany:多节点读写。
ReadWriteOnce:单节点读写。
ReadWriteMany
是否使用CNFS
是否使用容器网络文件系统CNFS,使用其在自动化运维、缓存加速、性能监控等方面提供的增强能力。
如需使用CNFS管理已有NAS,请参见创建CNFS管理NAS文件系统(推荐)。
不开启
挂载点域名
未开启CNFS时可配置
NAS挂载点地址。
如需获取地址,请参见管理挂载点。
选择挂载点:选择此前添加的挂载点地址。
自定义:使用自定义域名作为挂载地址。请确保已完成自定义域名到目标NAS挂载点的解析配置。
0c47****-mpk25.cn-shenzhen.nas.aliyuncs.co
高级选项(选填)
挂载路径
待挂载的NAS子目录。如果未设置,则默认挂载到根目录。
如果NAS中没有该目录,系统会自动创建并进行挂载。
通用型NAS:根目录为
/
。极速型NAS:根目录为
/share
。挂载子目录时,path
需以/share
开头(如/share/data
)。
/data
回收策略
Retain(默认):删除PVC时,PV和NAS文件不会被删除,需手动删除。
Delete:需配合
archiveOnDelete
一起使用。静态PV不支持archiveOnDelete
,即使配置为Delete,删除PVC时也不会真正删除PV和NAS文件。如需配置
archiveOnDelete
,请参见使用NAS动态存储卷。
Retain
挂载选项
NAS的挂载参数,包括NFS协议版本等。推荐使用NFS v3。
nolock,tcp,noresvport
vers=3
标签
PV的标签。
pv-nas
创建完成后,可在存储卷页面查看新创建的PV。
创建PVC
创建PVC,为应用声明其所需的持久化存储容量。
在集群管理页左侧导航栏,选择 。
在存储声明页面,单击创建,在弹出的对话框中,完成参数配置,然后单击创建。
配置项
说明
示例值
存储声明类型
选择NAS。
NAS
名称
PVC名称,在集群内保持唯一。
pvc-nas
分配模式
选择已有存储卷。
本文使用此前创建的PV。若未创建PV,可选择分配模式为创建存储卷。
选择已有存储卷
已有存储卷
选择此前创建的PV。
pv-nas
总量
声明所需使用的存储卷的容量。此处声明的所需容量仅为 PV 匹配的依据,并非实际容量的限制。
NAS实际容量上限由规格决定,请参见通用型NAS和极速型NAS确认。
5
访问模式
访问模式。可取值:
ReadWriteMany
(默认):多节点读写。ReadWriteOnce
:单节点读写。ReadOnlyMany
:多节点只读。
ReadWriteMany
步骤四:给PVC填充数据
因为Kubernetes集群通过PVC访问各种共享数据(也就是本文在步骤一中创建的NAS实例),所以仅需要给PVC实例对应的NAS实例填充数据即可。
使用Workbench登录ACK集群任意一台ECS节点,具体操作请参见登录Linux实例。更多连接ECS实例的方式,请参见ECS远程连接方式概述。
在步骤二中,已将NFS文件系统挂载到ECS实例的
/mnt
目录中。执行以下命令,通过挂载的这个目录为NAS实例创建两个目录tf_data/
和pytorch_data/
,分别存放TF mnist
和Pytorch mnist
的训练数据。cd /mnt/ mkdir tf_data/ mkdir pytorch_data/
执行以下命令下载
TF mnist
的数据集。cd tf_data git clone https://code.aliyun.com/xiaozhou/tensorflow-sample-code.git mv tensorflow-sample-code/data/* ./ && rm -rf tensorflow-sample-code
执行以下命令下载
Pytorch mnist
的数据集。cd pytorch_data git clone https://code.aliyun.com/370272561/mnist-pytorch.git mv mnist-pytorch/MNIST ./ && rm -rf mnist-pytorch