超大文件上傳到Azure Linux虛擬機最佳實踐

客戶在實際進行遷移的時候,往往碰到需要將本地數據中心的超大文件,比如單個200GB的文件,或者總共1TB的無數文件上傳到Azure上的情況,尤其是傳到Azure的Linux虛擬機的場景,這種場景包括:

  • 大日誌文件上傳到Azure進行分析

  • 數據庫備份文件導入導出

  • 大數據文件下載到本地等等

尤其是要將數據庫備份文件導入到Linux虛擬機進行數據庫恢復,一般用戶常常會選擇傳統的FTP方式進行處理,這樣的方式通常會花費用戶十幾個小時,甚至幾天的時間進行文件傳輸,但是在雲計算的時代,其實有非常多的工具和方法可以使用,讓你大幅度降低時間和成本,今天我們就以250GB數據庫文件上傳到Linux虛擬機爲例,來看看怎麼利用這些工具。

基本流程:

  1. 在本地安裝或者使用一個Windows機器,內核數目和內存可能的話最好大一些,因爲azcopy會根據內核數計算併發線程數

  2. 安裝azcopy

  3. 在Azure上創建storage account,容器container

  4. 利用azcopy上傳本地文件到Blob storage

  5. 在Linux虛擬機利用Azure CLI下載雲端文件到本地Linux虛擬機

  6. 如果Azure上是Windows虛擬機,使用azcopy下載

     

限制和優化建議:

  1. 單個block blob的文件不能超過195GB,所以如果你的本地單個文件超過這個大小,你可以選擇:

    1. 分割文件成小份

    2. 利用壓縮軟件壓縮文件到較小大小

  2. 如果你本地的機器比較強大,並且單個文件的確比較大,建議你本地壓縮,可以節約總體時間,你開始壓縮的時候,大致可以知道這個壓縮需要多長時間,

  3. 你的虛擬機和你的存儲帳號入伍特別需要,請放在一個區域,比如都在北京或者上海,一邊最大限度的降低延遲,提升速度

  4. Azcopy會最大限度的利用你的數據中心的帶寬,如果你希望降低帶寬佔用,可以限制azcopy的併發處理數目,利用/NC來做限制,默認情況下,如果你是操作blob storage,azcopy的併發線程數是你處理器數目的8倍;對於Table的操作,默認的併發線程數是你的處理器數目。

  5. 上傳下載速度和你的磁盤速度,網絡帶寬等都有關係,如果需要處理大規模文件,可以考慮臨時調整你的數據中心帶寬大小

 

在本示例中,基本環境如下:

  1. 備份文件未壓縮前210GB,壓縮後60GB

  2. 用戶數據中心服務器,Windows Server 2012,16 cores,32GB

  3. Azure Linux虛擬機:A4, SUSE 11 SP3

基本配置步驟如下:

  1. 在用戶數據中心Windows Server上下載並安裝azcopy,請安裝最新版本:

    http://aka.ms/downloadazcopy

  2. 在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個小時的時間,所以根據不同的場景選擇不同的工具和方法很重要。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章