Windows

鎖定 Windows 磁碟以進行備份(EC2 快照)

  • February 11, 2017

我正在尋找一種方法來將所有掛起的寫入刷新到 Windows 中的磁碟,然後緩衝所有未來的寫入,直到命令允許。

我想刷新 SQL Server 寫入和 Windows 系統寫入,然後緩衝兩者。

要清楚我在做什麼:

我在 EC2 上使用 Windows 2008 R2 和 SQL Server 2008 R2。我在這些駐留的驅動器上執行每小時快照。當沒有任何關鍵的變化時,這些快照會很好 - 但我時不時會得到一個糟糕的快照。在最壞的情況下,如果發生驅動器故障(從技術上講是 EBS 故障),如果我有 3 個錯誤的每小時快照,我會失去 4 小時的數據。

快照已經解決了快速、差異備份和快速、輕鬆的恢復問題——所以我正在尋找一種方法來刷新所有內容,使其在磁碟上處於一致狀態,然後暫停所有寫入直到快照完成。我很高興為我呼叫的服務編寫一些程式碼來實現這一點,但我需要知道我需要編寫哪些 API/命令才能完成任務。

我知道我可以創建一個單獨的捲,我會不斷地執行 Windows 備份,然後對其進行快照,但這會顯著延長備份過程,感覺就像是 hack。我知道 Windows 和 SQL Server 都非常擅長緩衝寫入,所以這似乎是我應該能夠就地完成的事情。

想法?

您可以選擇在 Windows 中利用 Shadow Copy。Shadow Copy 程序本身會在送出自己的快照之前耗盡所有寫入緩衝區。安排它在 EC2 快照之前一兩分鐘拍攝快照。這樣,當 EC2 快照觸發時,您的系統中已經有一個最近的、一致的副本。

我無法回答如何鎖定磁碟,因此 Windows 不會寫入或強制刷新,所以這將是一個一半的答案,但是您的問題沒有註意到一條相關資訊:

ec2-snapshot 過程是即時的。您不必等待它完成!啟動它後,您可以再次開始使用磁碟,並且快照仍將獲取快照點的數據,而不是目前狀態。發生這種情況是因為一旦您將其標記為快照,寫入磁碟的所有新數據都會在一種覆蓋磁碟中排隊,並且您請求快照時的數據會被保留。

這應該使您的其他問題更容易解決。您需要做的就是刷新到磁碟以使所有內容保持一致,然後暫停幾秒鐘,同時確保快照 API 返回成功程式碼,以便您知道該過程已啟動,然後您可以繼續編寫。

引用自:https://serverfault.com/questions/268742