瞭解區塊 Blob、附加 Blob 和分頁 Blob
儲存體服務提供三種類型的 Blob、 區塊 Blob、 附加 Blob和 分頁 Blob。 您會在建立 Blob 時指定 Blob 類型。 建立 Blob 之後,就無法變更其類型,而且只能使用適用于該 Blob 類型的作業進行更新, 也就是將區塊或區塊清單寫入區塊 Blob、將區塊附加至附加 Blob,以及將分頁寫入分頁 Blob。
所有 Blob 會立即反映認可的變更。 每個版本的 Blob 都有唯一的標記,稱為 ETag,您可以搭配存取條件使用該標記,確保僅變更特定的 Blob 執行個體。
所有 Blob 都可租用,以提供獨佔寫入存取。 當 Blob 租用時,只有包含目前租用識別碼的呼叫才能修改 Blob 或 (針對區塊 Blob) 其區塊。
任何 Blob 都可在快照集中複寫。 如需快照集的相關資訊,請參閱 建立 Blob 的快照集。
注意
Azure 儲存體模擬器中的 Blob 大小上限為 2 GiB。
關於區塊 Blob
區塊 Blob 已最佳化,可以有效率地上傳大量資料。 區塊 Blob 是由區塊組成,每個區塊都是由區塊識別碼來識別。 區塊 Blob 最多可以包含 50000 個區塊。 區塊 Blob 中的每個區塊都可以是不同的大小,最多可達使用中服務版本允許的大小上限。 若要建立或修改區塊 Blob,請透過 Put Block 作業寫入一組區塊,然後使用 Put Block List 作業將區塊認可至 Blob。
小於特定大小的 Blob (由服務版本) 可透過 Put Blob以單一寫入作業完整上傳。
下表描述服務版本所允許的最大區塊和 Blob 大小。
服務版本 | 區塊大小上限 (透過 Put Block) | Blob 大小上限 (透過 Put Block List) | 透過單一寫入作業的 Blob 大小上限 (透過 Put Blob) |
---|---|---|---|
2019-12-12 版和更新版本 | 4000 MiB | 大約 190.7 TiB (4000 MiB X 50,000 個區塊) | 5000 MiB |
2016-05-31 版至 2019-07-07 版 | 100 MiB | 大約 4.75 TiB (100 MiB X 50,000 個區塊) | 256 MiB |
2016-05-31 之前的版本 | 4 MiB | 大約 195 GiB (4 MiB X 50,000 個區塊) | 64 MiB |
儲存體用戶端預設為 128 MiB 最大單一 Blob 上傳,可使用BlobRequestOptions物件的SingleBlobUploadThresholdInBytes屬性,在適用于 .NET 11 的 Azure 儲存體用戶端程式庫中設定。 當區塊 Blob 上傳大於此屬性的值時,儲存體用戶端就會將檔案分割成區塊。 您可以使用BlobRequestOptions物件的ParallelOperationThreadCount屬性,設定用來平行上傳區塊的執行緒數目。
當您將區塊上傳到儲存體帳戶中的 Blob 時,該區塊會與指定的區塊 Blob 產生關聯,但是不會成為該 Blob 的一部分,直到您認可包含新區塊識別碼的區塊清單。 新區塊會維持未認可狀態,直到具體認可或捨棄。 最多可以有 100,000 個未認可的區塊。 寫入區塊並不會更新現有 Blob 的上次修改時間。
區塊 Blob 包括一些功能,可協助您管理網路上的大型檔案。 您可以透過區塊 Blob 並行上傳多個區塊,以縮短上傳時間。 每個區塊都可以包含用於驗證傳輸的 MD5 雜湊,因此您可以追蹤上傳進度並且視需要重新傳送區塊。 您可以依任意順序上傳區塊,並且在最後的區塊清單認可步驟中決定其順序。 您也可以上傳新區塊來取代相同區塊識別碼的現有未認可區塊。 在捨棄區塊之前,您有一週的時間可對 Blob 認可區塊。 所有未認可的區塊也都會在本身未包含在發生的區塊清單認可作業中時捨棄。
您可以藉由插入、取代或刪除現有區塊的方式修改現有區塊 Blob。 在上傳已變更的區塊之後,您可以透過單一認可作業認可新區塊與您想要保留的現有區塊,藉此認可 Blob 的新版本。 若要在已認可 Blob 的兩個不同位置插入相同範圍的位元組,您可以在同一認可作業中於兩個位置認可相同的區塊。 對於任何認可作業,只要有任何區塊未找到,整個認可作業就會失敗並顯示錯誤,而且不會修改 Blob。 任何區塊承諾會覆寫 Blob 的現有屬性和中繼資料,並捨棄所有未認可的區塊。
區塊識別碼是 Blob 中長度相同的字串。 區塊用戶端程式碼通常是使用 base-64 編碼將字串正規化為相等長度。 使用 base-64 編碼時,預先編碼的字串必須為 64 個位元組或更少。 區塊識別碼值可以在不同的 Blob 中複寫。
如果您針對不存在的 Blob 寫入區塊,則會建立長度為零個位元組的新區塊 Blob。 此 Blob 將出現在包括未認可 Blob 的 Blob 清單中。 如果您未將任何區塊認可至此 Blob,則會在上次成功上傳區塊之後的一周捨棄它及其未認可的區塊。 所有未認可的區塊也會在使用單一步驟 (而不是兩個步驟的區塊上傳後認可程序) 建立相同名稱的新區塊時捨棄。
關於分頁 Blob
分頁 Blob 是 512 位元組頁面的集合,已針對隨機讀取和寫入作業最佳化。 若要建立分頁 Blob,請初始化分頁 Blob 並指定分頁 Blob 將擴充的大小上限。 若要新增或更新分頁 Blob 的內容,您可以藉由指定位移和同時對齊 512 位元組頁面界限的範圍來撰寫頁面或頁面。 對分頁 Blob 的寫入只能覆寫一個頁面、部分頁面,或最多 4 MiB 的頁面 Blob。 寫入分頁 Blob 會就地發生,並且立即對 Blob 認可。 分頁 Blob 的大小上限為 8 TiB。
Azure 虛擬機器磁片是由分頁 Blob 所支援。 Azure 提供兩種類型的持久磁片儲存體:進階和標準。 分頁 Blob 的進階儲存體是針對需要一致高效能和低延遲的 Azure 虛擬機器工作負載所設計。 如需詳細資訊,請參閱選取IaaS VM 的磁片類型一文中的進階固態硬碟 (SSD) 一節。 如需分頁 Blob 進階儲存體延展性目標的相關資訊,請參閱 Azure 儲存體延展性和效能目標。
關於附加 Blob
附加 Blob 是由區塊所組成,而且已針對附加作業優化。 當您修改附加 Blob 時,區塊只會透過 附加區塊 作業新增至 Blob 結尾。 不支援更新或刪除現有的區塊。 不同于區塊 Blob,附加 Blob 不會公開其區塊識別碼。
附加 Blob 中的每個區塊可以是不同的大小、最多 4 MiB,而附加 Blob 最多可以包含 50,000 個區塊。 因此,附加 Blob 的大小上限會稍微超過 195 GiB (4 MiB X 50,000 個區塊) 。
另請參閱
- Blob 服務概念 \(英文\)
- Blob 服務 REST API