将Azure虚拟机本地文件夹备份到blob存储?

时间:2013-02-24 14:01:35

标签: azure backup virtual-machine azure-storage-blobs

我刚刚在Windows Azure中设置了一个额外的小型VM实例来为我们公司运行帮助控制台。可以通过简单的.NET界面更新和发布帮助文件。显然,平面html文件已部署到VM上的本地驱动器,并通过IIS公开公开。我只是想知道这有多稳定?如果虚拟机出现硬件故障,可能是没有自动故障转移,我们对帮助系统进行的任何编辑都将丢失?

任何人都可以推荐一种方法将源文件从VM中传送到blob存储中吗?我可以编写一个应用程序来执行此操作,我只是想知道是否有一个开箱即用的解决方案吗?

其他信息:

  • VM实例正在运行Server 2008 R2 SP1(作为虚拟机而非Web角色)
  • 需要每24小时创建一次备份
  • 需要从blob容器中自动清除老化的备份(3天以上)
  • 我们使用的帮助系统名为HelpConsole 2012
  • 以每周2-3次myabe的速度添加新页面

1 个答案:

答案 0 :(得分:2)

答案取决于您是在Windows Azure虚拟机中还是在Windows Azure Web角色上运行此操作。

如果您在Windows Azure虚拟机上运行此操作,则VHD存储在BLOB存储中,如果该站点运行的是C:驱动器而不是数据磁盘,则系统会将某些主机缓存转为对于读取和写入都是如此。在这种情况下,可能(取决于您用来编写文件的方法)在发生故障之前数据不会被推回到BLOB存储中的VHD。您可以确保您的写入方法执行直写操作,或者关闭写入缓存。更好的是,为您的网站文件附加数据磁盘。默认情况下,数据磁盘具有读取和写入缓存(您可以打开读取缓存)。由于VHD是持久存在的,因此您不必担心编辑丢失的担忧。您可以编写脚本来获取文件的快照并将它们单独移动到BLOB存储,甚至将它们推送到其他位置。使用此选项需要考虑的另一件事是,您必须关心VM实例并对其进行修补和更新。

如果您正在运行Web角色,那么是,如果发生故障并且VM经历自我修复,它将确实使用旧文件重新部署。在这种情况下,我建议更改Web角色中的代码,当它将更新写入本地文件时,它还会将本地文件的副本放入BLOB存储中。此外,在Web角色OnStart中,您可以联系BLOB存储并在本地下载所有新内容。使用这种方法非常小心,因为它只适用于一个实例,而不是多个实例。如果您计划运行服务器的多个实例(如果您希望SLA用于正常运行时间,则必须这样做),那么您的代码需要更强大一些,并且写出BLOB存储然后警告该角色的所有实例有一个新文件可以在本地下载。

Web角色的另一个选择是为内容编写处理程序,以便请求进入并直接映射到文件BLOB Storage。然后可以进行更新以将编辑内容直接编辑到BLOB存储中的文件。这会将平面文件的服务从计算节点卸载到BLOB存储,您甚至可以实现一些缓存并通过处理程序将内容流回,而不是让它们直接命中BLOB存储。

现在,另一种选择是使用Windows Azure网站。 Windows Azure网站中的网站文件的基础存储是一个共享位置,因此更新其中的文件将立即反映在所有实例中。此外,站点的内容存储在BLOB存储中,可以通过FTP,源代码控制或直接从代码更新。这里有很多选择。您最终可能会转移到保留实例,以帮助远离Web站点的某些配额。网站目前可能不是您的选择,具体取决于其他要求(因为您不需要对网站进行大量控制,因此您需要对环境进行多少控制)。