存储数据同步工具 ADS | 大装置帮助中心
跳到主要内容

存储数据同步工具 ADS

产品介绍

SenseCore 存储数据同步工具 ADS(SenseCore AI DataSync Service)是一款针对大装置存储系统提供的统一、高效、便捷的数据同步工具,支持多场景下本地-大装置存储、大装置不同存储系统之间、以及第三方云-大装置存储的数据同步功能,配合大装置AI存储系统提供数据同步及其管理功能。

产品功能

1.web端和cli工具同时具备

  • ADS支持用户通过web或cli快速进行数据传输。

2.支持本地和AI云存储之间的数据传输

  • ADS支持用户本地到AI云存储之间的快速数据传输。

3.支持AI云存储之间的数据传输

  • 针对AI场景中对AI存储的不同需求,支持AI云存储之间的数据同步。

4.支持第三方云和AI云存储之间的数据传输

  • ADS支持用户从第三方云到AI云存储之间的数据同步,实现快速上云。

5.支持离线同步(暂未上线)

  • 提供完善的数据同步服务,支持离线寄送。

应用场景

1.数据上云

  • 用户购买sensecore AI云存储后,用户自身在原有的机器或数据中心中,有大量的已存在的数据,需要将大量已有的数据迁移到sensecore AI存储(文件/对象)上,由此需要操作便捷,使用方便的数据同步工具,同时,数据同步任务在此场景下一般任务量较大,数据多,用户需要查看任务状态,可以监控任务状态。
  • 用户购买sensecore AI云存储后,用户自身在原有的机器或数据中心中,或持续以一定的频次产生数据,如:每月产生10TB的数据,这些每个月产生的数据需要定期迁移到sensecore AI存储(文件/对象)上,数据同步任务在此场景下一般任务量偏多,用户需要查看和管理多任务及任务状态。
  • 用户购买sensecore AI云存储后,用户原来在其他云厂商中已存在大量数据,需要将已有数据从其他云厂商中同步到sensecore AI存储(文件/对象)中。

2.AI训练场景

  • 训练场景中,研究员使用文件存储进行模型训练,而大量的图片、音视频等数据存储在对象存储上,需要频繁地将对象存储上的数据同步到文件存储中进行模型训练。

计费说明

1.计费方式

存储数据同步工具本身不收取费用。 但使用过程会产生对象存储的公网流出费用和请求费用,具体收费以对象存储为准。

2.使用规则

  • 开通即可使用

快速入门

cli工具

1.下载工具包

注意:ads-cli 1.7.2版本存在bug,在sync增量更新目标文件时,偶发出现不会更新目标文件的情况。 目前研发已修复ads-cli 这个bug,发布了1.9.0版本。请大家更新使用新版本的 ads-cli。

下载最新版本的ADS工具包,并添加执行权限,即可

# 以linux为例,将ads-cli下载到用户自己的home目录/home/test目录并赋予可执行权限
cd /home/test
wget https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/ads-cli/release/v1.9.0/ads-cli
chmod +x ads-cli
# 使用的时候,可以使用绝对路径进行执行,例如使用以下命令查看版本号:
/home/test/ads-cli -V

2.密钥使用说明

ak/sk设置方式:

直接将ak/sk写在uri中,以冒号分隔: s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix

  • 如果将ak/sk使用在uri中,则可以归纳为公式:s3://ak:sk@bucketname.ip/path
  • 如果没有将ak/sk在uri中,则可以归纳为公式:s3://bucketname.ip/path
sftp的密码设置方式有以下三种:
  • 免密登录:设置私钥路径环境变量 export SSH_PRIVATE_KEY_PATH="/home/user/.ssh/id_rsa"
  • 密码登录:直接写在uri中 , 推荐写在脚本中使用 user:pass@ip:path
  • 密码登录:手动输入 user@ip:path

3.基本用法

命令格式
ads-cli [global options] command SRC DST

即把SRC同步到DST,既可以同步目录,也可以同步文件。

其中:

  • SRC代表数据源地址及路径
  • DST代表目标地址及路径
  • command包含synccopy(缩写cp)两个,sync支持增量同步,copy(缩写cp)支持全量同步。
  • [global options]代表可选的同步选项,详情参考global options参考。

地址格式均为[NAME://][ACCESS_KEY:SECRET_KEY@]BUCKET[.ENDPOINT][/PREFIX]

其中:

  • NAME是存储类型,现在支持s3osssftp三种类型。
  • ACCESS_KEYSECRET_KEY是对象存储的 API 访问密钥,如果包含了特殊字符,则需要手动转义并替换,比如/需要被替换为其转义符%2F
  • BUCKET[.ENDPOINT]是对象存储的访问地址
  • PREFIX是可选的,限定要同步的目录名前缀。
  • 不支持:[NAME://][ACCESS_KEY:SECRET_KEY@][ENDPOINT]/BUCKET/[/PREFIX] ,例如:s3://s3.<region>.amazonaws.com.cn/bucket[/PREFIX]

注: 当前对于ads-cli的sync的设计(相同文件名,相同大小的前提下,比较时间戳)

以下是一个 AOSS 对象存储的地址范例:

# aoss内网地址
s3://ak:sk@mybucket.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix
# aoss公网地址
s3://ak:sk@mybucket.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix

4.快速开始

afs和aoss互传

必须在sensecore内网机器,才能访问afs,此时访问aoss建议使用内网地址aoss-internal.cn-sh-01.sensecoreapi-oss.cn

# 从afs全量同步到aoss
ads-cli cp ./srcSync/ s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix/
# 从aoss全量同步到afs
ads-cli cp s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./dstSync/

# 从afs增量同步到aoss
ads-cli sync ./srcSync/ s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix/
# 从aoss增量同步到afs
ads-cli sync s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./dstSync/
从阿里云oss传输数据到aoss

如果在外网机器上运行ads-cli,此时需要访问aoss的公网地址aoss-sh-01.sensecoreapi-oss.cn,此时必须加上--https参数。

# 从oss全量同步到aoss
ads-cli --https cp oss://ak:sk@bucket1.oss-cn-beijing.aliyuncs.com/prefix/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/

# 从oss增量同步到aoss
ads-cli --https sync oss://ak:sk@bucket1.oss-cn-beijing.aliyuncs.com/prefix/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/

如果在sensecore内网机器上运行ads-cli,此时访问aoss建议使用内网地址aoss-internal.cn-sh-01.sensecoreapi-oss.cn

# 从oss全量同步到aoss
ads-cli cp oss://ak:sk@bucket1.oss-cn-beijing.aliyuncs.com/prefix/ s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix/

# 从oss增量同步到aoss
ads-cli sync oss://ak:sk@bucket1.oss-cn-beijing.aliyuncs.com/prefix/ s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/prefix/
从用户本地机器到aoss、afs

需要访问aoss的公网地址aoss-sh-01.sensecoreapi-oss.cn,此时必须加上--https参数。

# 传输单个文件
ads-cli --https cp ./one_file.txt s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/one_file.txt

# 传输文件夹
ads-cli --https cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/

# 传输到afs(数据在sensecore机器上)
ads-cli cp ./srclocal/ ./dstSync/

# 传输到afs(数据在用户自己的机器上)(ip从购买的裸金属或云开发机处获得)
scp ./srclocal/ username@ip:/dstSync/
从用户本地机器到minio

上传到minio的路径格式与其他的不同,格式为:minio://[ACCESS_KEY:SECRET_KEY[:TOKEN]@]ENDPOINT/BUCKET[/PREFIX]

上传到minio的地址范例:

# 从本地上传到minio
ads-cli cp ~/test_files/1/ minio://ak:sk@IP:PORT/mybucket/

5.copy, sync, pcopy引擎推荐使用场景:

[ 源端数据集目录称为S, 目的端数据集目录称为D ] • cp引擎适用场景: a. D是空目录 b. S数据量小 && D数据量大 (无论D中是否含有S的子集, 该场景都适合cp) c. S数据量较大/大 && D数据量大 && D中不含有S中任何数据(即S是首次写入D) • sync引擎适用场景: a. S数据量较大/大 && D数据量大 && D含有S的子集ss && ss在S中占比较大/大sync场景可以简单理解为是对D的大部分数据进行更新操作. • pcopy: a. 只支持!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~ 组成的对象 进度条含义说明: 进度条含义 530:当前发现的文件数目(list出来的文件数) 2:sync 引擎中源端和目的端相同的文件数目 100%: 当前上传进度(由于sensesync是边list边传,所以是动态变化的) 0.0%: 每秒上传文件数目 0.0%: 每秒上传文件大小

用户指南

存储数据同步工具主要包括两大块:web使用和cli命令行使用

cli工具

a. global options参考

命令内容及配置参数缩写命令说明
--start KEY-s KEY同步的第一个对象名
--end KEY-e KEY同步的最后一个对象名
--threads-p value并发线程数 (默认:10)
--dryrun/不拷贝文件 (默认:false)
--delete-src--deleteSrc同步后删除源地址的对象 (默认:false)
--delete-dst--deleteDst删除目标地址下的不相关对象 (默认:false)
--exclude PATTERN/排除匹配PATTERN的 Key
--include PATTERN/不排除匹配PATTERN的 Key
--bwlimit value/限制最大带宽;单位为Mbps(0 表示不限制) (默认:0)
--https/使用 HTTPS (默认:false) 使用 HTTPS (默认:false);推荐:内网使用https(去掉--https即可)、外网使用http
--verbose-v将日志level设置为VERBOSE
--quiet -q将日志level设置为ERROR
--help-h查看ads-cli的相关使用说明
--version-V查看ads-cli的当前版本
--exclude-dir PATTERN/排除匹配PATTERN的多个目录
--recordName value-rd跳过软链接源目录的迁移,并记录到[value]
--include-dir PATTERN/匹配PATTERN的多个目录

a.全量迁移使用示例

  • AFS 到 AOSS 的数据同步
  1. 复制文件 ads-cli --https cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  2. 设置日志级别为 DEBUG ads-cli --https -v cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  3. 设置日志级别为 ERROR ads-cli --https -q cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  4. 模拟复制(list 查看文件数目和大小) ads-cli --https --dryrun --noperms cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  5. 开启https模式 ads-cli --https cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  6. 复制过程中过滤掉关键字 ‘abcd123’ ads-cli --https --exclude="abcd123" cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  7. 设置线程数 ads-cli --https --threads=50 cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  8. 删除AFS文件(rm) ads-cli --https --dryrun --deleteSrc --noperms cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  9. 拷贝后删除源端文件(mv) ads-cli --https --deleteSrc cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  10. 设置http建立连接的时间(单位:s) ads-cli --https --connTimeout 120 cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  11. 设置http连接的时间(单位:s) ads-cli --https --timeout 120 cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  12. 目的端AOSS匿名 ads-cli --https --anonymous 1 cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn:9000/
  13. 查看目录统计信息(max/min/average) ads-cli --https --dryrun --noperms cp --info ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn:9000/
  14. 删除AFS文件(rm,只删除不copy) ads-cli --https --dryrun --deleteSrc cp ./srcSync/ s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/
  15. 删除AOSS文件(rm,只删除不copy) ads-cli --https --dryrun --deleteSrc cp s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./dstSync/

b.增量迁移使用示例

  • AOSS 到 AFS 的数据同步
  1. 复制文件 ads-cli --https sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  2. 设置日志级别为 DEBUG ads-cli --https -v sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  3. 设置日志级别为 ERROR ads-cli --https -q sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  4. 模拟复制(list 查看文件数目和大小) ads-cli --https --dryrun sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  5. 开启https模式 ads-cli --https sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  6. 复制过程中过滤掉关键字‘abcd123’ ads-cli --https --exclude="abcd123" sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  7. 设置线程数 ads-cli --https --threads=50 sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  8. 设置带宽上限, 单位Mb/s ads-cli --https --bwlimit=2 sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  9. 二次复制后删除源端数据 (见测试说明) ads-cli --https --deleteSrc sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  10. 希望针对某一字典序范围进行同步, 例子中将会上传对象名属于闭合区间[aa, zz]字典序范围的对象,注意:–start, --end是针对对象名而言, 并且查找范围也是整个源端目录 ads-cli --https sync --start=aa --end==ff s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  11. 设置http建立连接的时间(单位:s) ads-cli --https --conntimeout 120 sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  12. 设置http连接的时间(单位:s) ads-cli --https --timeout 120 sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/
  13. 源端AOSS匿名 ads-cli --https --anonymous 0 sync s3://ak:sk@bucket1.aoss.cn-sh-01.sensecoreapi-oss.cn/prefix/ ./srcSync/

c.AOSS挂载成文件夹Mount命令使用

本功能只适用于裸金属产品操作,不支持容器产品mount。
支持裸金属通过mount命令挂载到AOSS上,AOSS可作为一个目录(类似文件存储)挂载,用户使用时直接在裸金属节点上以访问文件系统(文件夹)的方式即可访问对象存储上的数据。成功挂载后,读写卸载等操作参照linux命令。

命令行示例:

   ads-cli mount 【AOSS路径】 【挂载目的路径】
ads-cli mount s3://[ACCESS_KEY:SECRET_KEY@]BUCKET[.ENDPOINT][/PREFIX] [MOUNT_POINT]

其中:

  • s3://[ACCESS_KEY:SECRET_KEY@]BUCKET[.ENDPOINT][/PREFIX] 为需要挂载到计算节点的AOSS的路径
    • [ACCESS_KEY:SECRET_KEY@]为用户的AK和SK
    • BUCKET为用户的桶名称
    • [.ENDPOINT]为用户AOSS的内网地址
    • [/PREFIX]为用户挂载的桶内具体的路径
  • [MOUNT_POINT]为挂载目的路径

使用示例:

   ads-cli mount  s3://ak:sk@bucket.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/my_path  /localfolder

d.支持从第三方云传输到AOSS和AFS

以腾讯云COS为例,介绍如何从第三方云传输到AOSS/AFS: 假设用户的sensecore内网机器执行,且能访问AOSS/AFS,想要将COS的数据增量同步到AOSS/AFS。

第三方云到AOSS
# 从cos增量同步到aoss
ads-cli sync cos://ak:sk@bucket1.ap-beijing.myqcloud.com/prefix/ s3://ak:sk@bucket1.aoss-internal.cn-sh-01.sensecoreapi-cn/prefix/
第三方云到AFS
# 从cos增量同步到afs
ads-cli sync cos://ak:sk@bucket1.ap-beijing.myqcloud.com/prefix/ ./dstSync/

现在支持如下第三方云:(仅支持第三方云对象存储->SenseCore的传输)

第三方对象存储NAME值
阿里云OSSoss
腾讯云COScos
百度云BOSbos
金山云KS3ks3
Amazon国内版S3s3
华为云OBSobs
七牛云Kodoqiniu
UCloud US3ufile

使用时,只需将地址格式[NAME://][ACCESS_KEY:SECRET_KEY@]BUCKET[.ENDPOINT][/PREFIX]中的NAME修改为对应的NAME值即可,例如:第三方云是腾讯云COS,则地址为 cos://ak:sk@bucket.endpoint/prefix/

e.支持跨区afs-afs传输

前提:两个可用区之间的afs传输时,需要每个可用区有计算节点挂载文件存储到本地目录,从而实现两个计算节点的本地目录的传输。
比如:A可用区的A计算节点挂载A文件存储空间到本地目录/home/Makefile,B可用区的B计算节点挂载B文件存储空间到本地目录/home/,从而实现A计算节点的本地目录/home/Makefile与B计算节点的本地目录/home传输. ADS cli工具安装在A可用区上的A计算节点的命令行演示:

 ./ads-cli cp /home/Makefile   root@12.18.30.11:/home/

web工具使用

  1. 找到数据同步工具点击进入

ads-1

注:若使用者身份为租户,首次使用需要先开通服务;若使用者身份为用户,首次使用需要先向租户管理员申请权限,若租户管理员暂未开通,则需要租户先开通服务再授权用户。

  1. 点击【创建数据同步任务】,目前支持AI对象存储和AI文件存储之间的互相传输,AI对象存储到AI对象存储、AI文件存储到AI文件存储的传输,以及从第三方云到AI文件存储、第三方云到AI对象存储之间的传输(详见4.第三方云传输到AOSS/AFS)

ads-1

  1. 填写数据同步详细信息

ads-1

  1. 第三方云传输到AOSS/AFS
  • 点击【创建数据同步任务】
  • 任务类型选择【第三方云->AI对象存储】或【第三方云->AI文件存储】
  • 选择第三方云的名称
  • 填写第三方云域名,例如:oss-cn-beijing.aliyuncs.com (具体查找第三方云的外网访问地址)
  • SecretKey和SecretKey输入用于迁移的云API密钥。推荐您为迁移服务新建密钥,迁移完成后删除该密钥。
  • 【第三方数据存储具体路径】,若要传输整个桶,填写【桶名称/】,无需填写Prefix;若迁移部分数据,格式要求必须以正斜线(/)结尾,例如 folder1/abc/sss/

ads-1

  1. 关闭服务
    支持您将开通了的ADS服务进行关闭,停用数据同步工具服务会清空所有进行中的任务、历史任务,并会删除所有相关资源。

数据迁移工具正则表达式匹配详解

ads支持标正则的范围是:

命令范围
--include需要包含的文件(对象)
--exclude需要排除的文件(对象)

该目录树是进行迁移操作的源目录:

ads-1

--include 的例子

迁移含有base关键字的对象:

--include "base"

结果:

ads-1

迁移以base关键字为前缀的对象:

--include  "^base"

结果:

ads-1

迁移仅含base关键字的对象:

--include "^base$"

结果:

ads-1

迁移以关键字 1结尾的对象:

--include "1$"

结果:

ads-1

--exclude的例子:

排除含有base关键字的对象:

--exclude "base"

结果:

ads-1

排除以base关键字为前缀的对象:

--exclude "^base"

结果:

ads-1

排除仅含base关键字的对象:

--exclude ”^base$“

结果:

ads-1

排除以关键字1结尾的对象:

--exclude "1$"

结果:

ads-1

##附性能测试参考
同可用区内,文件到对象、对象到对象、对象到文件、文件到文件场景的性能测试
考虑到 tech 环境性能和复用文件存储性能测试脚本等因素,每次预埋数据量固定为 3264GB(3.1875TB)

常见问题

  1. 什么是存储数据同步工具ADS?

    存储数据同步工具ADS是一个数据迁移工具,用户可以使用ADS方便快捷地进行数据同步和迁移。

  2. 数据迁移任务的数量是否有上限?

    没有上限。

  3. 为什么我没有成功地传输一个/一组文件?例如:出现 0 Scanned

    A:请确认—-include的做法,详细参照ADS帮助文档【数据迁移工具正则表达式匹配详解】部分。