You need to enable JavaScript to run this app.
导航

实现 vePFS 与对象存储 TOS 之间数据流动

最近更新时间2023.12.01 10:22:38

首次发布时间2023.11.30 20:47:22

本文介绍如何实现文件存储 vePFS 与对象存储 TOS 之间的数据流动。

适用场景

  • 加载数据集场景(TOS->vePFS):数据集从 TOS 流动到 vePFS,用于数据清洗和 GPU 训练。

  • 训练数据归档场景(vePFS->TOS):GPU 训练的 CheckPoint 数据和训练结果归档到的至对象存储。

前提条件

  • ECS 和 TOS 带宽均满足数据流动需求。

    • 不同规格的 ECS 实例的网络带宽不同,建议您选择网络出入带宽 20Gbps 以上的 ECS 实例。ECS 规格详情,请参见 ECS 规格说明

    • TOS 带宽的约束限制,请参见约束限制

  • 已创建对象存储 Bucket,具体步骤,请参见创建存储桶

  • 已在 ECS 挂载文件存储 vepfs,具体步骤,请参见挂载 vePFS

  • 已在 ECS 安装 tosutil 工具并完成初始化,具体步骤,请参见 安装 tosutil初始化 tosutil

  • 已在 ECS 实例安装 tmux 工具,避免远程连接异常断开,导致数据同步中断。安装命令如下:

    #以 centos 系统为例
    yum install tmux -y
    

    tmux 常用命令如下。

    新建 tmux 窗口,sessioname 是变量,您自定义的会话名称
    # tmux new -s sessioname
    退出 tmux 窗口
    # tmux detach
    查看 tmux 窗口
    # tmux ls
    加载已经创建的 tmux 窗口,sessioname 是 "tmux ls" 查询到的会话名称
    # tmux a -t sessioname
    

数据流动流程

alt

操作步骤

拷贝对象存储文件至 vePFS

本文以 Centos 系统的 ECS 实例为例,介绍如何将对象存储的数据拷贝至 vePFS。

  1. 登录 ECS 实例。

  2. 执行以下命令,切换到 tmux,避免迁移过程中会话断开。

    tmux new -s target1
    
  3. 执行以下命令,将对象存储 bucket 中的数据拷贝至 vePFS。

    ./tosutil cp tos://bucketname/sourcedir /mnt/vepfs/ -r -u -j=XX -p=XX -nfj=XX
    

    主要参数说明如下。

    说明

    • 关于 tosutil 拷贝对象的详细说明,请参见拷贝对象

    • tosutil 支持通过 -j-p 参数调整并发数来优化传输性能,详细建议,请参见拷贝对象

    参数说明
    bucketname对象存储 Bucket 名称。
    sourcedir需要拷贝数据的目录名称。
    -r表示执行批量操作。
    -j批量任务的最大并发数,可以根据业务需求调整。
    -p每个分片任务的最大并发数,可以根据业务需求调整。
    -u增量下载对象存储中数据集,设置该参数后,每次下载时均会对比 TOS 与 vePFS 数据,只下载新增和更新的文件。
    -nfj批量任务的处理普通文件或对象(非分片任务)的最大并发数,仅在批量操作时生效。
    -exclude上传或下载对不包含文件的名称匹配模式,支持 ?* 作为通配符。
    -flat上传或下载对象时不包含相对父目录。
  4. 查看加载数据集结果,示例返回如下。

    返回参数说明如下。

    参数说明
    Succeed count is下载 TOS 数据集成功的文件数量,包含新增和已经存在跳过的文件。
    Failed count is下载 TOS 数据集失败的文件数量。
    Skip count isvePFS 中已经存在跳过的文件数。
    Succeed bytes is下载 TOS 数据集成功的文件容量。
    Task id istosutil 上传的任务 id,根据该 id 可以查询下载成功和失败的文件清单。

    说明

    使用 tosutil 工具批量上传、下载对象存储文件时,任务执行完成后会生成成功和失败的任务清单,默认的存储文件夹为配置文件中的 defaultOutputDir 参数,默认路径/root/.tosutil_output,详细说明,请参见 tosutil 配置文件

将 vePFS 中的数据拷贝至 TOS

本文以 Centos 系统的 ECS 实例为例,介绍如何将 vePFS 中的数据拷贝至对象存储 TOS。

  1. 登录 ECS 实例。

  2. 执行以下命令,切换到 tmux,避免迁移过程中会话断开。

    tmux new -s target1
    
  3. 执行以下命令,将 vePFS 中的数据拷贝至对象存储。

    ./tosutil cp /mnt/vepfs/sourcedir tos://bucketname -r -u -j=XX -p=XX -nfj=XX
    

    主要参数说明如下。

    说明

    • 关于 tosutil 拷贝对象的详细说明,请参见拷贝对象
    • tosutil 支持通过 -j-p 参数调整并发数来优化传输性能,详细建议,请参见拷贝对象
    参数说明
    sourcedirvePFS 待拷贝的目录名称。
    bucketname对象存储目的 Bucket 名称。
    -r表示执行批量操作。
    -j批量任务的最大并发数,可以根据业务需求调整.
    -p每个分片任务的最大并发数,可以根据业务需求调整.

    -u

    增量下载对象存储中数据集,设置该参数后,每次下载时均会对比 TOS 与 vePFS 数据,只下载新增和更新的文件。

    注意

    vePFS 删除的数据不会在 TOS 删除。

    -nfj批量任务的处理普通文件或对象(非分片任务)的最大并发数,仅在批量操作时生效。
    -exclude上传或下载对不包含文件的名称匹配模式,支持 ?* 作为通配符
  4. 查看数据归档结果.

    返回参数说明如下。

    参数说明
    Succeed count is上传 TOS 数据集成功的文件数量,包含新增和已经存在跳过的文件。
    Failed count is上传 TOS 数据集失败的文件数量。
    Skip count isTOS 中已经存在跳过的文件数。
    Succeed bytes is上传 TOS 数据集成功的文件容量。
    Task id istosutil 上传的任务 id,根据该 id 可以查询下载成功和失败的文件清单。

    说明

    使用 tosutil 工具批量上传、下载对象存储文件时,任务执行完成后会生成成功和失败的任务清单,默认的存储文件夹为配置文件中的 defaultOutputDir 参数,默认路径/root/.tosutil_output,详细说明,请参见 tosutil 配置文件