游覽高山河川,隨手按下快門,壯麗美景盡收囊中,隨時都可以拿出來回味。
而使用Azure的過程中,需要時按下“快門”,你的磁盤數(shù)據(jù)也能得到充分保護,并且可以在必要時用這樣的快照將磁盤數(shù)據(jù)恢復(fù)為之前的狀態(tài)。
Azure磁盤快照就是這樣一種方便的技術(shù),甚至成為了Azure備份等數(shù)據(jù)保護服務(wù)的基礎(chǔ)。不同于傳統(tǒng)本地存儲快照基于指針的方式,Azure磁盤快照更像是對磁盤有效數(shù)據(jù)創(chuàng)建的克隆,使用方式也有較大差異。
快照的操作很簡單,在管理門戶界面中選擇磁盤即可直接創(chuàng)建快照,但仔細研究一下,還是有很多有意思的地方。
Azure快照基礎(chǔ)概念
Azure磁盤快照分為兩類:全量和增量,兩者的區(qū)別和計價方式(以美東的Premium Disk為例)如下:
從描述中可以看出:
快照分為全量和增量;
快照只支持本地副本保護:LRS或ZRS(如果區(qū)域支持);
Premium Disk的全量快照可以放在Premium存儲或標(biāo)準(zhǔn)儲存中,增量快照只能放標(biāo)準(zhǔn)存儲中(標(biāo)準(zhǔn)SSD和標(biāo)準(zhǔn)磁盤的全量和增量快照都只能放在標(biāo)準(zhǔn)存儲);
快照的容量由磁盤的有效數(shù)據(jù)量決定,而非磁盤大小;
全量快照的基準(zhǔn)點是當(dāng)前磁盤;增量快照的基準(zhǔn)點是上一次快照。無論上次快照是全量還是增量都可以。
快照實驗
接下來我們將搭建一臺虛擬機,借此驗證快照功能。
實驗設(shè)計
該虛擬機運行Windows 10,附加了一塊1TB的數(shù)據(jù)盤用作快照測試,整體流程如下:
大致的實驗流程如下:
首先在磁盤中放入一個10GB的文件,做全量快照Snapshot1。Snapshot1基于磁盤當(dāng)前有效數(shù)據(jù)量,所以容量為10GB;
然后做增量快照Snapshot2,由于增量快照基于Snapshot1,而磁盤沒有任何變化,所以Snapshot2容量為0GB;
向磁盤增加一個20GB的文件,磁盤有效數(shù)據(jù)量變?yōu)?/span>30GB,做全量快照Snapshot3,容量為30GB;
接著做增量快照Snapshot4,同理容量為0GB;
第三次向磁盤中放入一個40GB文件,磁盤有效數(shù)據(jù)量增加為70GB,再次做增量快照Snapshot5,這次增量快照的基準(zhǔn)點是最近一次快照Snapshot4,所以Snapshot5的容量應(yīng)該為70-30=40GB。
1. 創(chuàng)建快照
如下圖所示,在創(chuàng)建好的虛擬機的數(shù)據(jù)盤(F盤)里,使用fsutil命令創(chuàng)建一個10GB的文件:
然后做第一次全量快照Snapshot1:
可以看到,因為這塊磁盤是Premium SSD,所以全量快照時可以選擇不同的存儲類型,這里統(tǒng)一選擇Standard HDD,然后一直“Next”創(chuàng)建快照:
再對該磁盤創(chuàng)建增量快照Snapshot2:
由于增量快照只支持標(biāo)準(zhǔn)存儲(Standard HDD),所以沒有存儲類型的選擇。創(chuàng)建完成結(jié)果如下:
隨后按此步驟增加文件并創(chuàng)建剩余的快照,列表如下:
2. 快照驗證
不同于傳統(tǒng)存儲快照可以直接回退,Azure的快照必須生成磁盤才能使用。因此我們首先用Snapshot1生成Disk1:
隨后用同樣步驟,使用后邊幾個快照創(chuàng)建磁盤Disk2—Disk5:
由于這些磁盤的來源還沒附加到虛擬機,因此沒有Owner。
再次回到虛擬機的OS,我們在數(shù)據(jù)盤分別創(chuàng)建了3個文件:file01、file02、file03。按照創(chuàng)建快照的時間點,每個快照包含的文件如下:
隨后將從快照生成的磁盤附加到虛擬機:
并在OS中附加這些磁盤(G—K盤):
檢查磁盤內(nèi)容發(fā)現(xiàn)符合預(yù)期:
進一步測試
上文提過,增量快照是基于前一次快照的變化量。那么如果前一次快照被刪除,會出現(xiàn)什么情況?還是通過測試做驗證。
首先刪除Snapshot1(第一次全量快照):
發(fā)現(xiàn)快照列表里已經(jīng)沒有可Snapshot1:
再次用Snapshot2生成磁盤Disk6,并附加到虛擬機:
將其附加到虛擬機(L盤),然后檢查里邊的內(nèi)容:
結(jié)果發(fā)現(xiàn)file01仍然存在,并且檢查哈希可知,其哈希值與之前的文件一致:
可以看出:即使刪除作為基準(zhǔn)點的快照,增量快照的安全也不受影響。
關(guān)于容量那些事
上文曾經(jīng)提到,快照容量是由磁盤的有效數(shù)據(jù)量決定。對于全量快照,有效數(shù)據(jù)量比較容易確認;但對于增量快照,通常磁盤的使用不是簡單的增加文件,而是一系列的增刪改等操作,但Azure的快照并不提供容量查詢的功能,屬性里看到的容量是對應(yīng)磁盤的容量。
不過我們可以通過一個變通方式來確認快照容量,即根據(jù)快照的成本來反推容量。
為此請重新創(chuàng)建一個虛擬機,附加兩塊1TB的數(shù)據(jù)盤:
進入OS,將兩塊數(shù)據(jù)盤分別創(chuàng)建分區(qū)并格式化(F盤和G盤):
隨后分別在F盤和G盤各創(chuàng)建一個300GB的文件,F盤用Windows自帶的fsutil工具創(chuàng)建,G盤用第三方的rdfc工具創(chuàng)建:
可以看到:fsutil創(chuàng)建速度很快,而rdfc速度非常慢。原因是fsutil會直接用“0”填充所生成的稀疏文件,而rdfc會用隨機數(shù)填充,真正生成了一個文件。完成后兩個磁盤的占用空間基本一致:
對這兩個磁盤分別做全量快照SnapshotF和SnapshotG:
放置兩天后,查看快照的使用成本。進入快照Overview,有一個View cost按鈕:
點擊進入,并選擇Daily costs:
借此可以看到,G盤快照每天的成本大約$0.19。
而用同樣方法查看F盤的快照成本如下,基本為0:
對比可知:
G盤和F盤雖然空間占用基本一樣,但快照成本相差較大。F盤的文件基本全部為“0”填充,創(chuàng)建快照時并沒有實際占用空間,所以快照沒有實際占用空間,成本為0。
G盤的文件實際大小為300GB,理論上的每天成本為$0.05/30*300=$0.50,但實際為$0.19,說明快照存儲時使用了類似壓縮去重的技術(shù),以節(jié)約空間。
小結(jié)
快照(Snapshot)是一個很平常的概念,在云端和本地有不同的機制。
雖然快照的操作很簡單,但如果能熟練掌握,使用場景非常廣泛,例如業(yè)務(wù)升級、數(shù)據(jù)更新等,可以利用快照做即時保護;另外在環(huán)境復(fù)制、遠程遷移虛擬機等情況下,也可以通過快照實現(xiàn)。
希望本文對大家有所幫助。