[Microsoft Azure] Azure Files: 超自由的網路儲存體

  • 4725
  • 0

這回的 TechEd 2014 NA 在 Azure 上也宣布了不少新功能,除了大家期待很久的 RemoteApp 功能外,另一個令人期待的新功能就是 Azure Storage 提供的新服務:Azure Files,這個服務可以讓雲端上的運算單元 (VM) 透過 net use 的指令,就可以直接存取 storage 內的資料,以往若想要在 storage 內具備這樣的功能,只有透過 Drive (Azure Drive) 的方式,透過程式將 VHD 掛上 VM 才能做得到,或是利用虛擬機器的掛載功能來實現,但是 Azure Files 完全不需要程式介入,只要使用加入網路磁碟的功能 (即 net use),就能將 storage 的一部份掛載成一顆網路硬碟,這個功能大大的提升了 storage 的應用幅度,而且讓不會寫程式的 IT PRO 或使用者能運用他們習慣的 "連線網路磁碟" 的功能,就能使用 storage,也大大提升了 storage 的應用程度。

這回的 TechEd 2014 NA 在 Azure 上也宣布了不少新功能,除了大家期待很久的 RemoteApp 功能外,另一個令人期待的新功能就是 Azure Storage 提供的新服務:Azure Files,這個服務可以讓雲端上的運算單元 (VM) 透過 net use 的指令,就可以直接存取 storage 內的資料,以往若想要在 storage 內具備這樣的功能,只有透過 Drive (Azure Drive) 的方式,透過程式將 VHD 掛上 VM 才能做得到,或是利用虛擬機器的掛載功能來實現,但是 Azure Files 完全不需要程式介入,只要使用加入網路磁碟的功能 (即 net use),就能將 storage 的一部份掛載成一顆網路硬碟,這個功能大大的提升了 storage 的應用幅度,而且讓不會寫程式的 IT PRO 或使用者能運用他們習慣的 "連線網路磁碟" 的功能,就能使用 storage,也大大提升了 storage 的應用程度。

目前 Azure Files 是 Preview,要經過申請 (聽說排隊排很大...) 才能使用,當申請核准後,在管理介面中建立新的儲存體,你會在儀表板看到一個新的服務:

image

Azure Files 的 URL 是 [storagename].file.core.windows.net,目前支援 SMB 2.1 協定,能在同一個區域內的所有 VM 共用,尚未支援跨出區域的功能,也就是目前若要使用網路磁碟,只能在該區域內的 VM, Cloud Service 等取用,若未來支援 SMB 3.0 時,或許就可以直接在家中取用 (這樣的話可能真的會打趴一堆 storage provider...)。

帳戶建立完成後,要先到 Storage 的 Team Blog 下載一個 ZIP 檔,下載並解壓縮後,打開 PowerShell 指令介面 (當然也可以開 PowerShell ISE 啦),將目錄切換到解壓縮的那個目錄,然後下幾個指令:

# import module and create a context for account and key
import-module .\AzureStorageFile.psd1

# create storage context
$ctx=New-AzureStorageContext <account name> <account key>
 
# create a new share
$s = New-AzureStorageShare <share name> -Context $ctx

接著,到 Azure 管理介面建立一個 (或連接現有的) VM,遠端桌面進到 VM 後,使用 Map Network Drive (對應網路磁碟) 的功能,在 Folder 一欄中設定 \\[storagename].file.core.windows.net\[sharename],其中 [storagename] 是儲存帳戶的名稱,[sharename] 則是在前面使用 New-AzureStorageShare 指令時傳入的共享資源名稱 (這個名稱必須是小寫字元加數字,不可以出現大寫字元。然後要勾選 “Connect using different credentials”,表示要用不同的認證連線。

image

然後在要求認證資訊的時候,於 username 輸入儲存帳戶的名稱,password 則輸入儲存帳戶的主要或次要金鑰:

image

按下OK,即可完成連線。

image

我們可以自由的使用 Copy/Paste 來複製檔案:

image

image

每一個 Share 的大小是 5TB 喔。

image

那麼,外面的使用者要怎麼使用? 目前只有透過 REST API (Storage Client 4.0) 或是使用 PowerShell 的指令來上傳,下載或建立資料夾。

image

如果是程式開發人員,那麼可以先使用 NuGet 下載 Azure Storage Client Library 4.0 後,使用下列程式來新增 Share:

static void Main(string[] args)
{
     CloudStorageAccount account = CloudStorageAccount.Parse(cxnString);
     CloudFileClient client = account.CreateCloudFileClient();
     CloudFileShare share = client.GetShareReference("bar");
     share.CreateIfNotExistsAsync().Wait();
}

如果要由現有的 Azure Blob 中移動檔案的話,目前只能透過 API 或是 AzCopy 這個工具來複製。若是要由本地移動,則可以配合遠端桌面連接本機磁碟後,使用 xcopy 的方式複製。

 

 

References: http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/12/introducing-microsoft-azure-file-service.aspx