閱讀164 返回首頁    go 阿裏雲


Linux平台使用說明__官方遷移工具_常用工具_對象存儲 OSS-阿裏雲

簡介

【ossimport2】同步工具可以將您本地或第三方雲存儲服務上的文件同步到OSS上。

主要特性:

  • 支持將本地、OSS、七牛、百度對象存儲、金山對象存儲、又拍雲、亞馬遜s3、騰訊雲cos、HTTP鏈接形式的文件同步到指定OSS Bucket上
  • 支持存量數據同步(允許指定隻同步某個時間點之後的文件)
  • 支持增量數據自動同步
  • 支持斷點續傳
  • 支持上傳/下載流量控製
  • 支持並行list和並行數據下載/上傳

如果您有較大量級的數據(超過20T),且期望以較短時間遷移到OSS上,除了【ossimport2】同步工具之外,我們的專業技術人員還可以為您提供多機器並行同步方案,請加旺旺群:904193608聯係我們。

運行環境

您需要在Java JDK1.7以上的環境中運行【ossimport2】同步工具,建議使用Oracle版本JDK:

點擊查看

注意:程序運行前請檢查進程允許打開的文件數的配置(ulimit -n 查看),如果小於10240,需要作相應修改。

部署工具

首先,在您本地服務器上創建同步的工作目錄,並且將【ossimport2】工具包下載在該目錄中。

示例:創建/root/ms目錄為工作目錄,且工具包下載在該工作目錄下。

  1. export work_dir=/root/ms
  2. wget https://import-service-package.oss.aliyuncs.com/ossimport2/ossimport-v2.1-linux.zip
  3. unzip ./ossimport4linux.zip -d "$work_dir"

配置工具

編輯工作目錄($work_dir)下的配置文件conf/sys.properties:

  1. vim $work_dir/conf/sys.properties
  2. workingDir=/root/ms
  3. slaveUserName=
  4. slavePassword=
  5. privateKeyFile=
  6. slaveTaskThreadNum=60
  7. slaveMaxThroughput(KB/s)=100000000
  8. slaveAbortWhenUncatchedException=false
  9. dispatcherThreadNum=5

您可以直接使用配置默認值。如有特殊要求,可以編輯配置字段值:

字段 說明
workingDir 表示當前的工作目錄,即工具包解壓後所在的目錄
slaveTaskThreadNum 表示同時執行同步的工作線程數
slaveMaxThroughput(KB/s) 表示遷移速度總的流量上限限製
slaveAbortWhenUncatchedException 表示遇到未知錯誤時是否跳過還是abort,默認不abort
dispatcherThreadNum 表示分發任務的並行線程數,默認值一般夠用

服務運行

ossimport2支持如下命令:

  • 任務提交:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $jobConfigPath
  • 任務取消:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties clean $jobName
  • 狀態查看:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail
  • 任務重試:java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties retry $jobName

服務的運行和使用步驟如下:

1.啟動服務,執行如下命令:

  1. cd $work_dir
  2. nohup java -Dskip_exist_file=false -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties start > $work_dir/logs/ossimport2.log 2>&1 &

請注意:相關的log文件會自動生成在您執行啟動服務的當前目錄的logs目錄中,建議您在工作目錄($work_dir)下執行啟動命令。啟動任務時如果skip_exist_file=true,則在上傳中如果碰到oss上存在且長度和源端一致的文件,將會跳過此文件

2.編輯示例任務描述文件local_job.cfg

字段說明:

字段名 說明
jobName 自定義任務名字,任務的唯一標識, 支持提交多個名字不同的任務
jobType 可以配置為import(執行數據同步操作)或者audit(僅進行同步源數據與同步目標數據全局一致性校驗)
isIncremental=false 是否打開自動增量模式,如果設為true,會每間隔incrementalModeInterval(單位秒)重新掃描一次增量數據,並將增量數據同步到oss上
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前綴,同步所有文件前綴可以設置為空。
destAccessKey 填寫同步目標端OSS 的access key
destSecretKey 填寫同步目標端 OSS的 secret key
destDomain 填寫同步目標端OSS的endpoint
destBucket 填寫同步目標端 OSS的bucket
destPrefix 填寫同步目標端文件前綴,默認為空
taskObjectCountLimit 每個子任務最大的文件個數限製,這個會影響到任務執行的並行度,一般配置為總的文件數/你配置的下載線程數,如果不知道總文件數,可以配置為默認值
taskObjectSizeLimit 每個子任務下載的數據量大小限製(bytes)
scanThreadCount 並行掃描文件的線程數,與掃描文件的效率有關
maxMultiThreadScanDepth 最大允許並行掃描目錄的深度,采用默認值即可

注:1) 如果配置了自動增量模式,則任務會定期被執行以掃描最新的數據,該任務永遠不會結束。2) 對於srcType為youpai的情況,由於又拍雲本身API限製,list文件的操作無法實現checkpoint,在list完成之前殺掉進程會導致重新list所有文件的操作。

3.提交任務

  1. java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/local_job.cfg

注意事項:

  • 如果有同名任務正在執行,則提交任務會失敗。
  • 如果您需要暫停同步任務,您可以停止ossimport2進程,需要同步時重啟ossimport2進程即可,重啟後會按照上次的進度繼續上傳。
  • 如果您需要重新全量同步文件,您可以先停止ossimport2進程,再調用如下命令清除當前任務。

示例:假設當前任務名為local_test(這個任務名配置在文件local_job.cfg中),命令如下

  1. ps axu | grep "ossimport2.jar.* start" | grep -v grep | awk '{print "kill -9 "$2}' | bash
  2. java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties clean local_test

4.查看任務執行狀態:

  1. [root@iZ23gztmc8fZ local]# java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail
  2. --------------job stats begin---------------
  3. ----------------job stat begin------------------
  4. JobName:local_test
  5. JobState:Running
  6. PendingTasks:0
  7. RunningTasks:1
  8. SucceedTasks:0
  9. FailedTasks:0
  10. ScanFinished:true
  11. RunningTasks Progress:
  12. FD813E8B93F55E67A843DBCFA3FAF5B6_1449307162636:26378979/26378979 1/1
  13. ----------------job stat end------------------
  14. --------------job stats end---------------

這裏會顯示當前任務的總體的執行進度,並且會顯示當前正在執行的task進度。例如上文中:“26378979/26378979”表示:總共需要上傳的數據量(26378979字節)/已經上傳完成的數據量(26378979字節)。“1/1” 表示:總共需要上傳的文件個數(1個)/已經上傳完成的文件個數(1個)。

遷移工具會將用戶提交的一個job任務分解為多個task並行執行,當所有的task都執行完成之後,job任務才算執行完成。任務執行完成之後,JobState會顯示為”Succeed”或者”Failed”,表示任務執行成功或者失敗。如果任務執行失敗,可以通過如下命令查看各個task失敗的原因:

以下命令中$jobName需要替換成對應得job名字(jobName配置在文件local_job.cfg中)。

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

對於任務失敗的情況,我們在工具中已經做了較為充分的重試,對於可能由於數據源或者目標源暫時不可用引起的失敗情況,可以通過如下命令嚐試重新執行失敗的TASK:

  1. java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties retry $jobName

5.常見任務失敗原因

  • 任務配置出錯,比如access key/id出錯,權限不足等,這種情況下通常現象是所有task都失敗,具體確認需要查看$work_dir/logs/ossimport2.log文件。
  • 源文件名的編碼方式與係統默認的文件名編碼方式不符,例如在windows下文件名默認為gbk編碼,linux下默認為utf-8編碼,對於數據源是nfs的情況下較容易出現該問題。
  • 上傳過程中源目錄的文件發生了修改,這種情況在audit.log裏會提示SIZE_NOT_MATCH相關字樣的錯誤,這種情況下老的文件已經上傳成功,新的修改沒有上傳到oss。
  • 源文件在上傳過程中被刪除,導致下載文件時失敗。
  • 源文件名不符合oss命名規範(如不能以/開頭,或不能為空),導致文件上傳到oss失敗。
  • 數據源出現問題導致下載數據源文件失敗。
  • 沒有先殺掉進程再執行clean有可能會導致程序執行異常。
  • 程序異常退出,任務狀態為Abort,這種情況請聯係我們(請加旺旺群:904193608)。

6.建議

對於從雲端(非本地)遷移到oss,且帶寬資源不是很充足的用戶,建議夠買按量付費的ecs進行遷移(購買地址:https://ecs-buy.aliyun.com/#/postpay)

ecs配置:

  • 1.付費方式選擇按量付費
  • 2.地域選擇oss對應的區域
  • 3.帶寬峰值選100M(流入流量和內網流量是不記費的)
  • 4.係統linux/windows隨意
  • 5.其他全部選擇最低配置

收費根據區域不同會略有不同,杭州配置費用,0.277元/小時,公網流量費0.8元/GB(公網帶寬:按使用流量,僅單向收取【流出】流量費用,【流入流量和內網流量不收費】,按實際使用金額每小時扣費。例如您在1小時內公網流出流量為2.5GB,收取費用為2.5GB*0.8元/小時=2.0元)

在配置遷移服務時,將targetDomain設為帶internal的內網域名;如果源端也是oss,將srcDomain也設為帶internal的內網域名,可以省掉從oss源端下載的流量費,僅收取oss訪問次數的費用;

遷移結束後釋放掉機器(注意:不是關機,是釋放)

最後更新:2016-11-23 20:01:38

  上一篇:go ossprobe__常用工具_對象存儲 OSS-阿裏雲
  下一篇:go Windows平台使用說明__官方遷移工具_常用工具_對象存儲 OSS-阿裏雲