是否可以删除Azure角色主机并在没有清理的情况下在同一主机上启动它?

时间:2011-07-20 10:16:53

标签: windows azure crash cloud reliability

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

我不是在谈论完美的Azure感知代码。我的角色可能会使用第三方黑匣子代码,现在对Azure和“本地存储”一无所知,只会调用System.IO.Path.GetTempPath(),从而在某些非Azure友好位置创建文件。

问题是,如果角色是在同一台主机上启动的,并且某些第三方没有清除临时文件夹,则该文件夹仍然没有文件,并且该角色将无法运行。根据{{​​3}},我的角色可能会保留本地更改,这在上述场景中是个大问题。

重新启动角色时,是否可以保证重置创建的临时文件等本地更改?如何确保启动角色处于合理清洁状态?

1 个答案:

答案 0 :(得分:3)

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

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

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