【文件存储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


无法保证

    为了满足数据迁移需求,让用户更加方便、快捷地将数据迁移到文件存储NAS,我们于近期推出了NAS数据迁移工具nasimport,nasimport具备以下功能特性:

    (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工具包下载在该目录中。下载链接

示例:创建 /root/ms 目录为工作目录,且工具包下载在该工作目录下:

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 &

请注意:相关的 log 文件会自动生成在您执行启动服务的当前目录中,建议您在工作目录($work_dir)下执行启动命令。启动任务时如果 skip_exist_file=true,则在上传中如果碰到 NAS 文件系统中上存在且长度和源端一致的文件,将会跳过此文件


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


最大允许并行扫描目录的深度,建议保持默认值

请注意:

(1) 如果配置了自动增量模式,则任务会定期被执行以扫描最新的数据,该任务永远不会结束。

(2)对于 srcType 为 youpai 的情况,由于又拍云本身 API 限制,list 文件的操作无法实现 checkpoint,在 list 完成之前杀掉进程会导致重新 list 所有文件的操作。


4.2 提交任务

java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties  submit $work_dir/nas_job.cfg

注意事项:

(1)如果有同名任务正在执行,则提交任务会失败。

(2)如果您需要暂停同步任务,您可以停止 nasimport 进程,需要同步时重启 nasimport 进程即可,重启后会按照上次的进度继续上传。

(3)如果您需要重新全量同步文件,您可以先停止 nasimport 进程,再调用如下命令清除当前任务。示例:假设当前任务名为 nas_job(这个任务名配置在文件 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---------------

这里会显示当前任务的总体的执行进度,并且会显示当前正在执行的 task 进度。例如上文中:“26378979/26378979”表示:总共需要上传的数据量(26378979字节)/已经上传完成的数据量(26378979字节)。“1/1” 表示:总共需要上传的文件个数(1个)/已经上传完成的文件个数(1个)。

迁移工具会将用户提交的一个 job 任务分解为多个 task 并行执行,当所有的 task 都执行完成之后,job 任务才算执行完成。任务执行完成之后,JobState 会显示为”Succeed”或者”Failed”,表示任务执行成功或者失败。如果任务执行失败,可以通过如下命令查看各个task失败的原因:(以下命令中 $jobName 需要替换成对应的 job 名字,jobName 配置在文件 nas_job.cfg中)

cat $work_dir/master/jobs/$jobName/failed_tasks/*/audit.log

对于任务失败的情况,我们在工具中已经做了较为充分的重试,对于可能由于数据源或者目标源暂时不可用引起的失败情况,可以通过如下命令尝试重新执行失败的任务:

java -jar $work_dir/nasimport.jar  -c $work_dir/config/sys.properties retry $jobName


6. 常见任务失败原因

(1)任务配置出错,比如 access key/id 出错,权限不足等,这种情况下通常现象是所有task都失败,具体确认需要查看 $work_dir/nasimport.log 文件。

(2)源文件名的编码方式与系统默认的文件名编码方式不符,例如在 windows 下文件名默认为 gbk 编码,linux 下默认为 utf-8 编码,对于数据源是 nfs 的情况下较容易出现该问题。

(3)上传过程中源目录的文件发生了修改,这种情况在 audit.log 里会提示SIZE_NOT_MATCH 相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到nas。

(4)源文件在上传过程中被删除,导致下载文件时失败。

(5)数据源出现问题导致下载数据源文件失败。

(6)没有先杀掉进程再执行 clean 有可能会导致程序执行异常。

(7)程序异常退出,任务状态为 Abort,这种情况请联系我们(请加旺旺群:1562614356 )。


7. 建议

在配置迁移服务时,如果源端是 oss,请将 srcDomain 设为带 internal 的内网域名,可以省掉从 oss 源端下载的流量费,仅收取 oss 访问次数的费用,且可以获得更快的迁移速度,oss 内网域名您可以从 oss 控制台获取。

如果您的 NAS 在专有网络中,且源端是 oss,请将 srcDomain 设为 oss 提供 的VPC 环境域名,各 Region 对应的 VPC 环境域名:点击查看。

时间: 2024-08-07 17:17:53

【文件存储NAS】数据迁移工具介绍及使用指南的相关文章

【文件存储NAS】NAS正式支持经典网络挂载啦!

功能和特点 自今年3月31日正式公测以来,文件存储NAS已经成为了阿里云家族中非常受大家欢迎的产品之一,非常感谢各位用户的鼓励.支持和包容! 阿里云始终将用户的数据安全作为一切工作的核心,因此为了充分打磨和测试经典网络环境中,文件存储的安全能力,保障用户的数据安全,我们没有在公测第一时间就推出经典网络的支持.经过一段时间的验证和测试,即日起 文件存储NAS正式开放支持经典网络ECS虚拟机挂载! 文件存储在经典网络中具备以下功能特点: 易用: 可以为任意文件系统实例创建经典网络挂载点,挂载方式与V

阿里云NAS文件存储部署方案介绍和对比

NAS业务上云的背景 作为国内最大的公有云厂商,阿里云为广大的个人用户.初创团队和企业提供了多种多样的公有云服务,包括弹性计算,数据库,存储和网络等.阿里云弹性伸缩,按需付费,无限容量,便捷使用等特性吸引了大量的客户把他们的应用以及服务部署到阿里云,其中就包括一部分部署NAS应用的客户,对于这些客户,面临的一个问题就是如何以最大的性价比来将原有的NAS应用部署到云上.本文介绍了三种可能的部署方案,并比较了他们的优缺点,包括用户最关心的价格,性能以及扩展性等.   对于企业级NAS应用,大部分企业

阿里云NAS文件存储:性能型、容量型、NAS Plus如何选

阿里云NAS文件存储:性能型.容量型.NAS Plus如何选? 阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例.HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展.单一命名空间.多共享.高可靠和高可用等特性的分布式文件系统. 为了满足用户业务对NAS文件存储的各种需求,阿里云NAS文件系统目前有3种类型可供用户选择,他们分别是: 性能型 容量型 NAS Plus 如上图所示

Android基础教程数据存储之文件存储

Android基础教程数据存储之文件存储 将数据存储到文件中并读取数据 1.新建FilePersistenceTest项目,并修改activity_main.xml中的代码,如下:(只加入了EditText,用于输入文本内容,不管输入什么按下back键就丢失,我们要做的是数据被回收之前,将它存储在文件中) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="

阿里云文件存储SMB协议服务及其申请和使用指南

阿里云于2016年发布了支持NFS网络文件系统访问协议的阿里云文件存储.2017年3月,又增加了SMB文件系统访问协议的支持,正式对外公测.本文简单描述了SMB文件存储访问协议以及阿里云SMB协议公测功能,并简单介绍了该服务的使用场景,以及公测申请和使用流程. 一.SMB文件系统访问协议简介 网络文件系统NAS(NAS-Network Area Storage),将本地的存储空间共享给其他主机使用, 通过 C/S 架构实现文件级别的共享,多个客户端计算机可以并发访问同一个文件系统.常见的 NAS

自动化创建OSS、NAS数据卷

数据卷的基本介绍参考:https://yq.aliyun.com/articles/138?spm=5176.100240.searchblog.11.dcX58H 阿里云OSS数据卷介绍:https://yq.aliyun.com/articles/7581?spm=5176.100240.searchblog.7.SgLL9J 阿里云NAS数据卷介绍:https://yq.aliyun.com/articles/52523?spm=5176.100240.searchblog.40.IhHW

如何才能有效的降低文件存储所需要的成本投入呢?

文件存储的成本问题一直是企业IT管理员们探讨的问题,要如何才能有效的降低文件存储所需要的成本投入呢?年以来,企业组织已经面临着数据呈指数级数的增长,他们不断的购买更多的存储容量来支持这一增长,而在经济放缓的预期之下,企业组织仍然不会受到其影响而减少创建的内容和对数据保存的需要.因此,需要存储的数据将继续增加,而预算将被进一步缩减,这显然是一种不协调的状态.如果有更多的数据话,那么就需要更多的钱来购买容量,这是肯定的事情.在开支紧缩的情况下,企业组织于是就开始寻求以更少的成本并同时能满足需求的方案

实现基于文件存储的Session类

session 我没事的时候写的自主实现Session功能的类,基于文件方式存储Session数据,测试基本通过,还比较好玩,实际应用没有意义,只不过是学习Session是如何实现的. 一般基于文件存储Session数据效率不是很高,毕竟跟磁盘IO是有关系的,如果需要多台服务器共享数据,可以考虑使用NFS来存储数据,如果需要比较快的速度,可以考虑使用共享内存(shm)来保存数据,直接把Session数据存储路径指定为/dev/shm,这样磁盘IO会提高不少,不过shm空间比较小,一般Linux下

使用E-MapReduce服务处理阿里云文件存储(NAS)的数据

简介 文件存储是阿里云今年新推出的存储服务,因为它提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展.单一命名空间.多共享.高可靠和高可用等特性的分布式文件系统.E-MapReduce服务是阿里云上的开源大数据解决方案,可以帮用户构建基于Hadoop等开源组件的大数据平台. 今天我给大家介绍一个使用场景,可以将E-MapReduce的Hadoop作业和文件存储(NAS)结合在一起,发挥分布式存储和分布式计算在一起的威力. 环境准备 第一步:按照官方文档在文件存储