概述

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 的备份副本。

增量快照复制

GetPageRanges API 中的新功能提供更好的方式来备份页 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的最新快照相同的状态。

  1. 首先,创建高级存储磁盘的备份页 Blob。 为此,请为 mypremiumdisk 创建名为 mypremiumdisk_ss1 的快照。
  2. 将此快照复制到 mybackupstdaccount,用作名为 mybackupstdpageblob 的页 Blob。
  3. 使用创建 Blob 快照为 mybackupstdpageblob 创建名为 mybackupstdpageblob_ss1 的快照,并将其存储在 mybackupstdaccount 中。
  4. 在备份时段内,创建 mypremiumdisk 的另一个快照(即 mypremiumdisk_ss2),并将其存储在 mypremiumaccount 中。
  5. 在 prevsnapshot 参数设置为 mypremiumdisk_ss1 的时间戳的情况下,对 mypremiumdisk_ss2 使用 GetPageRanges 获取两个快照(mypremiumdisk_ss2 与 mypremiumdisk_ss1)之间的增量更改。 将这些增量更改写入到 mybackupstdaccount 中的备份页 Blob mybackupstdpageblob。 如果增量更改中有已删除的范围,则必须从备份页 Blob 中清除这些范围。 使用 PutPage 将增量更改写入备份页 Blob。
  6. 为备份页 blob mybackupstdpageblob 创建名为 mybackupstdpageblob_ss2 的快照。 从高级存储帐户删除以前的快照 mypremiumdisk_ss1
  7. 在每个备份时段内重复步骤 4-6。 这样,即可在标准存储帐户中维护 mypremiumdisk 的备份。

从快照还原磁盘的步骤

下述步骤将高级磁盘 mypremiumdisk 从备份存储帐户 mybackupstdaccount 还原到以前的快照。

  1. 确定要将高级磁盘还原到的时间点。 假设这是存储在备份存储帐户 mybackupstdaccount 中的快照 mybackupstdpageblob_ss2。
  2. 在 mybackupstdaccount 中,将快照 mybackupstdpageblob_ss2 升级为新的备份基本页 Blob mybackupstdpageblobrestored
  3. 为此已还原的备份页 Blob 创建名为 mybackupstdpageblobrestored_ss1 的快照。
  4. 将已还原页 Blob mybackupstdpageblobrestored 从 mybackupstdaccount 复制到 mypremiumaccount,作为新的高级磁盘 mypremiumdiskrestored
  5. 为 mypremiumdiskrestored 创建名为 mypremiumdiskrestored_ss1 的快照,以便将来执行增量备份。
  6. 将 DS 系列 VM 指向已还原的磁盘 mypremiumdiskrestored,并从 VM 分离旧的 mypremiumdisk
  7. 使用 mybackupstdpageblobrestored 作为备份页 Blob,根据前一部分中所述,开始针对已还原的磁盘 mypremiumdiskrestored 执行备份过程。

后续步骤

使用以下链接详细了解如何创建 Blob 的快照和规划 VM 备份基础结构。

通过递增快照备份 Azure 非托管 VM 磁盘的更多相关文章

  1. 有关 Azure IaaS VM 磁盘以及托管和非托管高级磁盘的常见问题解答

    本文将对有关 Azure 托管磁盘和 Azure 高级存储的一些常见问题进行解答. 托管磁盘 什么是 Azure 托管磁盘? 托管磁盘是一种通过处理存储帐户管理来简化 Azure IaaS VM 的磁 ...

  2. kvm快照备份及常用命令

    转载自:http://www.myjishu.com/?p=431 好文章 kvm快照备份及常用命令 kvm快照,分两种: 1种lvm快照,如果分区是lvm,可以利用lvm进行kvm的快照备份 2种由 ...

  3. Azure 托管镜像和非托管镜像对比

    目前中国区 Azure 也已经可以使用命令制作托管镜像了.但对于托管镜像和非托管镜像,就像托管磁盘和非托管磁盘一样,很多人可能一开始无法理解.这里就此进行了一个简单对比: 通过对比测试,这里总结了这两 ...

  4. Azure Powershell使用已有特殊化非托管磁盘创建ARM虚拟机

    生成已有特殊化非托管磁盘的方法主要有如下两种: 1.使用StorageExplorer存储管理工具,复制特殊化磁盘到一个新的容器下 2.New Portal中删除虚拟机,默认vhd文件会保留在存储账号 ...

  5. Azure ARM (20) 将非托管磁盘虚拟机(Unmanage Disk),迁移成托管磁盘虚拟机(Manage Disk)

    <Windows Azure Platform 系列文章目录> PowerShell我已经提交到GitHub: https://github.com/leizhang1984/AzureC ...

  6. 将 Windows 虚拟机从非托管磁盘转换为托管磁盘

    如果有使用非托管磁盘的现有 Windows 虚拟机 (VM),可通过 Azure 托管磁盘服务将 VM 转换为使用托管磁盘. 此过程会同时转换 OS 磁盘和任何附加的数据磁盘. 本文介绍如何使用 Az ...

  7. [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析

    云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析 在虚拟机创建完成之后,CPU和内存的配置等等基本上是一目了然的.如果不考虑显卡性能,一台机器最重要的性能瓶颈就是硬盘. ...

  8. Azure Backup (3) 使用Azure备份服务,备份Azure虚拟机

    <Windows Azure Platform 系列文章目录> 本将介绍,如何使用Azure备份服务,备份Azure虚拟机. 我们先预先创建2台Windows VM (命名为LeiVM00 ...

  9. 斗地主你什么时候才会托管?(.NET中的托管于非托管)

    文章部分引自<.NET4.0面向对象编程漫谈(基础篇)>第1章.NET面向对象编程基础(作者:金旭亮) 无意间看到一位四五岁左右小朋友在玩斗地主,总开始到结束,她一直都在使用“提示”(托管 ...

随机推荐

  1. chrome版本与对应的chromedriver驱动【转载】

    chrome版本与对应的谷歌驱动(chromedriver) 1.下载chromedriver:http://chromedriver.storage.googleapis.com/index.htm ...

  2. windows10 设置软件开机启动

    在 C:\Users\your_name\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 在这个目录下,新建你想开机启动的软 ...

  3. DOS在这里

    转自: http://blog.csdn.net/rheostat/article/details/8043835 在右键菜单中添加Dos快捷通道-dos在这里 在右键菜单中添加 Dos 窗体 不用每 ...

  4. java RMI原理详解

    java本身提供了一种RPC框架——RMI(即Remote Method Invoke 远程方法调用),在编写一个接口需要作为远程调用时,都需要继承了Remote,Remote 接口用于标识其方法可以 ...

  5. bootstrap轮播图

    <!doctype html><html><head> <meta charset="utf-8"> <title>使用 ...

  6. printf中用法详解

    %c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% printf的格式控制的完整格式: %  -  0  m ...

  7. 在Android开发中替换资源图片不起作用的解决方法

    现象 在android开发中,经常会需要替换res\drawable中的图片,打开res\layout下的文件预览布局页面发现图片已经被替换,但在模拟器或者真实机器上运行时发现该图片并没有被替换,还是 ...

  8. Java集合类源码解析:HashMap (基于JDK1.8)

    目录 前言 HashMap的数据结构 深入源码 两个参数 成员变量 四个构造方法 插入数据的方法:put() 哈希函数:hash() 动态扩容:resize() 节点树化.红黑树的拆分 节点树化 红黑 ...

  9. 一:MyBatis知识整理(1)

    一:MyBatis的架构 1.mybatis配置SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文 ...

  10. JdbcTemplate完全学习

    概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式. JdbcTe ...