3

假设我的 Azure 角色在 VM 本地磁盘上存储了一些数据,然后被终止。本地磁盘被映射到某个物理存储,因此存储在本地磁盘上的数据被写入该存储。当我的角色终止时,VM 被回收并且物理存储也被回收。

现在启动了一些其他角色,并且它的本地磁盘恰好映射到与我的角色使用的相同的物理存储上。我很清楚新本地磁盘的逻辑结构已完全重建,我的角色可能留下的所有文件都将消失。但是,新创建的逻辑磁盘下的物理存储恰好是相同的。

具体假设新角色创建一个空文件,然后调用SetEndOfFile()来“扩展”该文件,然后打开它进行读取,并读取当前存储在逻辑磁盘上的数据。除非在 Azure 基础结构中采取特殊措施,否则我不确定这是否会导致文件扩展到我的角色存储的数据并读取该数据。

新角色在技术上是否可以读取我的角色写入的数据?

4

2 回答 2

1

The short answer is no,

All I/O requests from the guest os are handled by the hypervisor, the hypervisor ensures that an insance can only access the assigned storage.

The only way to get access to data from old roles is to get physical access in the containers and grab it from there (if you ever succeed to get passed the datacenters physical security measures and into the sealed containers.) And even then it's not going to be easy as it's my understanding that logical disks do not map one-to-one to individual physical drives, but to clusters of drives, so physically your data will be dispersed across several disks as well.

Furthermore there are also offical disposal procedures in place that ensure that all data is removed from disks that are being disposed of.

Kind regards, Yves

于 2012-06-05T12:56:58.320 回答
0

+1 给@Yves,是的,答案是否定的。

我想添加更多关于如何在任何 Windows Azure VM 中创建和使用虚拟驱动器的信息。您可能已经知道,每个角色(Web 或 Worker)中至少有 3 个虚拟驱动器:

  • Drive E:是应用程序驱动器,1GB 固定大小,由 FC 使用用户更新的 Package 动态创建。此驱动器并非设计用于包含任何用户数据。此驱动器是按用户部署创建的,因此对于每个角色来说都是新的。此驱动器由 FC 提供给 Azure 虚拟机,并在预配期间附加到 VM。

  • 驱动器 D:是附加到角色的操作系统/系统驱动器(大约 25GB 大小),并且与每个角色相同,取决​​于操作系统版本。这仅适用于 Web 角色,但启动任务和工作角色可以写入它。该驱动器是专用的操作系统驱动器,并认为用户不应将其任何内容放在其上。

  • 驱动器 C:是用户数据所在的用户驱动器。当您的应用程序中有本地存储时,将在此处创建存储。此驱动器是根据角色 VM 大小虚拟创建的。
    • 在 Windows Azure 主机上,您可以创建小型 VM 或超大型 VM,因此取决于您的角色大小,您的 VM 将获得 ~250GB C 驱动器或 2TB C 驱动器,并且此存储是从主机获取的。
    • 在主机上,连接了一堆磁盘以提供大的逻辑空间来满足从小型到大型 VM 大小的本地存储需求。配置角色 VM 时,取决于在 Host 上创建什么样的角色 VM,从总逻辑空间创建一个虚拟 HDD,并作为用户驱动器附加到 VM。

当有任何来宾操作系统更新或 Azure 应用程序更新时:

  • 更新发生在 Drive D: through Diff image
  • 更新发生在 Drive E:通过 Diff Image
  • 由于驱动器 C 是用户驱动器,并且“本地存储”不受来宾更新或角色更新的直接影响,但是如果设置了“本地存储 - 角色回收时清理”属性,则本地存储将在角色被回收时被清理。

那么,当您从 Azure 中删除应用程序时会发生什么:

  • OS Drive D:/Diff 驱动器被丢弃
  • Application Drive E:/Diff 驱动器也被丢弃
  • 用户驱动器 C: 被移除并且空间被主机收回。
    • 现在,当在主机上创建一个新 VM 时,会创建一个新的用户驱动器 C:并从可用物理空间分配空间,它可以是从 ~250GB 到 ~2TB 的任何大小,具体取决于角色 VM 大小。
    • 即使下次在主机上配置超大客户 VM(需要最大大小为 2TB 的虚拟磁盘)时,VHD 也会重新从头开始重建。所以 XLarge VM 的背靠背 2TB 虚拟磁盘仍然不一样。
    • 因此,即使您使用上面问题中提到的文件系统 API,您的旧文件也不可能从以前的磁盘中恢复。

(抱歉写了大篇幅)

于 2012-06-06T04:17:05.107 回答