移轉資料至 Microsoft Azure 檔案服務

原文發表自 Migrating Data to Microsoft Azure Files

關於 Microsoft Azure 檔案服務(Files)

Microsoft Azure 檔案服務是一個以雲端平台為基礎的檔案服務,並且提供 SMB2.1 協定,讓使用者能透過雲端分享檔案。在 Azure 上的應用程式現在可以很輕易地在虛擬機器間、使用熟悉的檔案系統 API 如:ReadFileWriteFile 來分享檔案。除此之外,這些檔案也可以透過 REST API 的方式來存取,使其應用情境更多元。如同現有的其它儲存體服務如:Blob, Table, Queue Services 等一樣,Azure 檔案服務一樣有可延展性、高可靠度、地理複本備援等雲端平台的特性。目前這個服務還在預覽階段,關於詳細的技術內容可以參考這篇部落格文章

移轉資料

當您開始使用 Azure 檔案服務,你可能會需要搬移大量的既有資料到 Azure 檔案服務中,搬移的方式有很多種,這取決於您的資料放在哪裡,這篇文章接下來會介紹幾種方式,並且介紹如何獲取最大的效能。

1. 透過網際網路將既有機房的檔案搬上 Azure

您可以使用 Microsoft Azure 提供的 AzCopy 工具來複製檔案,AzCopy 優化了複製檔案的操作以達到最好的效能(例如:平行上傳、多執行緒、正確處理流量傳輸等等)。

AzCopy 的命令列操作格式如下:

AzCopy <source path> <destination URL> [optional filespec] /S /DestKey:<YourKey>

參數

source path 是要複製的檔案路徑

destination URL 指的是要複製的目標目錄 URL

filespec 可以是任何檔案篩選條件 (預設是 *.*)

YourKey 是你儲存體帳戶的金鑰

/S 是一個選項用來複製整個目錄、包含子目錄的內容

AzCopy 還有很多其它的命令列參數,您可以根據您的需求來選擇使用,關於 AzCopy 的詳情可以參考這篇部落格文章

底下是一個範例,是將 e:\data 目錄下的內容複製到 Azure 檔案服務:

AzCopy c:\data https://myaccount.file.core.windows.net/myshare *.* /S /DestKey:myStorageAccountKey

2. 從 Azure IaaS 虛擬機器磁碟到 Azure 檔案服務

使用 Azure 虛擬機器來做檔案伺服器的人來說,Azure 檔案服務應該是非常有吸引力的,因為如此一來就不必再自己管理檔案伺服器了。

要將檔案移轉到 Azure 檔案服務,需要:

  1. 在虛擬機器中連接磁碟機
  2. 掛載 Azure 檔案服務
  3. 使用 robocopy 來複製檔案

Robocopy 是 Windows 上免費且強大的複製工具,用來處理大檔案的複製。

命令列工具的格式如下:

Robocopy <source path> <dest path> [optional filespec] /MIR /MT:16

參數為:

source path 是要複製的檔案路徑

dest path 指的是要複製的目標目錄路徑

filespec 可以是任何檔案篩選條件 (預設是 *.*)

MT 是使用的執行緒數量

當使用 robocopy 時,您可以使用 "/mt" 參數來增加工作效率,它讓你可以使用多執行緒來處理檔案的複製,並且控制 IO 處理的佇列深度。如果執行緒數目太少,則可能會無法填滿佇列,但卻可以利用到 Azure 儲存體的平行架構;而要是執行緒數目太多,可能會有伺服器端傳輸切換過於頻繁而反而造成傳輸效能降低的問題。在我們的測試之下,最好的執行緒數目是在 16 ~ 32 之間可取得最大的效能。

要避免的方法

我們發現雖然可以使用 xcopy 或是檔案總管來處理大檔案的複製到 Azure 檔案服務,而且在 NTFS 的檔案系統下表現良好,但是這些工具缺乏足夠的平行處理能力,由於 Azure 檔案服務提供了高平行化的 I/O 處理,所以使用像 robocopy 這樣的工具,並搭配多執行緒的處理將可以得到更好的傳輸效能,以節省資料傳輸的時間。

3. 從 Azure Blob 到 Azure 檔案服務

從 Azure Blob 搬資料到 Azure 檔案服務最快的方法就是使用 AzCopy,你可以在與 Azure 檔案服務相同的資料中心上建一個虛擬機器來做複製的操作。

底下是一個從 Azure Blob 傳資料到 Azure 檔案服務的指令操作:

AzCopy https://myaccount1.blob.core.windows.net/mycontainer z:\mydirectory *.* /SourceKey:myStorageAccountKey

(在這裡我們假設 Azure 檔案服務連接到 Z 磁碟機)

在這個方法之下,資料會先下載到虛擬機器後,再上傳到 Azure 檔案服務中。

4. 從 Cloud Drive 到 Azure 磁碟

Cloud Drive 在 2010 年時預覽釋出,它讓用戶可以使用 Azure 雲端服務來掛載一個 page blob 作為 Web 或 Worker role 的磁碟機。在 Azure 檔案服務釋出後,幾乎可以取代所有 Cloud Drive 的應用情境,而且還有更好的功能及效能。同時,Cloud Drive 將在 2015 年停止服務,所以我們建議使用 Cloud Drive 的用戶可以移轉資料到 Azure 檔案服務上。搬移的方法與使用 VHDs 來從 Azure 虛擬機器中搬資料類似。

  1. 使用 Cloud Drive 掛載一個 blob
  2. 在虛擬機器中,將 Azure 檔案服務掛載為一個磁碟機。(可參考這篇部落格文章)
  3. 使用 Robocopy 來複製檔案。

我們希望這些方法都能幫助您將資料移轉到 Azure 檔案服務上,並且提供您新的應用情境來滿足您的商務需求。

 

這篇文章原始發佈於「Microsoft Azure 中文部落格」