本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文主要介绍闪电立方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等。
说明不支持迁移的属性包括但不限于以上列举的内容,其他未列举的属性行为暂无法确定,以实际迁移完成的内容为准。
准备工作
一、解密并挂载存储池
开机后,存储池处于锁定状态。您可通过初始秘钥进行解密,或添加新秘钥以实现解密。如需获取初始秘钥,请联系阿里云工作人员。
使用初始秘钥对存储池进行解密如下:
输入
crypt open <password>
。
添加新秘钥并解密存储池如下:
输入
crypt addsecret <old_password> <new_password>
。如需删除初始秘钥,请执行
crypt deletesecret <old_password>
。使用新秘钥打开存储池,输入
crypt open <new_password>
。
建议设置新秘钥时,包含大小写字母、数字和特殊符号,并确保长度不少于8位,例如:Hello@12345!。
二、初始化mgwserver
当前闪电立方中仅支持单个Bucket,如需创建多个Bucket,请联系阿里云工作人员。
创建用于本次迁移的Bucket、AK和SK。
确认mgwserver服务状态是否正常,输入
mgwserver status
,如状态异常时,请联系阿里云工作人员。创建Bucket,并设置AK和SK,输入
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文件。
配置任务文件
执行命令
cdmgwclient && cd conf
切换至指定目录下。请确认需要创建的任务数量,并根据该数量决定复制多少份
demo-job.properties
文件。每个任务对应一份demo-job.properties
文件。说明注意请将demo-job.properties文件做好区分,例如:job1.properties、job2.properties。
如果涉及整个目录的数据迁移,则只需创建一个任务。
如果仅迁移部分目录的数据,则每个目录应单独创建一个任务。以下操作将以文件job1.properties为例进行说明。
请打开其中一个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:为初始化mgwserver的Bucket名称。
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
进入该目录后完成。
查看任务状态的方法,具体如下:
执行
bash console.sh status <job_name>
查看任务状态。(请替换为实际任务名)。如JobStatus为running状态,表示任务还在迁移中,尚未迁移结束,并可查看当前迁移进度,如下图所示:
如JobStatus为failed状态,代表有文件迁移失败,您可自行根据日志排查失败原因或联系闪电立方工作人员协助排查。
如JobStatus为succeed状态:代表全部文件迁移完成,且无迁移失败文件,可查看已迁移完成的总数据量和总文件数,如下图所示:
返回参数说明如下:
第一个Transferred: 已扫描到数据量/已迁移成功数据量,按数据量迁移百分比,平均迁移速度。
第二个Transferred:已扫描到文件数/已迁移成功文件数,按文件数迁移百分比。
Checks:跳过文件数,仅存在跳过文件时展示,无跳过文件则不展示,如首次迁移后有部分失败文件需重新迁移,首次任务迁移成功文件会计入跳过文件数中。
Errors:失败文件数,仅存在迁移失败文件时展示,无失败文件则不展示。
Elapsed time:总迁移时长。
ScanComplete:是否扫描完成(true 表示扫描完成,false 表示未扫描完成)。
如果源数据为大平铺目录,则扫描所需时间将较长,进度显示也会相对缓慢。
删除任务
如您发现启动了错误的任务,您可以通过以下命令删除指定任务及其对应的日志目录:
执行
bash console.sh delete <job_name>
删除指定任务。(请替换为实际任务名称,已完成迁移的文件将不会被删除)。
迁移后续操作
请注意,以下操作均在/home/aliyuncs/log/mgwclient/job_name
目录下完成。
当迁移任务结束后,如任务的状态为failed,您可自行根据日志排查失败原因或联系闪电立方工作人员协助排查。
如果迁移任务状态为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_dir为true有效,每个目录上传成功都会打印一条日志。文件记录如下信息:第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列:文件路径名称。