目前 Azure 的儲存體只能透過指定的 Blobs、Tables 或 Queues 方式存取,但是這些方式在 Linux 上無法以慣用的掛載(mount)方式將儲存體拿來使用,只能在虛擬機器上,透過連接磁碟的方式,建立一個虛擬硬碟,接著再自行分割、格式化,缺點就是這個虛擬硬碟是跟著某一台虛擬機器上,如果要跟虛擬機器共用,需要自己架設 NFS 等方式共用,而且單一虛擬硬碟的最大空間限制在 1TB 以下,稍嫌不足。
因此 Microsoft 推出了 Azure Files 功能(至 2015 年 07 月仍為預覽功能),讓虛擬機器可以透過 SMB 或 NFS 的方式直接掛載儲存體,而不需要透過 Azure 的 API 來讀寫儲存體。
Azure Files 目前為預覽功能,需要申請才能使用,先到 https://account.windowsazure.com/PreviewFeatures 網站登入 Azure 管理帳號(若無法登入,請使用瀏覽器的無痕模式開啟網站,並重新登入),接著找到「Windows Azure Files」,按下下方的「try it now」按鈕,過一陣子等系統更新,完成後會出現「YOU ARE ACTIVE」字樣,即完成了申請。
回到 Azure Portal,此時已經存在的舊儲存體是不會有 Azure Files 功能,需要重新建立新的儲存體,才能支援 Azure Files 的功能。
建立完成後,下方就會額為出現「檔案」這個預覽功能。
接著需要啟動儲存體的共用功能,此步驟需要透過 Azure PowerShell 或 Azure CLI 來完成。可以先參考如何安裝和設定 Azure PowerShell這篇文章,從這裡來下載安裝 Azure PoserShell。
安裝完成後開啟 Microsoft Azure PowerShell,分別輸入
$ctx=New-AzureStorageContext [[storage-account-name]] [[storage-account-key]]
$s = New-AzureStorageShare [[share_name]] -Context $ctx
其中 [[storage-account-name]] 及 [[storage-account-key]] 分別代換成 Azure Portal 上提供的「STORAGE ACCOUNT NAME」及「PRIMARY ACCESS KEY」,[[share_name]] 為自訂的共用名稱,即可建立共用。
完成後轉到同區域的 Ubuntu Linux 虛擬機器上(目前透過 CIFS 掛載的方式無法跨區),輸入
mount.cifs -o vers=2.1,username=[[storage-account-name]],password=[[storage-account-key]] //[[endpoint]]/[[share_name]] [[mount-point]]
例如
mount.cifs -o vers=2.1,username=teststorage,password=[[storage-account-key]] //teststorage.file.core.windows.net/share1 /mnt/share1
即可透過 Ubuntu 掛載 Azure 儲存體了!預設會有 5TB 的空間可以使用。
另外可以透過 Azure PowerShell 進行測試,驗證是否真的成功,同樣先啟動 Azure PowerShell,接著輸入
$ctx=New-AzureStorageContext [[storage-account-name]] [[storage-account-key]]
$s = AzureStorageShare file -Context $ctx
New-AzureStorageDirectory -Share $s -Path TestFolder
這樣即可從 Azure PowerShell 建立一個名為 TestFolder 的資料夾,然後回到 Ubuntu Linux 上,看一下目錄有沒有出現,有出現的話代表已經成功掛載儲存體了!
最後,Azure Files 的價格可從 http://azure.microsoft.com/en-us/pricing/details/storage/ 查詢。
參考: