客戶在實際進行遷移的時候,每每碰到須要將本地數據中心的超大文件,好比單個200GB的文件,或者總共1TB的無數文件上傳到Azure上的狀況,尤爲是傳到Azure的Linux虛擬機的場景,這種場景包括:算法
大日誌文件上傳到Azure進行分析shell
數據庫備份文件導入導出數據庫
大數據文件下載到本地等等api
尤爲是要將數據庫備份文件導入到Linux虛擬機進行數據庫恢復,通常用戶經常會選擇傳統的FTP方式進行處理,這樣的方式一般會花費用戶十幾個小時,甚至幾天的時間進行文件傳輸,可是在雲計算的時代,其實有很是多的工具和方法可使用,讓你大幅度下降時間和成本,今天咱們就以250GB數據庫文件上傳到Linux虛擬機爲例,來看看怎麼利用這些工具。服務器
基本流程:網絡
在本地安裝或者使用一個Windows機器,內核數目和內存可能的話最好大一些,由於azcopy會根據內核數計算併發線程數多線程
安裝azcopy併發
在Azure上建立storage account,容器containerapp
利用azcopy上傳本地文件到Blob storageide
在Linux虛擬機利用Azure CLI下載雲端文件到本地Linux虛擬機
若是Azure上是Windows虛擬機,使用azcopy下載
限制和優化建議:
單個block blob的文件不能超過195GB,因此若是你的本地單個文件超過這個大小,你能夠選擇:
分割文件成小份
利用壓縮軟件壓縮文件到較小大小
若是你本地的機器比較強大,而且單個文件的確比較大,建議你本地壓縮,能夠節約整體時間,你開始壓縮的時候,大體能夠知道這個壓縮須要多長時間,
你的虛擬機和你的存儲賬號入伍特別須要,請放在一個區域,好比都在北京或者上海,一邊最大限度的下降延遲,提高速度
Azcopy會最大限度的利用你的數據中心的帶寬,若是你但願下降帶寬佔用,能夠限制azcopy的併發處理數目,利用/NC來作限制,默認狀況下,若是你是操做blob storage,azcopy的併發線程數是你處理器數目的8倍;對於Table的操做,默認的併發線程數是你的處理器數目。
上傳下載速度和你的磁盤速度,網絡帶寬等都有關係,若是須要處理大規模文件,能夠考慮臨時調整你的數據中心帶寬大小
在本示例中,基本環境以下:
備份文件未壓縮前210GB,壓縮後60GB
用戶數據中心服務器,Windows Server 2012,16 cores,32GB
Azure Linux虛擬機:A4, SUSE 11 SP3
基本配置步驟以下:
在用戶數據中心Windows Server上下載並安裝azcopy,請安裝最新版本:
在Azure上建立一個存儲帳號,並取得存儲帳號的主訪問密鑰:
3. 在該存儲帳號下建立一個容器,名字爲upload,你能夠按照本身的須要命名:
4. 利用Azcopy,上傳你本地的文件到Blob storage,注意要用到上個步驟建立到的存儲帳號和帳號的key,假定當前的上傳文件名爲FULL0606.zip,放在你的E盤:
Azcopy.exe /Source:E:\ /Dest: https://myhousestorage.blob.core.chinacloudapi.cn/upload /DestKey:YOURSTORAGEKEY /Pattern:"FULL0606.zip"
參數說明:
/Souce:你的源文件地址,寫目錄,具體文件名寫後面,如C:\data
/Dest:你的存儲帳號的容器地址,能夠在你的容器頁面看到
/DestKey:存儲賬號的主訪問密鑰
更多關於azcopy的詳細用法和命令,請參考:
https://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/
5. 傳統方式下,用戶會使用FTP的模式,通過調優,大概速度是3.5MB/s,而使用了azcopy,因爲它有多線程,網絡優化等底層功能的支持,速度能夠達到近11MB/s,用戶數據中心帶寬100M,這個速度是至關不錯的:
6. 在將數據上傳到Azure blob storage以後,須要在Linux虛擬機上將他下載到本地,在Windows上有Powershell,azcopy等工具,在Linux系統上,有Azure CLI做爲跨平臺的工具能夠管理Azure的各項服務,關於如何在Linux上安裝配置Azure CLI,請參考:
http://cloudapps.blog.51cto.com/3136598/1842181
7. 在Linux虛擬機上,直接使用Azure的CLI命令下載上傳到Blob storage上的壓縮文件便可,在同一個region,速度大約30MB,但實際速度依賴於網絡情況和當前負載:
# azure storage blob download upload FULL0606.zip ./
若是須要把Linux虛擬機上的大文件下載到本地,能夠考慮逆序使用上述方法,azcopy通過了網絡優化,壓縮優化和算法優化,是Azure上數據處理的神器:)
在以前客戶的方案中,文件上傳到Linux虛擬機大約須要17個小時,通過選擇合適的方法,數據上傳,下載大約總共2個小時的時間,因此根據不一樣的場景選擇不一樣的工具和方法很重要。