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