阿里云文件存储 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实例批量挂载同一NAS文件系统。
配置挂载到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
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在存储卷页面,单击右上角的创建。
在创建存储卷对话框中配置参数。
配置项
说明
存储卷类型
支持云盘、NAS、OSS三种云存储类型。本文中选择为NAS。
名称
创建的数据卷的名称。数据卷名在集群内必须唯一。本例为pv-nas。
总量
所创建存储卷的容量。注意NAS文件系统本身不限制使用量。此处不是NAS文件系统的使用限额,只是所创建存储卷的容量声明。
访问模式
支持ReadWriteMany和ReadWriteOnce。默认为ReadWriteMany。
是否使用CNFS
是否使用CNFS功能。开启后,您需要进行以下操作:
选择对应的CNFS或新建CNFS。关于CNFS的更多信息,请参见创建CNFS管理NAS文件系统(推荐)。
是否开启CNFS加速功能,关于CNFS加速更多信息,请参见开启CNFS NAS计算端分布式缓存。
挂载点域名
您可以通过选择挂载点或者自定义的方式定义集群在NAS文件系统中挂载点的挂载地址。关于如何查看挂载点地址,请参见查看挂载点地址。
显示高级选项
挂载路径:NAS文件系统中的挂载路径。以/为根目录,设定后数据卷将挂载到指定的子目录。
如果NAS根目录下没有此子目录,会默认创建后再挂载。
您可以不填此项,默认挂载到NAS根目录。
极速NAS需要以/share为父目录。
回收策略:默认为Delete,支持Retain。
Delete:需配合
archiveOnDelete
一起使用。当
archiveOnDelete
为true
时,删除PVC时,PV和NAS文件只会被重命名,不会被删除。当
archiveOnDelete
为false
时,删除PVC时,PV和NAS文件会被真正删除。
Retain:删除PVC时,PV和NAS文件系统不会被删除,需要您手动删除。
如果数据安全性要求高,推荐使用Retain,以免误删数据。
挂载选项:挂载NAS的可选参数,包括NFS协议版本等参数。
NFS协议版本号推荐使用v3,且极速类型NAS仅支持v3。关于NFS协议的更多信息,请参见NFS协议。
标签
为该存储卷添加标签。
参数配置完成后,单击创建。
创建PVC
在集群管理页左侧导航栏,选择 。
在存储声明页面,单击右上角的创建。
在弹出的创建存储声明页面中,填写界面参数。
参数
说明
存储声明类型
支持云盘、NAS、OSS三种云存储类型。 本文中选择NAS。
名称
创建的存储声明名称在集群内必须唯一。
分配模式
选择已有存储卷。
说明若未创建存储卷,您可以设置分配模式为创建存储卷,配置创建存储卷参数。更多信息,请参见步骤一:创建PV。
已有存储卷
单击选择已有存储卷,在目标存储卷右侧操作列单击选择,选择存储卷。
总量
所创建存储卷的容量。
说明所创建存储卷声明的容量不能超过待挂载的存储卷容量。
访问模式
默认为ReadWriteMany,也可选择ReadWriteOnce或ReadOnlyMany。
配置完成后,单击创建。
创建成功后可以在列表中看到创建的存储声明,并且已绑定相应的存储卷。
步骤四:给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