通過遞增快照備份 Azure 非托管 VM 磁盤

概述

Azure 存儲提供創建 Blob 快照的功能。 快照將捕獲該時間點的 Blob 狀態。 本文介紹有關如何使用快照維護虛擬機磁盤備份的方案。 如果選擇不使用 Azure 備份和恢復服務,但想要為虛擬機磁盤創建自定義備份策略,則可以使用此方法。

Azure 虛擬機磁盤在 Azure 存儲中存儲為頁 Blob。 本文中介紹的是虛擬機磁盤的備份策略,因此,我們指的是頁 Blob 上下文中的快照。 若要詳細了解快照,請參閱創建 Blob 的快照。

什么是快照?

Blob 快照是在某個時間點捕獲的 Blob 只讀版本。 在創建快照后,可以讀取、復制或刪除該快照,但無法對其進行修改。 利用快照,可以在某個時間點備份顯示的 Blob。 在 REST 2015-04-05 版之前,可以復制完整快照。 使用 REST 2015-07-08 版或更高版本,還可以復制增量快照。

完整快照復制

可將快照作為 Blob 復制到另一個存儲帳戶,以保留基本 Blob 的備份。 你還可以復制快照覆蓋基本 Blob,這類似于將 Blob 還原到以前的版本。 將快照從某個存儲帳戶復制到另一個存儲帳戶時,將占用與基本頁 Blob 相同的空間。 因此,將整個快照從某個存儲帳戶復制到另一個存儲帳戶時速度較慢,并且會消耗目標存儲帳戶中的大量空間。

Note

如果將基本 Blob 復制到另一個目標,則不會一起復制 Blob 的快照。 同樣,如果使用副本覆蓋基本 Blob,與基本 Blob 關聯的快照不會受到影響,并且可讓基本 Blob 名稱保持不變。

使用快照備份磁盤

作為虛擬機磁盤的備份策略,可以創建磁盤或頁 Blob 的定期快照,并使用復制 Blob操作或AzCopy之類的工具將其復制到另一個存儲帳戶。 可將快照復制到具有不同名稱的目標頁 Blob。 生成的目標頁 Blob 是可編寫的頁 Blob,而不是快照。 本文稍后介紹使用快照創建虛擬機磁盤備份的步驟。

使用快照還原磁盤

需要將磁盤還原到以前在某個備份快照中捕獲的穩定版本時,可以復制一個快照來覆蓋基本頁 Blob。 將快照升級到基本頁 Blob 之后,快照會保留,但會使用可讀寫的副本覆蓋其源。 本文稍后介紹從快照還原以前磁盤版本的步驟。

實現完整快照復制

可以通過執行以下操作實現完整快照復制:

首先,使用快照 Blob操作創建基本 Blob 的快照。

然后,使用復制 Blob將快照復制到目標存儲帳戶。

重復此過程以保留基本 Blob 的備份副本。

增量快照復制

GetPageRangesAPI 中的新功能提供更好的方式來備份頁 Blob 或磁盤的快照。 該 API 返回基本 Blob 和快照之間的更改列表。 這可以減少備份帳戶上使用的存儲空間量。 該 API 支持高級存儲以及標準存儲的頁 Blob。 現在,可以使用此 API 為 Azure VM 構建更快速且有效的備份解決方案。 此 API 適用于 REST 2015-07-08 版和更高版本。

增量快照復制可讓你將以下兩者之間的差異從一個存儲帳戶復制到另一個存儲帳戶:

基本 Blob 及其快照,或

基本 Blob 的任意兩個快照

必須符合以下先決條件:

Blob 是在 2016 年 1 月 1 日或之后創建。

未在兩個快照之間使用PutPage復制 Blob覆蓋 Blob。

注意:此功能適用于高級和標準 Azure 頁 Blob。

如果存在使用快照的自定義備份策略,則將快照從一個存儲帳戶復制到另一個存儲帳戶可能非常慢,并且將消耗大量的存儲空間。 可以將連續快照之間的差異寫入備份頁 Blob,而不是將整個快照復制到備份存儲帳戶。 這樣,便可以大量減少復制的時間和存儲備份的空間。

實現增量快照復制

可以通過執行以下操作實現增量快照復制:

使用快照 Blob創建基本 Blob 的快照。

使用復制 Blob將快照復制到目標備份存儲帳戶。 這將是備份頁 Blob。 創建此備份頁 Blob 的快照,并將其存儲在備份帳戶中。

使用快照 Blob 創建基本 Blob 的另一個快照。

使用GetPageRanges獲取基本 Blob 的第一個與第二個快照之間的差異。 使用新參數prevsnapshot指定要用于獲取差異的快照的 DateTime 值。 如果提供此參數,REST 響應將只包含在目標快照與先前快照之間更改的頁面(包括清除頁面)。

使用PutPage將這些更改應用到備份頁 Blob。

最后,創建備份頁 Blob 的快照,并將其存儲在備份存儲帳戶中。

下一部分詳細說明如何使用增量快照復制維護磁盤的備份

方案

在本部分中,我們會介紹一種方案,它涉及到使用快照針對虛擬機磁盤實施自定義的備份策略。

假設在某個 DS 系列 Azure VM 上附加了一個高級存儲 P30 磁盤。 名為mypremiumdisk的 P30 磁盤存儲在名為mypremiumaccount的高級存儲帳戶中。 名為mybackupstdaccount的標準存儲帳戶用于存儲mypremiumdisk的備份。 我們希望每隔 12 小時保留mypremiumdisk的一個快照。

若要了解如何創建存儲帳戶和磁盤,請參閱關于 Azure 存儲帳戶。

若要了解如何備份 Azure VM,請參閱規劃 Azure VM 備份。

使用增量快照維護磁盤備份的步驟

下述步驟將創建mypremiumdisk的快照,并在mybackupstdaccount中維護備份。 備份將是名為mybackupstdpageblob的標準頁 Blob。 備份頁 Blob 始終反映與mypremiumdisk的最新快照相同的狀態。

首先,創建高級存儲磁盤的備份頁 Blob。 為此,請為mypremiumdisk創建名為mypremiumdisk_ss1的快照。

將此快照復制到 mybackupstdaccount,用作名為mybackupstdpageblob的頁 Blob。

使用創建 Blob 快照mybackupstdpageblob創建名為mybackupstdpageblob_ss1的快照,并將其存儲在mybackupstdaccount中。

在備份時段內,創建mypremiumdisk的另一個快照(即mypremiumdisk_ss2),并將其存儲在mypremiumaccount中。

prevsnapshot參數設置為mypremiumdisk_ss1的時間戳的情況下,對mypremiumdisk_ss2使用GetPageRanges獲取兩個快照(mypremiumdisk_ss2mypremiumdisk_ss1)之間的增量更改。 將這些增量更改寫入到mybackupstdaccount中的備份頁 Blobmybackupstdpageblob。 如果增量更改中有已刪除的范圍,則必須從備份頁 Blob 中清除這些范圍。 使用PutPage將增量更改寫入備份頁 Blob。

為備份頁 blobmybackupstdpageblob創建名為mybackupstdpageblob_ss2的快照。 從高級存儲帳戶刪除以前的快照mypremiumdisk_ss1。

在每個備份時段內重復步驟 4-6。 這樣,即可在標準存儲帳戶中維護mypremiumdisk的備份。

從快照還原磁盤的步驟

下述步驟將高級磁盤mypremiumdisk從備份存儲帳戶mybackupstdaccount還原到以前的快照。

確定要將高級磁盤還原到的時間點。 假設這是存儲在備份存儲帳戶 mybackupstdaccount 中的快照 mybackupstdpageblob_ss2。

在 mybackupstdaccount 中,將快照mybackupstdpageblob_ss2升級為新的備份基本頁 Blobmybackupstdpageblobrestored

為此已還原的備份頁 Blob 創建名為mybackupstdpageblobrestored_ss1的快照。

將已還原頁 Blobmybackupstdpageblobrestoredmybackupstdaccount復制到mypremiumaccount,作為新的高級磁盤mypremiumdiskrestored。

mypremiumdiskrestored創建名為mypremiumdiskrestored_ss1的快照,以便將來執行增量備份。

將 DS 系列 VM 指向已還原的磁盤mypremiumdiskrestored,并從 VM 分離舊的mypremiumdisk

使用mybackupstdpageblobrestored作為備份頁 Blob,根據前一部分中所述,開始針對已還原的磁盤mypremiumdiskrestored執行備份過程。

后續步驟

使用以下鏈接詳細了解如何創建 Blob 的快照和規劃 VM 備份基礎結構。

創建 Blob 的快照

規劃 VM 備份基礎結構? ? ? ?立即訪問http://market.azure.cn

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容