而应用 Azure 的过程中,须要时按下“快门”,你的磁盘数据也能失去充沛爱护,并且能够在必要时用这样的快照将磁盘数据恢复为之前的状态。
Azure 磁盘快照就是这样一种不便的技术,甚至成为了 Azure 备份等数据保护服务的根底。不同于传统本地存储快照基于指针的形式,Azure 磁盘快照更像是对磁盘无效数据创立的克隆,应用形式也有较大差别。
快照的操作很简略,在治理门户界面中抉择磁盘即可间接创立快照,但认真钻研一下,还是有很多有意思的中央。
Azure 快照根底概念
Azure 磁盘快照分为两类:全量和增量,两者的区别和计价形式(以美东的 Premium Disk 为例)如下:
从形容中能够看出:
- 快照分为全量和增量;
- 快照只反对本地正本爱护:LRS 或 ZRS(如果区域反对);
- Premium Disk 的全量快照能够放在 Premium 存储或规范贮存中,增量快照只能放规范存储中(规范 SSD 和规范磁盘的全量和增量快照都只能放在规范存储);
- 快照的容量由磁盘的无效数据量决定,而非磁盘大小;
- 全量快照的基准点是以后磁盘;增量快照的基准点是上一次快照。无论上次快照是全量还是增量都能够。
快照试验
接下来咱们将搭建一台虚拟机,借此验证快照性能。
实验设计:
该虚拟机运行 Windows 10,附加了一块 1TB 的数据盘用作快照测试,整体流程如下:
大抵的试验流程如下:
- 首先在磁盘中放入一个 10GB 的文件,做全量快照 Snapshot1。Snapshot1 基于磁盘以后无效数据量,所以容量为 10GB;
- 而后做增量快照 Snapshot2,因为增量快照基于 Snapshot1,而磁盘没有任何变动,所以 Snapshot2 容量为 0GB;
- 向磁盘减少一个 20GB 的文件,磁盘无效数据量变为 30GB,做全量快照 Snapshot3,容量为 30GB;
- 接着做增量快照 Snapshot4,同理容量为 0GB;
- 第三次向磁盘中放入一个 40GB 文件,磁盘无效数据量减少为 70GB,再次做增量快照 Snapshot5,这次增量快照的基准点是最近一次快照 Snapshot4,所以 Snapshot5 的容量应该为 70-30=40GB。
1. 创立快照:
如下图所示,在创立好的虚拟机的数据盘(F 盘)里,应用 fsutil 命令创立一个 10GB 的文件:
而后做第一次全量快照 Snapshot1:
能够看到,因为这块磁盘是 Premium SSD,所以全量快照时能够抉择不同的存储类型,这里对立抉择 Standard HDD,而后始终“Next”创立快照:
再对该磁盘创立增量快照 Snapshot2:
因为增量快照只反对规范存储(Standard HDD),所以没有存储类型的抉择。创立实现后果如下:
随后按此步骤减少文件并创立残余的快照,列表如下:
2. 快照验证:
不同于传统存储快照能够间接回退,Azure 的快照必须生成磁盘能力应用。因而咱们首先用 Snapshot1 生成 Disk1:
随后用同样步骤,应用后边几个快照创立磁盘 Disk2—Disk5:
因为这些磁盘的起源还没附加到虚拟机,因而没有 Owner。
再次回到虚拟机的 OS,咱们在数据盘别离创立了 3 个文件:file01、file02、file03。依照创立快照的工夫点,每个快照蕴含的文件如下:
随后将从快照生成的磁盘附加到虚拟机:
并在 OS 中附加这些磁盘(G—K 盘):
查看磁盘内容发现合乎预期:
进一步测试
上文提过,增量快照是基于前一次快照的变动量。那么如果前一次快照被删除,会呈现什么状况?还是通过测试做验证。
首先删除 Snapshot1(第一次全量快照):
发现快照列表里曾经没有可 Snapshot1:
再次用 Snapshot2 生成磁盘 Disk6,并附加到虚拟机:
将其附加到虚拟机(L 盘),而后查看里边的内容:
后果发现 file01 依然存在,并且查看哈希可知,其哈希值与之前的文件统一:
能够看出:即便删除作为基准点的快照,增量快照的平安也不受影响。
对于容量那些事
上文已经提到,快照容量是由磁盘的无效数据量决定。对于全量快照,无效数据量比拟容易确认;但对于增量快照,通常磁盘的应用不是简略的减少文件,而是一系列的增删改等操作,但 Azure 的快照并不提供容量查问的性能,属性里看到的容量是对应磁盘的容量。
不过咱们能够通过一个变通形式来确认快照容量,即依据快照的老本来反推容量。
为此请从新创立一个虚拟机,附加两块 1TB 的数据盘:
进入 OS,将两块数据盘别离创立分区并格式化(F 盘和 G 盘):
随后别离在 F 盘和 G 盘各创立一个 300GB 的文件,F 盘用 Windows 自带的 fsutil 工具创立,G 盘用第三方的 rdfc 工具创立:
能够看到:fsutil 创立速度很快,而 rdfc 速度十分慢。起因是 fsutil 会间接用“0”填充所生成的稠密文件,而 rdfc 会用随机数填充,真正生成了一个文件。实现后两个磁盘的占用空间基本一致:
对这两个磁盘别离做全量快照 SnapshotF 和 SnapshotG:
搁置两天后,查看快照的应用老本。进入快照 Overview,有一个 View cost 按钮:
点击进入,并抉择 Daily costs:
借此能够看到,G 盘快照每天的老本大概 $0.19。
而用同样办法查看 F 盘的快照老本如下,根本为 0:
比照可知:
- G 盘和 F 盘尽管空间占用根本一样,但快照老本相差较大。F 盘的文件根本全副为“0”填充,创立快照时并没有理论占用空间,所以快照没有理论占用空间,老本为 0。
- G 盘的文件理论大小为 300GB,实践上的每天老本为 $0.05/30*300=$0.50,但理论为 $0.19,阐明快照存储时应用了相似压缩去重的技术,以节约空间。
小结
快照(Snapshot)是一个很平时的概念,在云端和本地有不同的机制。
尽管快照的操作很简略,但如果能熟练掌握,应用场景十分宽泛,例如业务降级、数据更新等,能够利用快照做即时爱护;另外在环境复制、近程迁徙虚拟机等状况下,也能够通过快照实现。
心愿本文对大家有所帮忙。