今天來介紹一下Azure Managed Disk的增量快照功能。在增量快照功能之前,對于托管磁盤,用戶只能通過全量的方式對磁盤進行快照,快照成本不優(yōu);其次對于快照做異地備份恢復場景,全量快照同樣會增加備份的時間并帶來額外流量費用。通過Azure Managed Disk對于增量快照的支持,用戶可以對托管磁盤進行一盤多照,每次快照只會產(chǎn)生前一次快照所產(chǎn)生的差異數(shù)據(jù),并且Azure會幫用戶托管相同托管磁盤的快照之間的依賴關(guān)系。
目前該功能在國內(nèi)Azure和海外Azure都已經(jīng)GA,目前在國內(nèi)還不支持Portal配置,本文為大家介紹通過命令行如何進行增量快照。
環(huán)境說明:
-- 資源組名稱 resourcegroup sanpshotdemo-- 托管磁盤資源 resourceid/subscriptions/<subscriptionid>/resourceGroups/<resourcegroup>/providers/Microsoft.Compute/disks/<manageddiskname> -- 快照1名稱 demovm_OsDisk_snapshot1-- 快照2名稱 demovm_OsDisk_snapshot2
01
演示環(huán)境中通過Azure CLI創(chuàng)建對一臺Windows 10演示VM的系統(tǒng)盤分別創(chuàng)建兩次增量快照demovm_OsDisk_snapshot1和demovm_OsDisk_snapshot2,兩次快照之間在演示VM之上下載文件,仿真磁盤數(shù)據(jù)發(fā)生變化。
創(chuàng)建demovm_OsDisk_snapshot1,相較之前的全量備份,命令行上增加了--incremental參數(shù)
# 按照實際部署替換 <subscription>, <resourcegroup>, <manageddiskname> az snapshot create -g <resourcegroup> -n demovm_OsDisk_snapshot1 -l <location> --source
創(chuàng)建demovm_OsDisk_snapshot2
# 按照實際部署替換 <subscription>, <resourcegroup>, <manageddiskname> az snapshot create -g <resourcegroup> -n demovm_OsDisk_snapshot1 -l <location> --source "/subscriptions/<subscription>/resourceGroups/<resosurcegroup>/providers/Microsoft.Compute/disks/<mangeddiskname>"
通過快照創(chuàng)建托管磁盤并創(chuàng)建主機的方式和全量快照沒有變化,這里不做贅述,大家可以在Portal上選擇磁盤,通過快照創(chuàng)建磁盤,再由創(chuàng)建的磁盤創(chuàng)建主機即可。
02
下面我們來介紹另外一個場景,結(jié)合增量備份來做異地備份的場景。無論全量快照和增量快照,默認快照生成的區(qū)域與原始對象(托管磁盤)所在的區(qū)域是相同的,在極端情況下如果Region不可用了,該快照也不可用,業(yè)務無法恢復。通過增量快照的方式,可以大大減少異地快照備份傳輸?shù)臄?shù)據(jù),只需要每次對增量數(shù)據(jù)進行傳輸即可。
上述架構(gòu)圖中,在托管磁盤源Region,用戶客戶通過計劃任務持續(xù)對托管磁盤進行增量快照,在異地備份Region,通過托管磁盤的第一個增量快照來創(chuàng)建一個Base Page Blob,該Base Page Blob作為地基,后續(xù)源region的增量快照產(chǎn)生的增量數(shù)據(jù),通過Page數(shù)據(jù)拷貝的方式,將增量數(shù)據(jù)覆蓋寫入到Base Page Blob,如果異地備份region考慮快照備份的多版本,可以在每次增量快照數(shù)據(jù)覆寫B(tài)ase Page Blob前,對Base Page Blob做快照。上述邏輯目前在托管磁盤的快照服務中還不是Build-In的內(nèi)置功能,客戶目前可以通過SDK來開發(fā)實現(xiàn),本文以Python SDK示例代碼為大家介紹上述實現(xiàn):
上面演示中已經(jīng)存在了兩個增量Snapshot,snapshot1和snapshot2,下面的示例代碼分兩部分,第一部分Base Page Blob創(chuàng)建拷貝,第二部分增量的快照數(shù)據(jù)拷貝,目前相關(guān)引用函數(shù)在12.2.0版本SDK中支持。
Base Page Blob創(chuàng)建拷貝:
azure.storage.blob = = = = = = = ====== 4 * 1024 * 1024 range = range.get() + 1 - range.get(= suboffset <= min(range_size -) + suboffset, subrangesize, range.get() += suboffset + FourMegabyteAsBytes
增量快照數(shù)據(jù)拷貝:
blob_client ==FourMegabyteAsBytes = 4 * 1024 * 1024 # OverWrite the Existing Page Block range = range.get() + 1 - range.get(= suboffset <= min(range_size -) + suboffset, subrangesize, range.get() += suboffset + range diff_page_range[1(range) target_blob_client.clear_page(range.get('start'), range.get('end') + 1 - range.get('start'))
今天的內(nèi)容介紹到這里,希望對大家有所幫助,后續(xù)也希望Azure Managed Disk Build-In的快照異地備份功能早日支持。