我在 CentOS 6.3 上運行 qemu-img-0.12.1.2-2.355.0.1.el6,使用虛擬機器的原始映像。有什麼方法可以安全地備份客人而不阻止他們嗎?我嘗試在測試來賓上建立快照,該來賓未運行但出現錯誤:「此 qemu 二進位檔案不支援即時磁碟快照」。這是否意味著原始格式不適合任何類型的快照,或者是我的 KVM 套件的問題?我讀過,暫停來賓足以執行 dd 操作,對嗎?請問您能分享一下您在該領域的一些最佳實踐嗎?
答案1
如果您正在使用生的影像文件那麼獲得一致快照的唯一方法是掛起或關閉虛擬機器。
您可以使用 qcow2 映像檔拍攝快照,而無需暫停虛擬機,但快照將成為該檔案的一部分。這可能合適也可能不合適,具體取決於您的情況。
如果您使用 CentOS 7 或目前的 Fedora 虛擬機器管理程序,您將有更多選擇,例如可快照 LVM 磁碟區或 ZFS zvol。在這些現代系統上,您可以使用virsh domfsfreeze
來賓、拍攝快照、virsh domfsthaw
來賓,然後備份快照。這需要在來賓中運行 qemu-guest-agent。
答案2
暫停 VM-svirsh suspend <domain>
只是凍結 VM,根據文檔,所有磁碟 I/O 和網路 I/O 都被暫停,而 VM 仍然消耗主機的 RAM。
如果您有 Centos,那麼您很可能也有 LVM 分割區,並在其之上有 XFS 分割區。如果該說法屬實,那麼您可以透過以下方式進行備份:
- 刪除虛擬機器上的快取並掛起它,
- 刪除主機上的快取並執行 LVM 快照,
- 在主機中的某個位置掛載 LVM 快照並執行備份計畫。
即使使用資料庫伺服器,它也適用於我。假設主機和虛擬機器上的核心參數是預設的,備份檔案伺服器(例如 samba)甚至是完全安全的,無需刪除主機或虛擬機器上的快取。資料遺失極少。例如,Ext4 每 5 秒在 RAM 中提交一次髒頁(預設設定)。它可能會導致凍結前 5 秒內提交的資料遺失。這樣的資料遺失量對我來說是可以接受的。
每種備份方法都有一些缺點。停機或潛在的資料遺失。許多資料庫管理員認為,當資料庫引擎(如 MS SQL)在接受變更之前必須將每個交易提交到檔案系統時,資料遺失可能會導致資料損壞。另一方面,他們接受從備份中恢復資料並同意資料遺失。