1051
阿裏雲
對象存儲(OSS、七牛等)數據遷移NAS工具__數據遷移工具_常用工具_文件存儲-阿裏雲
簡介
【nasimport】工具可以幫助您將阿裏雲 OSS 或第三方雲存儲服務上的文件同步到 NAS 文件係統上。
主要特性:
- 支持將本地、OSS、七牛、百度對象存儲、金山對象存儲、又拍雲、亞馬遜 s3、騰訊雲 cos、HTTP 鏈接形式的文件同步到指定 NAS 文件係統上。
- 支持自動掛載 NAS 文件係統。
- 支持存量數據同步(允許指定隻同步某個時間點之後的文件)。
- 支持增量數據自動同步。
- 支持斷點續傳。
- 支持並行 list 和並行數據下載/上傳。
如果您有較大量級的數據(超過 2T),且期望以較短時間遷移到 NAS 上,除了【nasimport】同步工具之外,我們的專業技術人員還可以為您提供多機器並行同步方案,請加旺旺群:1562614356 聯係我們。
運行環境
您需要在能夠掛載目標NAS文件係統的ECS虛擬機上運行該遷移工具,能否掛載NAS文件係統及如何掛載:
您需要在 Java JDK 1.7 以上的環境中運行【nasimport】同步工具,建議使用 Oracle 版本 JDK:
注意:程序運行前請檢查進程允許打開的文件數的配置(ulimit -n 查看),如果小於10240,需要作相應修改。
部署及配置
首先,在您本地服務器上創建同步的工作目錄,並且將【nasimport】工具包下載在該目錄中。
示例:創建 /root/ms 目錄為工作目錄,且工具包下載在該工作目錄下。
export work_dir=/root/ms
wget https://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"
編輯工作目錄 ($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) | 表示遷移速度總的流量上限限製 |
slaveAbortWhenUncatchedException | 表示遇到未知錯誤時是否跳過還是 abort,默認不 abort |
dispatcherThreadNum | 表示分發任務的並行線程數,默認值一般夠用 |
運行服務
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
服務的運行和使用步驟如下:
1、啟動服務,執行如下命令:
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 文件係統中上存在且長度和源端一致的文件,將會跳過此文件
2、編輯示例任務描述文件 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 所有文件的操作。
3、提交任務
java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties submit $work_dir/nas_job.cfg
注意事項:
- 如果有同名任務正在執行,則提交任務會失敗。
- 如果您需要暫停同步任務,您可以停止 nasimport 進程,需要同步時重啟 nasimport 進程即可,重啟後會按照上次的進度繼續上傳。
- 如果您需要重新全量同步文件,您可以先停止 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
4、查看任務執行狀態:
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
對於任務失敗的情況,我們在工具中已經做了較為充分的重試,對於可能由於數據源或者目標源暫時不可用引起的失敗情況,可以通過如下命令嚐試重新執行失敗的 TASK:
java -jar $work_dir/nasimport.jar -c $work_dir/config/sys.properties retry $jobNam
5、常見任務失敗原因
- 任務配置出錯,比如 access key/id 出錯,權限不足等,這種情況下通常現象是所有task都失敗,具體確認需要查看 $work_dir/nasimport.log 文件。
- 源文件名的編碼方式與係統默認的文件名編碼方式不符,例如在 windows 下文件名默認為 gbk 編碼,linux 下默認為 utf-8 編碼,對於數據源是 nfs 的情況下較容易出現該問題。
- 上傳過程中源目錄的文件發生了修改,這種情況在 audit.log 裏會提示SIZE_NOT_MATCH 相關字樣的錯誤,這種情況下老的文件已經上傳成功,新的修改沒有上傳到 nas。
- 源文件在上傳過程中被刪除,導致下載文件時失敗。
- 數據源出現問題導致下載數據源文件失敗。
- 沒有先殺掉進程再執行 clean 有可能會導致程序執行異常。
- 程序異常退出,任務狀態為 Abort,這種情況請聯係我們(請加旺旺群:1562614356 )。
6、建議
在配置遷移服務時,如果源端是 oss,請將 srcDomain 設為帶 internal 的內網域名,可以省掉從 oss 源端下載的流量費,僅收取 oss 訪問次數的費用,且可以獲得更快的遷移速度,oss 內網域名您可以從 oss 控製台獲取。
如果您的 NAS 在專有網絡中,且源端是 oss,請將 srcDomain 設為 oss 提供 的VPC 環境域名,各 Region 對應的 VPC 環境域名:點擊查看。
最後更新:2016-11-23 19:51:18
上一篇:
使用權限組進行訪問控製__用戶訪問權限控製_用戶指南_文件存儲-阿裏雲
下一篇:
創建經典網絡掛載點時為什麼需要RAM授權?__常見問題_常見問題_文件存儲-阿裏雲
測試模型__性能測試技術體係_性能測試體係_性能測試-阿裏雲
阿裏雲數據安全白皮書____信任中心-阿裏雲
日誌分析__快速開始_移動數據分析-阿裏雲
權限管理__數據管理手冊_用戶操作指南_大數據開發套件-阿裏雲
Android SDK 使用指南__SDK_API 網關-阿裏雲
監控與報警__用戶指南_雲數據庫 Memcache 版-阿裏雲
啟用伸縮組__API快速入門_快速入門_彈性伸縮-阿裏雲
結束混流操作__直播流操作接口_API 手冊_CDN-阿裏雲
DetachPolicyFromUser__授權策略管理接口_RAM API文檔_訪問控製-阿裏雲
修改集群期望實例數__SDK接口說明_Python版SDK_批量計算-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲