0

假设我的 Azure 角色在 Windows 临时文件夹中创建了很多临时文件并且忘记删除它们。在某些时候,它会收到“无法创建临时文件”错误。假设一旦发生这种情况,我的角色代码会抛出异常RoleEntryPoint.Run()并且角色会重新启动。

我不是在这里谈论完美的 Azure 感知代码。我的角色可能会使用第三方黑盒代码,这些代码现在与 Azure 和“本地存储”无关,只会调用System.IO.Path.GetTempPath()并因此在某个不适合 Azure 的位置创建文件。

问题是,如果角色是在同一台主机上启动的,并且临时文件夹没有被某些第三方清理,则该文件夹仍然充满文件,角色将无法运行。根据这个答案,可能会为我的角色保留本地更改,这在上述情况下是一个大问题。

重新启动角色时,是否保证会重置创建的临时文件等本地更改?如何确保启动的角色处于相当干净的状态?

4

1 回答 1

3

该角色会在新部署、升级和黄金映像(基本来宾操作系统 vhd)中新扩展的实例上重置。通常对于重新启动和崩溃,您会获得相同的 VHD 和机器。

您编写的代码将无权写入操作系统驱动器 (D:) - 没有提升(或通过 RDP 登录来执行此操作)。此外,用户的角色根驱动器 (E:) 上有一个配额,可以防止您意外地用文件填充驱动器。这曾经是你被允许写的所有包大小的 10%。资源驱动器 (C:) 上也有一个配额,但这要慷慨得多,并且取决于 VM 大小。

非本地资源驱动器上的任何内容都不会被清理,但如果您尝试超过配额,最终会出现错误。您可以关闭本地资源上的粘性存储,它们将在重新启动时被清理。当然,与对磁盘的其他更改一样,这些非本地资源临时文件有时会在客户操作系统(或底层根操作系统)升级时丢失。如果您正在运行提升并且真的搞砸了您的安装(您可以这样做),您将需要点击门户上的“重新映像”按钮,它会全部返回到黄金映像。

于 2011-07-20T12:31:33.993 回答