配置NAS共享存储

阿里云文件存储 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控制台,执行以下操作:

  1. 在左侧导航栏,选择文件系统>文件系统列表

  2. 在顶部菜单栏,选择地域。

  3. 找到刚创建的文件系统,然后单击操作列的挂载

    说明

    首次使用NAS一键挂载功能,需要进行NAS一键挂载关联角色授权,请根据对话框中的提示,完成NAS一键挂载服务关联角色授权。更多信息,请参见文件存储NAS服务关联角色

  4. 挂载面板,完成挂载NAS文件系统配置。

    1. 选择挂载点,然后单击下一步

    2. 选择目标ECS实例,然后单击下一步

      请选择与NAS在同一VPC下的ECS实例,当选择不一致时,NAS会提示可能导致网络不通,请注意排查。

      说明
      • 如果您在实例下拉菜单中查询不到新建的ECS实例,请您刷新页面后再次尝试。

      • 该配置仅支持选择一台目标ECS实例,如果您需要多台ECS实例挂载同一文件系统,请参见多台ECS实例批量挂载同一NAS文件系统

    3. 配置挂载到ECS。

      配置项

      说明

      挂载路径

      目标ECS实例上待挂载文件系统的本地路径。

      自动挂载

      默认选中开机自动挂载,当您重启ECS实例时,无需重复挂载操作。

      协议类型

      选择文件系统协议类型。

      • 通用性NAS文件系统支持NFSv3和NFSv4.0。如果您的业务场景不包含多台ECS实例同时编辑同一个NAS文件,建议您选择NFSv3,达到最优性能。

      • 极速型NAS文件系统支持NFSv3。

      NAS目录

      NAS文件系统目录。

      NAS的根目录(/)或任意子目录(例如:/abc)。

      说明

      如果提示目录不存在,您可以选中确认新建目录,在文件系统中新建该目录。同时您还需要配置创建该目录的UID和GID以及POSIX权限,如果不配置,则使用默认值和默认权限直接创建。

      挂载参数

      建议您使用默认挂载参数。更多参数说明,请参见参数说明

  5. 单击完成挂载

    挂载需要大约1~2分钟。当挂载状态为挂载成功时,则表示NAS文件系统已成功挂载至ECS。

    image

    如果挂载状态为挂载失败时,您可以通过排查工具进行排查,详情请参见Linux挂载NFS协议文件系统失败自动检查脚本

    挂载完成后,您还可以连接ECS实例,执行mount -l或者df -h命令,查看挂载参数信息或文件系统容量信息。

验证挂载

  1. 挂载成功后,您可以在ECS上把NAS文件系统当作一个普通的目录来访问和使用,示例如下。

  2. 远程连接ECS实例,执行以下命令,在ECS实例上访问NAS文件系统。

    mkdir /mnt/dir1
    mkdir /mnt/dir2
    touch /mnt/file1
    echo 'some file content' > /mnt/file2
    ls /mnt
  3. 返回如图所示信息,说明成功访问通用容量型NAS NFS文件系统。

    image.png

说明
  • 在文件存储NAS中,需要通过挂载点将文件系统挂载至云服务器ECS。添加更多挂载点、查看挂载点地址的具体操作,请参见管理挂载点

  • 添加挂载点需注意:

    • 挂载点类型设置为专有网络

    • VPC网络和交换机设置为和ACK集群一致的VPC和交换机。

步骤三:配置ACK集群的存储卷(PV)和存储声明(PVC)

创建PV

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择存储 > 存储卷

  3. 存储卷页面,单击右上角的创建

  4. 创建存储卷对话框中配置参数。

    配置项

    说明

    存储卷类型

    支持云盘、NAS、OSS三种云存储类型。本文中选择为NAS

    名称

    创建的数据卷的名称。数据卷名在集群内必须唯一。本例为pv-nas

    总量

    所创建存储卷的容量。注意NAS文件系统本身不限制使用量。此处不是NAS文件系统的使用限额,只是所创建存储卷的容量声明。

    访问模式

    支持ReadWriteManyReadWriteOnce。默认为ReadWriteMany

    是否使用CNFS

    是否使用CNFS功能。开启后,您需要进行以下操作:

    挂载点域名

    您可以通过选择挂载点或者自定义的方式定义集群在NAS文件系统中挂载点的挂载地址。关于如何查看挂载点地址,请参见查看挂载点地址

    显示高级选项

    • 挂载路径:NAS文件系统中的挂载路径。以/为根目录,设定后数据卷将挂载到指定的子目录。

      • 如果NAS根目录下没有此子目录,会默认创建后再挂载。

      • 您可以不填此项,默认挂载到NAS根目录。

      • 极速NAS需要以/share为父目录。

    • 回收策略:默认为Delete,支持Retain

      • Delete:需配合archiveOnDelete一起使用。

        • archiveOnDeletetrue时,删除PVC时,PV和NAS文件只会被重命名,不会被删除。

        • archiveOnDeletefalse时,删除PVC时,PV和NAS文件会被真正删除。

      • Retain:删除PVC时,PV和NAS文件系统不会被删除,需要您手动删除。

      如果数据安全性要求高,推荐使用Retain,以免误删数据。

    • 挂载选项:挂载NAS的可选参数,包括NFS协议版本等参数。

      NFS协议版本号推荐使用v3,且极速类型NAS仅支持v3。关于NFS协议的更多信息,请参见NFS协议

    标签

    为该存储卷添加标签。

  5. 参数配置完成后,单击创建

创建PVC

  1. 在集群管理页左侧导航栏,选择存储 > 存储声明

  2. 存储声明页面,单击右上角的创建

  3. 在弹出的创建存储声明页面中,填写界面参数。

    参数

    说明

    存储声明类型

    支持云盘、NAS、OSS三种云存储类型。 本文中选择NAS

    名称

    创建的存储声明名称在集群内必须唯一。

    分配模式

    选择已有存储卷。

    说明

    若未创建存储卷,您可以设置分配模式创建存储卷,配置创建存储卷参数。更多信息,请参见步骤一:创建PV

    已有存储卷

    单击选择已有存储卷,在目标存储卷右侧操作列单击选择,选择存储卷。

    总量

    所创建存储卷的容量。

    说明

    所创建存储卷声明的容量不能超过待挂载的存储卷容量。

    访问模式

    默认为ReadWriteMany,也可选择ReadWriteOnceReadOnlyMany

  4. 配置完成后,单击创建

    创建成功后可以在列表中看到创建的存储声明,并且已绑定相应的存储卷。

步骤四:给PVC填充数据

因为Kubernetes集群通过PVC访问各种共享数据(也就是本文在步骤一中创建的NAS实例),所以您仅需要给PVC实例对应的NAS实例上填充数据即可。

  1. 使用Workbench登录ACK集群任意一台ECS节点,具体操作请参见登录Linux实例。更多连接ECS实例的方式,请参见ECS远程连接方式概述

  2. 步骤二中,已将NFS文件系统挂载到ECS实例的/mnt目录中。执行以下命令,通过挂载的这个目录为NAS实例创建两个目录tf_data/pytorch_data/,分别存放TF mnistPytorch mnist的训练数据。

    cd /mnt/
    mkdir tf_data/
    mkdir pytorch_data/
  3. 执行以下命令下载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
  4. 执行以下命令下载Pytorch mnist的数据集。

    cd pytorch_data
    git clone https://code.aliyun.com/370272561/mnist-pytorch.git
    mv mnist-pytorch/MNIST ./ && rm -rf mnist-pytorch