【文件存储NAS】数据迁移工具介绍及使用指南
一、简介
文件存储NAS是面向阿里云ECS、HPC、Docker等计算节点的共享文件存储服务,具备简单易用、多共享、高性能、安全等特性,目前支持NFSv3和NFSv4协议。NAS的推出极大丰富了阿里云存储产品线,为用户存储上云提供了更加多样的选择。
与其他存储产品(主要是对象存储和块存储)及自建NAS相比,阿里云文件存储NAS具备鲜明的特点:
| 文件存储NAS | 对象存储(如OSS、七牛、S3等) | 块存储(如阿里云磁盘、AWS EBS等) | 自己搭建NAS | |
| 标准协议(标准NFS协议、标准NFS客户端、兼容POSIX接口) | YES | 通过ossfs等工具提供有限支持 | YES |
YES |
| 多共享(同一文件系统/名字空间被多个计算节点同时读写访问) | YES | YES |
不支持共享 | YES |
| 高性能(高吞吐、低延迟、水平弹性扩展) | YES | 延迟较高,随机读写性能较差 | 吞吐无法水平扩展 | 性能没有保证,无法水平扩展 |
| 高可靠、高可用、安全 | YES | YES |
YES | 无法保证 |
(1)支持的数据源:本地磁盘、OSS、七牛、百度对象存储、金山对象存储、又拍云、亚马逊 s3、腾讯云 cos、HTTP链接;
(2)支持存量数据同步(允许指定只同步某个时间点之后的文件);
(3)支持增量数据自动同步;
(4)支持断点续传;
(5)支持并行数据下载和上传。
二、使用方法
1. 运行环境要求
- 需要在能够挂载目标NAS文件系统的ECS虚拟机上运行该迁移工具。能否挂载NAS文件系统及如何挂载详见:点击查看
- 需要在 Java JDK 1.7 以上的环境中运行nasimport迁移工具,建议使用 Oracle 版本 JDK:点击查看
- 程序运行前请检查进程允许打开的文件数的配置(ulimit -n 查看),如果小于10240,需要作相应修改。
2. 下载工具及配置
2.1 首先,在您本地服务器上创建同步的工作目录,并且将nasimport工具包下载在该目录中。下载链接
export work_dir=/root/ms
wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/45306/cn_zh/1479113980204/nasimport_linux.tgz
tar zxvf ./nasimport_linux.tgz -C "$work_dir"
2.2 编辑工作目录 ($work_dir) 下的配置文件config/sys.properties:
vim $work_dir/config/sys.properties
workingDir=/root/ms
slaveUserName=
slavePassword=
privateKeyFile=
slaveTaskThreadNum=60
slaveMaxThroughput(KB/s)=100000000
slaveAbortWhenUncatchedException=false
dispatcherThreadNum=5
| 字段 | 说明 |
| workingDir |
表示当前的工作目录,即工具包解压后所在的目录 |
| slaveTaskThreadNum |
表示同时执行同步的工作线程数 |
| slaveMaxThroughput(KB/s) |
slaveMaxThroughput(KB/s) |
| slaveAbortWhenUncatchedException |
表示遇到未知错误时是否跳过还是 abort,默认不 abort |
| dispatcherThreadNum | 表示分发任务的并行线程数,默认值一般够用 |
3. 启动服务
3.1 nasimport支持的命令如下:
任务提交:java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties submit $jobConfigPath
任务取消:java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties clean $jobName
状态查看:java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties stat detail
任务重试:java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties retry $jobName
3.2 执行如下命令启动后台服务:
cd $work_dir
nohup java -Dskip_exist_file=false -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties start > $work_dir/nasimport.log 2>&1 &
4. 提交任务
4.1 编辑任务描述文件 nas_job.cfg
| 字段名 | 说明 |
| jobName |
自定义任务名字,任务的唯一标识, 支持提交多个名字不同的任务 |
| jobType |
可以配置为 import(执行数据同步操作)或者 audit(仅进行同步源数据与同步目标数据全局一致性校验) |
| isIncremental=false |
是否打开自动增量模式,如果设为 true,会每间隔incrementalModeInterval(单位秒)重新扫描一次增量数据,并将增量数据同步到nas上 |
| incrementalModeInterval=86400 |
增量模式下的同步间隔 |
| importSince | 指定时间,用于同步大于该时间的数据,这个时间为 unix 时间戳(秒数);默认为0 |
| srcType | 同步源类型,目前支持 oss,qiniu,baidu,ks3,youpai,local |
| srcAccessKey | 如果 srcType设 置为 oss、qiniu、baidu、ks3、youpai,则需要填写数据源的 access key |
| srcSecretKey | 如果 srcType 设置为 oss、qiniu、baidu、ks3、youpai,则需要填写数据源的 secret key |
| srcDomain | 源 endpoint |
| srcBucket | 源 bucket 名字 |
| srcPrefix | 源前缀,默认为空;如果 srcType=local,则填写本地待同步目录,请注意您需要填写完整的目录路径(以’/‘结尾)。如果 srcType 设置为 oss、qiniu、baidu、ks3、youpai,则需要填写待同步的 Object 前缀,同步所有文件前缀可以设置为空。 |
| destType | 同步目标类型(默认为 nas) |
| destMountDir | NAS 本地挂载目录 |
| destMountTarget | NAS 挂载点域名 |
| destNeedMount=true | 工具是否执行自动挂载,默认为 true,您也可以选择false并手动将NAS挂载点到 destMountDir 目录下 |
| destPrefix | 填写同步目标端文件前缀,默认为空 |
| taskObjectCountLimit | 每个子任务最大的文件个数限制,这个会影响到任务执行的并行度,一般配置为总的文件数/你配置的下载线程数,如果不知道总文件数,建议保持默认值 |
| taskObjectSizeLimit | 每个子任务下载的数据量大小限制(bytes),建议保持默认值 |
| scanThreadCount | 并行扫描文件的线程数,与扫描文件的效率有关,建议保持默认值 |
| maxMultiThreadScanDepth | 最大允许并行扫描目录的深度,建议保持默认值 |
4.2 提交任务
java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties submit $work_dir/nas_job.cfg
ps axu | grep "nasimport.jar.* start" | grep -v grep | awk '{print "kill -9 "$2}' | bash
java -jar $work_dir/nasimport.jar -c $work_dir/conf/sys.properties clean nas_job
5. 查看任务执行状态
java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties stat detail
--------------job stats begin---------------
----------------job stat begin------------------
JobName:nas_job
JobState:Running
PendingTasks:0
RunningTasks:1
SucceedTasks:0
FailedTasks:0
ScanFinished:true
RunningTasks Progress:
FD813E8B93F55E67A843DBCFA3FAF5B6_1449307162636:26378979/26378979 1/1
----------------job stat end------------------
--------------job stats end---------------
cat $work_dir/master/jobs/$jobName/failed_tasks/*/audit.log
java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties retry $jobNam