Azure Drive 简化应用程序迁移至微软云计算过程

  • Abel Avram
  • 崇桦

2010 年 2 月 21 日

话题:.NETREST云计算AzureDevOps语言 & 开发架构

微软近期发布了测试版本的Windows Azure Drive,这个最初在 2009 年的 PDC 大会上被宣布为 XDrive 的存储器访问技术,能通过在存储器二进制大对象上创建一个 NTFS 格式的虚拟硬盘的方法,来简化将 Windows 应用程序迁移到云计算(服务器)上的过程。

Windows Azure 存储服务是一种基于 REST 模式的处理二进制大对象的服务。二进制大对象是一种能存放二进制或者文本文件的存储实体。二进制大对象通常被有序地存放在存储容器中。常见的二进制大对象有两种:

  • 块状二进制大对象——最多 200GB 的容量并支持线性读写的访问操作;这类二进制大对象对于流媒体的存储十分有用。
  • 页面二进制大对象——能够增长至 1TB 的容量并提供了任意读写的访问操作,此类的二进制大对象有助于存放普通的文本或者二进制文件。

存储服务的 API 提供了操作二进制大对象所需的工具,但是这些只对编写新的面向 Azure 云计算的应用程序提供了便利。已经存在的 Windows 应用程序对二进制大对象一无所知,因此它们需要被大规模地改写才能在云上运行。这便有了 Azure Drive 的用武之地了。

Windows Azure 操作系统拥有一个能够将页面二进制大对象安装为 VHD(Virtual Hard Drive,虚拟硬盘)的操作系统驱动器(OS Driver),并且还能对这个 VHD 执行读写操作。对于应用程序来说,这个过程就像操作一个已安装在机器上的普通 NTFS Windows 硬盘一样,但实际上这个操作系统驱动器却在对二进制大对象进行操作。所有无缓冲的或者被划掉的写入数据都被同步送到了存储器上,因此当用户接收到驱动器返回的“成功”信息后,就可以确定他的数据是安全的。如果发生应用程序崩溃或者驱动没有被载入的情况,这个功能将会非常重要。

Azure 开发团队还公开了一些Azure Drive 的技术细节

  • 一个 Drive 就是将一个页面二进制大对象格式化成了固定 NTFS 格式,并且容量为 16MB 至 1TB 的 VHD。
  • 一个虚拟机可以动态加载最多 16 个硬盘。
  • 一个页面二进制大对象在同一时间段只能被一台虚拟机加载并执行读写操作。一个页面二进制大对象的快照可以在同一时间段被多个不同的虚拟机加载并执行只读操作。
  • 用来存储页面二进制大对象的存储器账户和用来执行应用程序的运算帐户应该被保存在 Windows Azure Developer Portal 的同一个物理地点上,以用来获取最好的硬盘性能。
  • Drive 能够通过 Windows Azure Blob 接口进行上传和下载。被格式化成固定 NTFS 格式的虚拟硬盘可以被当作页面二进制大对象,通过使用页面二进制大对象接口进行上传并加载成一个硬盘。类似的,一个格式化了的页面二进制大对象也能通过页面二进制大对象接口进行下载并可被当作一个 VHD 来使用。
  • Windows Azure 提供的操作系统驱动器只能被 Windows Azure 云中的 Windows Azure 虚拟机实例使用。微软现在还没有发布任何一个允许个人远程加载的硬盘。尽管如此,用户还是可以使用 GetBlob 来下载一个硬盘并通过在所下载的机器上加载这个被下载的 VHD 来使用它,但任何对于该下载版本的修改都将不会被发送到 Windows Azure Blob 服务器上。

Azure Drive 已经在二月份的 Azure SDK中发布,该 SDK 中包含了加载了 OS Driver 的 Guest OS 1.1 版本。

PDC2009 上公布的但还没有发布的功能有:

  • 更好地操作云中的虚拟机:
    • 设置云中的虚拟机的管理员权限
    • 用户驱动构建和配置虚拟机镜像
    • 云中的虚拟机上的远程终端访问服务
  • 存储:
    • 可供用户有选择地复制数据的物理存放地点
    • 数据表的次要索引

参考资料:Azure Drive 白皮书 (docx 格式),PDC 2009 相关演讲:Windows Azure Present and FutureWindows Azure Blob and Drive Deep Dive

查看英文原文:Azure Drive Eases the Migration to Microsoft’s Cloud

.NETREST云计算AzureDevOps语言 & 开发架构