复制本地数据

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文主要介绍闪电立方III型如何创建和执行数据迁移任务,以及如何查看任务日志,以实现从数据源端读取数据并将其存储至闪电立方中。

注意事项

使用闪电立方迁移数据时需要注意以下事项:

  • 填写源路径待迁移目录请使用绝对路径,必须以正斜线(/)开头和结尾,不支持环境变量和特殊字符,并且需确保待迁移目录存在且正确有效。

  • 闪电立方迁移时会占用源路径的资源,可能会影响业务正常运行。若您的业务比较重要,请提前做好评估后对源端设置限速,或在空闲时间启动迁移任务。

  • 若您源路径和目的OSS中有相同文件名的文件,迁移时默认会采用全部覆盖的方式,源路径中的文件会覆盖目的OSS中的文件,若两个文件内容不同,请您务必更改文件名或做好备份。

  • 闪电立方默认会保留源文件的最后修改时间属性,请您注意,如果目的Bucket设置了生命周期规则,且迁移后文件处于该生命周期规则生效的时间范围内,则该文件可能会在规则生效时被删除或转为指定的归档类型。

    • 如无需要保留最后修改时间,可联系阿里云工作人员进行设置,并请您确认已充分了解不保留最后修改时间所对应的风险。

迁移限制说明

  • 若您源路径中有字符设备文件或块设备文件、Socket文件和管道文件,此类数据均不会被迁移。

  • 若您迁移的源路径中有软链接,数据迁移时,仅transfer_symlink设置为true时,会直接迁移软链接,否则将不迁移。关于软链接的详细信息,请参见软链接

  • 若您源路径存在硬链接关系,迁移后会变成普通文件。

  • 不支持文件父目录属性的迁移。

  • SUID、SGID、SBID等文件权限不支持迁移。

  • 迁移目录+文件名总长度不得超过1024个字节,每层目录名称长度不得超过200个字节,且目录下的文件名称长度不得超过255个字节,超过该长度则不迁移。

  • 支持迁移的属性:Permissions -> X-Oss-Meta-Perms(OSS)、Uid:Gid -> X-Oss-Meta-Owner(OSS)、mtime -> X-Oss-Meta-Mtime(OSS)、atime -> X-Oss-Meta-Atime(OSS)、ctime -> X-Oss-Meta-Ctime(OSS)。

    说明
    • Permissions:包含读、写、执行等9个权限。

    • Uid:Gid:用户ID:用户所属分组ID,中间以半角冒号(:)做分隔符。

  • 不支持迁移的属性(包括但不限于):AccessTime、Attr、Acl等。

    说明

    不支持迁移的属性包括但不限于以上列举的内容,其他未列举的属性行为暂无法确定,以实际迁移完成的内容为准。

准备工作

一、解密并挂载存储池

开机后,存储池处于锁定状态。您可通过初始秘钥进行解密,或添加新秘钥以实现解密。如需获取初始秘钥,请联系阿里云工作人员。

  1. 使用初始秘钥对存储池进行解密如下:

    • 输入crypt open <password>

  2. 添加新秘钥并解密存储池如下:

    • 输入crypt addsecret <old_password> <new_password>

    • 如需删除初始秘钥,请执行crypt deletesecret <old_password>

    • 使用新秘钥打开存储池,输入crypt open <new_password>

说明

建议设置新秘钥时,包含大小写字母、数字和特殊符号,并确保长度不少于8位,例如:Hello@12345!。

二、初始化mgwserver

重要

当前闪电立方中仅支持单个Bucket,如需创建多个Bucket,请联系阿里云工作人员。

创建用于本次迁移的Bucket、AKSK。

  1. 确认mgwserver服务状态是否正常,输入mgwserver status ,如状态异常时,请联系阿里云工作人员。

  2. 创建Bucket,并设置AKSK,输入mgwserver create-bucket <Bucket> <AK> <SK>

    说明
    • Bucket:Bucket名称,建议与云上OSS Bucket名称保持一致,例如 xxx-xxx-data。

    • AK:用户名 ,格式为英文小写字母、数字和特殊字符短划线(-)和下划线(_),例如 aliyuncs@2024-xx-xx。

    • SK:密码,格式为英文小写字母、数字和特殊字符短划线(-)和下划线(_),例如 xxxxxxxxx。

创建迁移任务

重要

任务需明确指定到目录层级。如果需要迁移源端的所有数据,则只需创建一个迁移任务。如果仅迁移源端N个目录下的数据,须创建N个任务。请确认所需创建的任务数量,并根据任务数量决定需要复制的job.cfg文件数量,每个任务对应一个job.cfg文件。

配置任务文件

  1. 执行命令 cdmgwclient && cd conf 切换至指定目录下。

  2. 请确认需要创建的任务数量,并根据该数量决定复制多少份demo-job.properties文件。每个任务对应一份demo-job.properties文件

    说明
    • 注意请将demo-job.properties文件做好区分,例如:job1.propertiesjob2.properties

    • 如果涉及整个目录的数据迁移,则只需创建一个任务。

    • 如果仅迁移部分目录的数据,则每个目录应单独创建一个任务。以下操作将以文件job1.properties为例进行说明。

  3. 请打开其中一个properties文件,例如 job1.properties,并配置以下信息:

    参数名

    是否必选

    举例值

    job_name

    任务名,例如:example_job。

    src_path

    填写源路径,注意格式要求必须以正斜线(/)开头和以正斜线(/)结尾。

    例如:源路径为/mnt/nas/example_dir/,此路径下有文件example.jpg,设置目的路径为mgw:example_bucket/dest/,则迁移后文件example.jpg的完整路径为mgw:example_bucket/dest/example.jpg

    dest_path

    目的闪电立方的存储路径,格式为mgw:BucketName/prefix/,例如mgw:example_bucket/dest/

    • BucketName:为初始化mgwserverBucket名称。

    • prefix:指定Bucket下的前缀,格式要求必须以正斜线(/)结尾。

      • 指定前缀:例如源路径为/mnt/nas/example_dir/,此路径下有文件example.jpg,设置目的Bucket前缀为example/dest/,则迁移后文件example.jpg的完整路径为mgw:example_bucket/example/dest/example.jpg

      • 不指定前缀:例如源路径为/mnt/nas/example_dir/,此路径下有文件example.jpg,不设置目的Bucket的前缀,则迁移后文件的完整路径为mgw:example_bucket/example.jpg

    transfer_dir

    是否迁移目录。设置为true表示启用迁移,设置为false表示禁用。

    • 启用时,源路径中扫描到的所有目录自身也会被加入待迁移队列,同时会被统计到迁移任务的日志文件中。会在目的OSS中创建对应的'/'结尾的空对象,并将源目录(支持迁移)的属性设置到目的对象的UserMeta中。

    • 禁用时,源路径中扫描到的所有目录自身将会被忽略,不会被统计到迁移任务日志文件中。不会在目的OSS创建对应的'/'结尾的空对象。

    transfer_symlink

    是否迁移软连接,设置为true表示启用迁移,设置为false表示禁用。

    • 启用时,源路径中所有软链接类型的文件自身也会被加入待迁移队列,同时会被统计到迁移任务的【文件数】、【存储量】字段。会在目的OSS中创建对应的Symlink对象,并将源软链接文件(支持迁移)的属性设置到Symlink对象的UserMeta中。关于Symlink对象的Target属性值,先(以此软链接所在目录为基准)将Target属性解析成最短绝对路径(字符长度最短的等效路径,AbsTarget),然后执行字符串替换操作,将AbsTarget中的src_path(若匹配)替换成dest_path中的prefix,并将替换后的结果值设置到目的OSS Symlink对象的Target属性上。

      说明

      示例:假设迁移任务配置的src_path="/mnt/nas/example_dir/",

      dest_path中的prefix="example/dest/",/mnt/nas/example_dir/links/a.lnk是源路径下的一个软链接类型文件,假设其Target属性:

      • 为"../data/./a.txt"。则解析后的最短绝对路径为"/mnt/nas/example_dir/data/a.txt"。则替换后的最终Target结果值为"example/dest/data/a.txt"。

      • 为"/mnt/nas/example_dir/verbose/../data/./a.txt"。则解析后的最短绝对路径为"/mnt/nas/example_dir/data/a.txt",替换后的最终Target结果值为"example/dest/data/a.txt"。

    • 禁用时,源路径中所有软链接类型的文件将会被忽略,不会被统计到迁移任务的【文件数】、【存储量】字段。

      重要

      任何情况下,都不会额外迁移源地址中软链接文件所指向的目标文件或目录(除非该目标文件或目录也在本次迁移范围内)

    transfers

    每个任务的并发数,默认为128,若为大文件迁移,推荐保持默认值,如为小文件迁移推荐设置为256,最大值256。

    log_level

    日志等级,默认为INFO级别,如需更详细的日志可设置为DEBUG级别。

启动任务

重要

请注意,请执行cdmgwclient进入该目录进行以下操作。

执行bash console.sh start conf/properties文件名启动任务,例如:bash console.sh start conf/job1.properties

查看任务状态

重要

请注意使用bash console.sh相关的命令,均在执行cdmgwclient进入该目录后完成。

查看任务状态的方法,具体如下:

  1. 执行bash console.sh status <job_name>查看任务状态。(请替换为实际任务名)。

    1. JobStatusrunning状态,表示任务还在迁移中,尚未迁移结束,并可查看当前迁移进度,如下图所示:image

    2. JobStatusfailed状态,代表有文件迁移失败,您可自行根据日志排查失败原因或联系闪电立方工作人员协助排查image

    3. JobStatussucceed状态:代表全部文件迁移完成,且无迁移失败文件,可查看已迁移完成的总数据量和总文件数,如下图所示:image

说明

返回参数说明如下:

  • 第一个Transferred: 已扫描到数据量/已迁移成功数据量,按数据量迁移百分比,平均迁移速度。

  • 第二个Transferred:已扫描到文件数/已迁移成功文件数,按文件数迁移百分比。

  • Checks:跳过文件数,仅存在跳过文件时展示,无跳过文件则不展示,如首次迁移后有部分失败文件需重新迁移,首次任务迁移成功文件会计入跳过文件数中。

  • Errors:失败文件数,仅存在迁移失败文件时展示,无失败文件则不展示。

  • Elapsed time:总迁移时长。

  • ScanComplete:是否扫描完成(true 表示扫描完成,false 表示未扫描完成)。

警告

如果源数据为大平铺目录,则扫描所需时间将较长,进度显示也会相对缓慢。

删除任务

如您发现启动了错误的任务,您可以通过以下命令删除指定任务及其对应的日志目录:

  • 执行bash console.sh delete <job_name>删除指定任务。(请替换为实际任务名称,已完成迁移的文件将不会被删除)。

迁移后续操作

重要

请注意,以下操作均在/home/aliyuncs/log/mgwclient/job_name目录下完成。

  1. 当迁移任务结束后,如任务的状态为failed,您可自行根据日志排查失败原因或联系闪电立方工作人员协助排查。

  2. 如果迁移任务状态为succeed,您可根据CRC64列表比对源端文件做校验,请您务必做好数据校验。

查看日志

重要

以下路径或文件名中包含的job_name请替换为实际任务名。

/home/aliyuncs/log/mgwclient/job_name 目录下,会存放一些日志用于记录文件的上传状态以及任务的状态。

日志名称

日志文件说明

job_name-status.log

任务迁移进度文件。

job_name-folder.log

迁移的目录列表。

job_name-transfers-error.log

迁移失败文件列表。

job_name-crc64-succeed.log

迁移成功文件CRC64列表。

job_name-crc64-error.log

迁移中校验文件CRC64失败列表。

job_name-crc64-skipped.log

迁移中跳过文件列表。

重要

迁移失败分两种情况,一种为迁移中失败,一种为CRC64校验失败,两种合并后为总失败文件数。

任务进度日志

  • job_name-status.log该文件用于简单记录任务迁移进度信息。

    • 第一个Transferred: 已扫描到数据量/已迁移成功数据量,按数据量迁移百分比,平均迁移速度。

    • 第二个Transferred:已扫描到文件数/已迁移成功文件数,按文件数迁移百分比。

    • Checks:跳过文件数,仅存在跳过文件时展示,无跳过文件则不展示,如首次迁移后有部分失败文件需重新迁移,首次任务迁移成功文件会计入跳过文件数中。

    • Errors:失败文件数,仅存在迁移失败文件时展示,无失败文件则不展示。

    • Elapsed time:总迁移时长。

    • ScanComplete:是否扫描完成(true 表示扫描完成,false 表示未扫描完成)。

迁移目录日志

  • job_name-folder.log 记录上传目录的日志,仅在任务配置文件设置transfer_dirtrue有效,每个目录上传成功都会打印一条日志。文件记录如下信息:

    • 1列:目录路径名称。

迁移失败日志

  • job_name-transfers-error.log 记录任务迁移失败的文件,日志为实时更新,直到所有任务都结束为止。文件记录如下信息:

    • 1列:文件路径名称。

    • 2列:迁移失败信息。

迁移成功CRC64列表日志

  • job_name-crc64-succeed.log 记录任务迁移成功CRC64列表文件,日志为实时更新,直到所有任务都结束为止。文件记录如下信息:

    • 1列:文件CRC64值。

    • 2列:文件路径名称。

迁移失败CRC64列表日志

  • job_name-crc64-error.log 记录任务迁移失败CRC64列表文件,日志为实时更新,直到所有任务都结束为止。文件记录如下信息:

    • 1列:文件CRC64值。

    • 2列:文件路径名称。

迁移跳过日志

  • job_name-crc64-skipped.log 记录任务中跳过文件日志,日志为实时更新,直到所有任务都结束为止。文件记录如下信息:

    • 1列:文件路径名称。