快照是在特定時間點拍攝的 Blob 物件唯讀副本。 你不需要啟用 blob 快照功能。 相反地,應該透過操作 Snapshot Blob 建立快照。 欲了解更多資訊,請參閱 快照 Blob 作業。 你可以透過自訂指令碼,依排程或在特定作業前後擷取 Blob 的時間點複本,來自動化快照建立。
推薦的資料保護組態
blob快照是多項資料保護功能之一。 選擇合適的功能或功能組合取決於你的工作量以及你要防範的威脅。 欲了解更多 Microsoft 的資料保護建議,請參閱資料保護概述。
快照與版本
快照和 blob 版本類似,但兩者在建立方式和最適合的用途上有所不同。 快照是手動且由應用程式驅動的:當應用程式決定需要時,你會明確建立某一時間點的副本。 版本是自動且由系統管理的:當啟用 blob 版本控制時,Azure 儲存體 每次寫入或刪除都會建立新版本,無需應用程式邏輯。
當你想要自動且持續地防止意外或惡意覆蓋與刪除時,請使用版本控制。 當你想要刻意、特定時間點的複製,例如計畫更新前的已知良好檢查點,而非每一次變更都被捕捉時,請使用快照。
附註
雖然你可以透過快照近似版本控制行為,但 Microsoft 建議使用 blob 版本管理,為 FNS 帳戶提供自動覆寫和刪除保護。 快照最適合用於刻意的特定時間點擷取,而非捕捉所有變更的保護。 欲了解更多資訊,請參閱 Blob 版本管理。
快照的運作方式
blob 的快照與其基礎 blob 相同,唯一不同的是 blob 的 URI 後面附加了一個 DateTime 值,以表示建立快照的時間。 例如,如果分頁 Blob URI 為 http://storagesample.core.blob.windows.net/mydrives/myvhd,則快照集 URI 類似於 http://storagesample.core.blob.windows.net/mydrives/myvhd?snapshot=2011-03-09T01:42:34.9360000Z。
當您建立 Blob 的快照集時,Blob 的系統屬性都會使用相同值複製到快照集中。 基底 blob 的中繼資料也會複製到快照集,除非您在建立快照集時為其指定個別的中繼資料。 建立快照集後,您可以讀取、複製或刪除,但無法加以修改。 任何與基底 Blob 相關聯的租用不會影響快照集。 您無法取得快照集上的租用。
Blob 可包含任意數目的快照集。 快照會持續存在,直到你明確刪除它們,不論是獨立刪除,還是作為基礎 blob 的 刪除 blob 操作的一部分。 你可以在熱、冷或冷卻層建立一個 Blob 的快照。 你無法建立已歸檔的 blob 快照。
重要事項
每個 blob 擁有大量快照會增加 blob 列表操作的延遲。 Microsoft 建議每個 blob 維持少於 1,000 個快照。 你可以使用生命週期管理功能自動刪除舊快照。 欲了解更多生命週期管理資訊,請參閱「透過自動化 Azure Blob 儲存體 存取層優化成本」。
快照對於blob類型和無法被blob版本控制捕捉的操作特別有用。 由於某些寫入操作,如 Put Page(頁面 blob)和 Append Block(append blobs),即使啟用版本控制也不會產生 blob 版本,快照提供了一種在使用這些 API 時捕捉 blob 即時狀態的方法。 例如,VHD 檔案儲存虛擬機磁碟的當前資訊與狀態。 你可以從虛擬機內部分離磁碟或關閉虛擬機,先截取其 VHD 檔案快照,之後再利用該快照將 VHD 檔案還原至當時的狀態,並重新建立虛擬機。
下列圖表展示了快照的建立方式,以及如何將快照升格為目前的 blob:
管理與還原快照
你可以建立、列出並刪除快照。 你也可以用快照還原基礎 blob 到較早的狀態。 以下章節將介紹每項操作及相應的工具。
從快照集還原 Blob
因為你無法修改快照,所以你要透過複製快照來還原一個基礎 blob。 呼叫 複製 Blob 操作,並指定快照 URI 作為複製來源。 此過程將快照狀態提升為目前的基底 blob,同時保留該 blob 現有的快照。
列出快照
你可以透過 List Blobs 操作,並在 include 參數中指定 snapshots 值,列舉與基礎 blob 關聯的快照來追蹤目前快照。 預設情況下,List blobs 請求不會回傳快照。 將 include=snapshots 設定為傳回每個 blob 的所有快照,以及基礎 blob。 更多資訊請參見 列出 Blob。 你也可以使用 Azure 儲存體 的 blob inventory,在庫存規則定義中將 includeSnapshots 欄位設為 true,以產生帳戶中 blob 的排程報告,包括其快照。 更多資訊請參見 Blob Inventory。
刪除快照集
你必須手動刪除快照。 要刪除單一快照,呼叫 Delete Blob 操作,並在快照查詢參數中指定快照的 DateTime 值。
你無法在基底 blob 有作用中快照時刪除它。 若要刪除基底 blob 及其所有快照,請呼叫 Delete Blob,將 x-ms-delete-snapshots 標頭設為 include。 若要只刪除快照並保留基礎 blob,請將標頭設為 only。
使用工具管理快照
你可以透過入口網站、Azure CLI 和 Azure PowerShell 來管理快照。
要使用 Azure 入口網站建立 blob 快照,請遵循以下步驟:
- 在 Azure 入口網站中,瀏覽至您的儲存體帳戶。
- 在 資料儲存 中,找到 容器 選項,然後選擇存放 blob 的容器。
- 選取您想要建立快照的 blob。
- 在 blob 的 概覽 標籤中,選擇 「建立快照」。
- 要查看 blob 的快照,請選擇 「快照」 標籤。該標籤列出每個快照及其擷取日期和時間。
功能支援
此功能未啟用於 Data Lake Storage Gen2 帳號。 此外,網路檔案系統(NFS)3.0 協定,或 SSH 檔案傳輸協定(SFTP)可能會影響此功能的支援。 如果你啟用了這些功能,請參考 Azure 儲存體 帳號中的 Blob 儲存體 功能支援,以評估此功能的支援。 考慮替代機制。 範例包括 Blob 的虛刪除、AzCopy,以及 Vaulted Backup。
功能互動
版本控制
啟用版本控制後,快照通常對區塊 Blob 來說是多餘的。 如果你同時啟用版本控制和快照,擷取快照會同時產生快照和新版本。 此過程增加了儲存物件數量,卻不增加保護。 如需詳細資訊,請參閱 Blob 版本設定。
軟刪除
軟刪除適用於快照:當你刪除快照時,它就會被軟刪除。 你可以在保留期間使用「還原刪除 Blob」來恢復該 Blob。 此外,快照的建立與收費方式會因是否啟用版本控制而有所不同。 當版本控制被關閉時,覆寫一個 blob 會產生軟刪除快照。 啟用版本控制時,系統會建立一個新的版本。 如果你明確設定了基礎 blob 的層級,你就必須為該軟刪除的 blob 的先前版本或快照按完整內容長度計費。 關於此計費行為的詳細資訊,請參閱定價與計費章節。 欲了解更多軟刪除資訊,請參見 Blob 軟刪除。
物件複寫
你無法複製快照。 只有基礎的 blob 會被複寫。 更多資訊請參見 物件複製。
生命週期管理
生命週期管理可以透過政策規則中的快照子型態來鎖定並刪除快照。 欲了解更多資訊,請參閱 生命週期管理。
價格和計費
建立快照集 (即 Blob 的唯讀複本) 可能會為您的帳戶產生額外的資料儲存體費用。 在設計申請時,請注意這些費用可能如何產生,以降低成本。
Blob 快照集 (例如 Blob 版本) 的計費採用與作用中資料相同的費率。 快照的收費方式取決於你是明確設定基礎 blob 的層級,還是其任何快照(或版本)的等級。 如需 Blob 階層的詳細資訊,請參閱 Blob 資料的存取層 (部分機器翻譯)。
如果你不更改某個 blob 或快照的層級,你將被收取該 blob、快照以及可能存在的任何版本中獨特的資料區塊費用。 如需詳細資訊,請參閱未明確設定 Blob 階層時的計費方式 (部分機器翻譯)。
如果你更改 blob 或快照的層級,無論 blob 和快照是否最終回到同一層級,你都會被計費整個物件。 如需詳細資訊,請參閱已明確設定 Blob 階層時的計費方式。
對於使用智慧分層的儲存帳號,版本與快照將按照完整資料長度計費。 欲了解更多資訊,請參閱 「智慧層級優化成本」。
若要進一步了解 Blob 版本的計費詳細資料,請參閱 Blob 版本設定。
透過管理快照集將成本降到最低
為避免額外費用,請謹慎管理快照。 請遵循以下最佳實務,幫助降低快照儲存所產生的成本:
- 每當您更新 Blob 時,請刪除並重新建立與該 Blob 相關聯的快照集,即使您正以相同資料進行更新亦然,除非您的應用程式設計為需要維護快照集。 透過刪除並重新建立 blob 的快照,你能確保 blob 和快照不會產生分歧。
- 如果您要維護 Blob 的快照集,請避免在更新 Blob 時呼叫會覆寫整個 Blob 的方法。 改為更新最少數量的區塊以保持成本低廉。
未明確設定 Blob 存取層時的計費
如果你沒有明確設定基礎 blob 或其任何快照的 blob 層級,你需為該 blob、其快照及任何可能存在的版本之間的唯一區塊或頁面付費。 你只需為 blob 與其快照共用的資料付費一次。 當你更新一個 blob 時,基礎 blob 裡的資料會和快照中儲存的資料不同,並且你需要為每個區塊或頁面的唯一資料付費。
當你在區塊 Blob 中替換某個區塊時,之後該區塊會作為唯一區塊計費。 即使區塊的區塊 ID 和資料與快照中相同,這條規則仍然適用。 當你再次提交該區塊後,它會與快照中的對應區塊產生分歧,並且你必須為其資料付費。 同樣的規則也適用於 page blob 中以相同資料更新的頁面。
blob 儲存無法判斷兩個區塊是否包含相同的資料。 你上傳並提交的每個區塊都會被視為獨一無二,即使它有相同的資料和區塊 ID。 因為你是為唯一區塊付費,請記得當該 Blob 有快照或版本時,更新該 Blob 會導致額外的唯一區塊和額外費用。
Blob 含有快照集時,請對區塊 Blob 呼叫更新作業,使其盡可能更新較少的區塊。 允許對區塊進行精細控制的寫入作業,是放置區塊和放置區塊清單。 另一方面, 放置 Blob 操作會替換整個 blob 的內容,因此可能導致額外收費。
以下情境展示了當你沒有明確設定該 Blob 層級時,區塊 blob 及其快照的費用如何累積。
實例 1
在情節 1 中,基底 Blob 在擷取快照之後尚未更新,因此只會針對唯一區塊 1、2 和 3 產生費用。
案例 2
在情節 2 中,基底 Blob 已更新,但快照集並未更新。 區塊 3 已更新,而且即使它包含相同資料及相同的識別碼,它還是與快照集中的區塊 3 不一樣。 因此,此帳戶必須支付四個區塊的費用。
案例 3
在情節 3 中,基底 Blob 已更新,但快照集並未更新。 區塊 3 已使用基底 Blob 中的區塊 4 來取代,但快照集仍然反映區塊 3。 因此,此帳戶必須支付四個區塊的費用。
案例 4
在案例 4 中,基底 Blob 已完全更新,且未包含它的任何原始區塊。 因此,此帳戶必須支付所有八個唯一區塊的費用。
秘訣
為了降低成本,避免呼叫會覆蓋整個 blob 的方法。 改為更新每個區塊。
當你明確設定 blob 層級時的計費
如果你明確設定了 blob、快照或版本的 blob 層級,你就必須依新層級中該物件的完整內容長度支付費用,不論它是否與原始層級的物件共用區塊。 你還要為原始等級中最舊版本的完整內容長度付費。 你要為任何版本或快照中的唯一區塊付費,這些區塊仍保留在原始層級,如 Blob 層級未明確設定時的計費所述。
將 Blob 移至新的階層
下表描述了當你將 blob 或快照移到新層級時的計費行為。
| 當你明確設定 blob 等級時...... | 您需為下列項目付費... |
|---|---|
| 含有快照集的基底 Blob | 新階層中的基底 Blob 和原始層中最舊的快照集,再加上其他快照集中任何唯一區塊。1 |
| 含有舊版和快照集的基底 Blob | 新層級的基礎 blob、原始層級中最舊版本、原始層級中最舊的快照,再加上其他版本或快照中的唯一區塊。1 |
| 快照集 | 新階層中的快照集和原始層中最舊的基底 Blob,再加上其他快照集中任何的唯一區塊。1 |
1如果有其他先前版本或快照你未將其從原始層級移動,你就根據它們包含的獨特區塊數量付費,如 當未明確設定 blob 層級時的計費中所述。
下圖說明了當你將帶有快照的 blob 移到不同層級時,物件的計費方式。
你無法撤銷明確設定 blob、版本或快照的層級。 如果你把一個 blob 移到新層級,再移回原本層級,即使它和原始層級的其他物件共用區塊,你還是得支付該物件的完整內容長度。
明確設定 Blob、版本或快照集階層的作業包括:
在虛刪除啟用時刪除 Blob
啟用 blob 軟刪除時,如果你刪除或覆寫你明確為其設定存取層的基底 blob,你必須依該軟刪除 blob 的任何先前版本或快照的完整內容長度付費。 欲了解更多關於 blob 版本控制與軟刪除如何協同運作的資訊,請參閱 功能互動。
針對已虛刪除的 Blob,下表描述其計費行為,該行為會根據是否已啟用或停用版本設定來進行。 啟用版本設定時,虛刪除 Blob 會建立新的版本。 停用版本設定時,虛刪除 Blob 會建立虛刪除快照集。
| 當您覆寫基底 Blob,且有明確設定其層級時... | 您需為下列項目付費... |
|---|---|
| 如果同時啟用 Blob 虛刪除和版本設定 | 所有內容長度完整的現有版本 (不論層級為何)。 |
| 如果啟用了 Blob 虛刪除卻停用版本設定 | 所有內容長度完整的現有虛刪除快照集 (不論層級為何)。 |
已知的限制
你無法在歸檔存取層級為 blobs 建立快照。
資料湖 Gen2 帳戶快照支援已不再接受新客戶。 相反地,可以使用 blob 軟刪除、AzCopy 或 Vault 備份。
除非你在刪除呼叫中包含
x-ms-delete-snapshots,否則無法刪除具有使用中快照的 blob。物件複製不會複製快照。
建立快照後你無法修改快照。
您無法取得快照集上的租用。
監視與疑難排解
我無法刪除我的基礎 blob:blob 有活躍快照。 使用 Delete Blob 搭配
x-ms-delete-snapshots: include來同時刪除兩者。刪除基礎 blob 後,快照就消失了:刪除基礎 blob 會永久刪除快照,除非啟用 blob 軟刪除。 啟用軟刪除以防止意外刪除。
我的快照成本比預期高:如果你明確更改 blob 的存取層級,你是為完整內容長度付費,而非僅是獨特區塊。 盡量避免在有活躍快照的 blob 上做明確的層級變更。
檢視與盤點快照:在入口網站中,當啟用 「顯示 blob 快照」 時,快照會出現在儲存體瀏覽器的 blob 項目下。 要在帳號內盤點快照計數和儲存使用情況,請使用 Azure 儲存體 Blob Inventory 和 Azure 監視器 中的 BlobCapacity 指標。