Getting Started with Azure Blob Storage
Azure Blob Storage 是 Microsoft 針對雲端推出的物件儲存體解決方案。
比較特別的地方是,Blob Storage
是 區塊儲存(Flag Storage Scheme)
的架構,並非傳統的 階層式架構(Hierarchical Scheme)
,因此在儲存時並不會有「目錄」等等的階層概念。
這種架構非常適合儲存非結構化資料,例如文字或二進位資料。
Blob Storage
總共擁有三種類型的資源,分別是 Storage Account
、Containers
,最後才是 Blob
。
這三者的關係如下圖:
(圖片來源:Storage Blobs Introduction)
Storage Account
在使用 Azure Blob Storage
之前,必須先建立 Storage Account
,並掛進 Resource Group 之下。
Storage Account
也有類型之分,不同的類型會有不同的計價標準和用途,目前最通用的是 Storage V2
細節的收費差異可以參考 Storage Account Overview。
目前一個 Standard general-purpose v2
的 Storage Account
容量上限可以存放到 5PB 的資料。
詳細規格可以參考 Scalability and performance targets for standard storage accounts
Containers
Containers
會組織一組 Blob
,有點類似檔案系統中的目錄。Storage Account
可以擁有無限數量的 Containers
,而一個 Containers
則可儲存無限數量的 Blob
。
另外,許多人可能會遇到該怎麼去規劃 Containers
數量的問題,其實 Containers
數量多寡並不會影響檔案存放或存取的效能,因為 Partition
等實作是做在 Blob
裡。
Containers
真正的用處是在於檔案權限的劃分,可以根據 Containers
設定 SAS(Shared Access Signature) 來進行部份檔案的共享。
Blob
Blob
為 Azure Blob Storage
中的最小單位,也分為三種狀態:
- 區塊 Blob(
Block blobs
):可儲存文字和二進位資料。區塊 Blob 是由可個別管理的資料區塊所組成。一個區塊 Blob 做多可以擁有 50000 個區塊、每個區塊最大上限容量為 4000 MiB。因此一個區塊 Blob 的最大容量上限為大約 190.7 TiB(4000 MiB X 50000 區塊)。 - 附加 Blob(
Append blobs
):和區塊 Blob 相似,由區塊所組成,但已針對附加作業最佳化。附加 Blob 很適合特定案例,比如記錄 VM 產生的資料。 - 分頁 Blob(
Page blobs
):可儲存隨機存取檔案 (大小上限為 8 TiB)。分頁 Blob 存放區可儲存虛擬硬碟 (VHD) 檔案,以作為 Azure 虛擬機器的磁碟。
規格的細節可以參考 Understanding block blobs, append blobs, and page blobs。
Naming
在 Azure Blob Storage
中,各個資源的命名都有一定的標準。
以 Containers
為例,有以下的命名標準:
- 名稱的開頭或結尾必須是字母或數字,而且只能包含字母、數字和虛線 (
-
) 字元。 - 每個虛線 (
-
) 字元前後必須立即接著字母或數字;名稱中不允許連續虛線。 - 名稱的所有字母必須都是小寫。
- 名稱必須介於 3 至 63 個字元長。
詳細規則可以參考 Naming and Referencing Containers, Blobs, and Metadata。
Virtual Hierarchy
通常會使用到 Storage 的情境都會需要階層式的目錄結構,因此 Azure Blob Storage
有一個 Virtual Hierarchy
的功能,根據上傳的 Blob
命名來組成「虛擬目錄」,也可以想像成檔案的 Namespace。
舉例來說,如果我們分別上傳了 a.xml
和 xml/b.xml
,事實上是兩個 Blob
檔案,但在 Azure 的後台可以看到 a.xml
和 xml
目錄,目錄裡才是 b.xml
。
從 Azure 的後台就可以透過 Upload to folder
調整虛擬目錄的名稱了。