虛擬機器和備份

虛擬機器和備份

我有一個虛擬機器(centos),運行一些小檔案的檔案服務。推薦的備份方式是什麼?我應該備份虛擬機磁碟/文件(從虛擬機外部)還是應該在虛擬機內部運行備份代理,以便我備份內容而不是整個虛擬磁碟?

答案1

TLDR:在虛擬機器中安裝備份代理程式。

從虛擬機器外部備份磁碟映像看起來確實很誘人,不是嗎?特別是如果您有多個虛擬機,那麼您只需告訴主機備份所有磁碟映像即可完成,而無需單獨配置每個虛擬機來備份自身。

然而,這種方法的問題在於,主機不知道虛擬機器的作業系統在內部做什麼。它不知道是否有任何磁碟寫入掛起或正在進行。它不知道虛擬機器進程內部的任何寫入快取或輸出緩衝區。因此,它不能保證它備份的磁碟映像將是持續的備份時的映像。備份的映像檔幾乎肯定仍然可用,但很有可能您需要先對其執行檔案系統修復來清理內容。

從外部進行全磁碟映像備份的另一個主要缺點是此類備份主要用於全系統復原。我只需要取回上週四的一個丟失文件的版本,它們對此不太好 - 您需要從週四的備份中恢復整個映像,然後使用其他工具從該文件的第二個副本中提取該文件與從虛擬機器內部進行備份並且只能恢復一個感興趣的檔案相比,這將花費更多的時間和空間。

與此相關的另一個原因是,完整映像備份(最多)更難以增量執行,這意味著您每次執行備份時都需要製作整個映像的完整副本。透過虛擬機器內基於內容的備份,您可以定期進行完整備份,並且僅備份其間發生更改的文件,從而可以使用相同的儲存空間進行更頻繁的備份。

如果您要為災難復原目的製作整個虛擬機的映像,或者將其用作主克隆以創建其他虛擬機,那麼關閉虛擬機並複製完整磁碟映像是一個好方法。但這並不是對正在運行的系統進行例行備份的好方法。

答案2

TL;DR 從虛擬機器外部建立快照

我見過的所有虛擬機主機軟體(包括雲端服務和容器主機)都有快照功能。這是備份正在運行的系統的首選方法,因為快照保證整個磁碟在單一時間點的一致性和原子副本。 VM 主機軟體通常具有來賓作業系統工具,可以在快照之前使檔案系統停頓,但最好在寫入不多的時間(例如晚上)執行快照。大多數系統在保存快照狀態時都會短暫暫停。

快照通常也是增量的。還有重複資料刪除等進階快照功能。

如果系統關閉(未暫停或暫停),您可以只取得虛擬機器檔案的副本,因為您知道不能進行任何寫入,並且所有資料必須已寫入磁碟。

如果您需要還原單一文件,您只需恢復磁碟,將其附加並安裝到另一個系統即可。

如果您對檔案系統中的檔案執行備份,則會出現以下幾個問題:

檔案可能不一致,因為在備份期間可能會發生寫入,因為它不是原子的。例如,Tar 會警告您檔案在備份時被寫入。再舉一個例子,我永遠不會信任其文件已備份的資料庫副本。資料庫系統可能能夠從不一致中恢復,但您想冒這個風險嗎?您最好使用相關的系統工具進行單獨的異地資料庫備份。

另一個問題是僅從檔案建立可啟動系統是很困難的。製作可引導系統也需要引導磁區和分割表等其他東西。這意味著需要安裝額外的恢復步驟完全一樣檔案恢復之前的作業系統。即便如此,即使它啟動了,我也會非常懷疑是否信任它。

相關內容