锁定 Windows 磁盘以进行备份(EC2 快照)

Chr*_*ini 5 windows backup amazon-ec2 sql-server

我正在寻找一种方法来将所有挂起的写入刷新到 Windows 中的磁盘,然后缓冲所有未来的写入,直到命令允许。

我想刷新 SQL Server 写入和 Windows 系统写入,然后缓冲两者。

要清楚我在做什么:

我在 EC2 上使用 Windows 2008 R2 和 SQL Server 2008 R2。我在它们所在的驱动器上运行每小时快照。当没有任何重要的变化时,这些快照就很好了——但我时不时地得到一个糟糕的快照。最坏的情况是,如果发生驱动器故障(技术上为 EBS 故障),如果我有 3 个错误的每小时快照,我将丢失 4 小时的数据。

快照已经解决了快速、差异备份和快速、轻松的恢复问题——所以我正在寻找一种方法来刷新所有内容,使其在磁盘上处于一致状态,然后暂停所有写入,直到快照完成。我很高兴为我调用的服务编写一些代码来实现这一点,但我需要知道我需要编写哪些 API/命令才能完成任务。

我知道我可以创建一个单独的卷,我不断地运行 Windows 备份,然后对其进行快照,但这会显着延长备份过程,感觉就像一个黑客。我知道 Windows 和 SQL Server 都非常擅长缓冲写入,所以这似乎是我应该能够就地完成的事情。

想法?

sys*_*138 6

您可以选择在 Windows 中利用 Shadow Copy。在提交自己的快照之前,Shadow Copy 进程本身会耗尽所有写入缓冲区。安排它在 EC2 快照之前一两分钟拍摄快照。这样,当 EC2 快照触发时,您的系统中已经有一个最近的、一致的副本。


Cal*_*leb 5

我无法回答有关如何锁定磁盘以便 Windows 不写入或强制刷新的问题,因此这将是一半的答案,但是您的问题没有注意到一条相关信息:

ec2-snapshot 过程是即时的。您不必等待它完成!启动后,您可以再次开始使用磁盘,快照仍将获取快照点的数据,而不是当前状态。发生这种情况是因为一旦您将其标记为快照,所有写入磁盘的新数据都会在某种覆盖磁盘中排队,并且您请求快照时的数据将被保留。

这应该会让你的其他问题更容易。您需要做的就是刷新到磁盘以使所有内容保持一致,然后在确保快照 API 返回成功代码的同时暂停几秒钟,以便您知道该过程已启动,然后您可以继续编写。