備份模式:中斷的代價寫得清清楚楚,一致性的代價卻沒寫

三種模式之間的差異,通常是用停機時間來解釋。真正的差異在於一致性,而對於持續寫入的虛擬機器來說,這個差異決定了備份究竟有沒有用。

AtlasPVE ·

本條目涵蓋以下問題

  • proxmox 備份模式選哪個
  • proxmox snapshot suspend stop 差別
  • proxmox 資料庫備份有一致性嗎
  • proxmox 備份時會停機嗎
  • proxmox 備份模式選擇

進行備份時要在三種模式之間做選擇,而介面通常以停機時間來說明這三種模式:一種完全不停機,一種停機幾秒鐘,一種會把虛擬機器關機。這麼說沒錯,但並不完整。沒有寫出來的那一面是一致性,而真正的差異就在那裡。

不停機模式實際上做了什麼

在虛擬機器持續執行的同時,擷取磁碟在那一瞬間的狀態。關鍵就在那一瞬間的狀態這幾個字:任何寫到一半的資料,都會以寫到一半的樣子留在裡面。這就像直接拔掉虛擬機器的電源。日誌式檔案系統會在開機時自行整理好,不會出問題。但如果資料庫正好在那一刻寫入到一半,還原時可能就必須執行它自己的復原程序。

這稱為當機一致性(crash consistency),對大多數虛擬機器來說已經足夠。不夠的情況,是虛擬機器裡有某個持續寫入、而且在意自己寫入內容的東西。

不停機也能補上缺口

安裝了客體代理程式之後,就能在備份的那一刻通知檔案系統:先等一下,把手上的資料寫入磁碟。檔案系統會短暫凍結,擷取映像,接著解凍。如此一來,原本拔掉電源的狀態,就變成乾淨暫停的狀態,而且仍然不需要停機。

這是安裝客體代理程式最實際的理由。代理程式不只是用來回報位址的,它正是為了這一刻而存在。

應用程式自己的備份是另一回事

對於會自行保存狀態的應用程式,例如資料庫和郵件儲存區,虛擬機器備份與應用程式傾印負責的是不同的工作。虛擬機器備份能把虛擬機器帶回來;應用程式自己的傾印則能讓資料以應用程式信任的形式回來。在存放重要資料的虛擬機器上,兩者都要做,任何一個都無法取代另一個。

暫停與停止

暫停模式會讓虛擬機器短暫停擺。記憶體狀態是一致的,但除了凍結檔案系統所能提供的之外,它對應用程式本身的一致性並沒有額外幫助,而代價是會停機。

停止是最誠實的選項:在虛擬機器關機時取得的備份,不會留下任何疑問。如果一台虛擬機器能承受夜間一分鐘的停機,這個選項就能讓整個問題消失。

實用規則

預設使用不停機模式,安裝客體代理程式,並在存放真實資料的虛擬機器上同時進行應用程式自己的傾印。出於恐懼而把所有虛擬機器都設成停止模式是錯的:每天晚上都把所有虛擬機器關機的安排,會變成沒有人想碰的安排,總有一天會被關掉。停止模式應保留給少數資料比持續運作更重要的虛擬機器。

Atlas 的做法

進行備份時,Atlas 會並排顯示三種模式,並以淺白的文字說明各自造成的中斷,因此不必去猜哪一種會暫停什麼。預設選取的是不會造成中斷的模式。一致性這一面取決於虛擬機器內部執行的內容,所以這是使用者的決定,而不是產品的決定:本篇條目正是為了讓這個決定能夠做出而寫的。

資料來源

Proxmox 官方文件。內容為英文,且在此主題上以官方文件為準。

相關條目

這項工作在 Atlas 中是什麼樣子?

前往產品頁面