客戶在實際進行遷移的時候,往往碰到需要將本地數據中心的超大文件,比如單個200GB的文件,或者總共1TB的無數文件上傳到Azure上的情況,尤其是傳到Azure的Linux虛擬機的場景,這種場景包括:
大日誌文件上傳到Azure進行分析
數據庫備份文件導入導出
大數據文件下載到本地等等
尤其是要將數據庫備份文件導入到Linux虛擬機進行數據庫恢復,一般用戶常常會選擇傳統的FTP方式進行處理,這樣的方式通常會花費用戶十幾個小時,甚至幾天的時間進行文件傳輸,但是在雲計算的時代,其實有非常多的工具和方法可以使用,讓你大幅度降低時間和成本,今天我們就以250GB數據庫文件上傳到Linux虛擬機爲例,來看看怎麼利用這些工具。
基本流程:
在本地安裝或者使用一個Windows機器,內核數目和內存可能的話最好大一些,因爲azcopy會根據內核數計算併發線程數
安裝azcopy
在Azure上創建storage account,容器container
利用azcopy上傳本地文件到Blob storage
在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個小時的時間,所以根據不同的場景選擇不同的工具和方法很重要。