實時虛擬機器上的 qemu-img 快照

實時虛擬機器上的 qemu-img 快照

我使用 QCOW2 映像建立了多個 KVM 虛擬機器。
每個虛擬機器都有自己的 qcow2 文件,並且不基於任何備份文件。
我的問題與這些正在運行的虛擬機器上的 QCow2 映像的快照特別相關。
如果我在正在執行的虛擬機器上執行以下命令:
qemu-img snapshot -c backup /vms/vm10001.qcow2

上述命令會損害正在運行的虛擬機器檔案系統嗎?
我的目的是使用以下命令將快照轉換為 qcow2 映像:
qemu-img convert -s backup /vms/vm10001.qcow2 /vms/output.qcow2

我無法使用“virsh”命令,因此我試圖找出一種使用 qemu-img 完成任務的方法

回答/更新1
好的,所以我在幾個測試虛擬機器上測試了這一點,上面的情況是不可能的。如果不暫停虛擬機,則無法qemu-img snapshot在即時虛擬機上運作。

在 RHEL 基礎節點上執行此操作的唯一方法是使用:
virsh snapshot-create <dom>

上面將保存VM狀態並在內部呼叫qemu-img snapshot -c。然而,這可能需要一些時間,這讓我想到了第二個問題

問題2 : virsh snapshot-create <dom> --disk-only --atomicRHEL 類型(包括 RHEL 7)的基本節點不支持,因為 qemu-kvm 非常舊。
所以唯一的選擇是使用virsh snapshot-create <dom>速度有點慢的方法。
是否可以執行以下操作:
virsh suspend <dom>
qemu-img snapshot -c backup /vms/<dom>.qcow2
virsh resume <dom>

上面的操作看起來比snapshot-create快很多

回答/更新2

甚至上面的問題2也是不可能的。經過大量研究後,我得出了同樣的結論。

問題3:

有沒有什麼方法可以為 RHEL 6 / 7 基本節點上具有 Qcow2 磁碟的線上虛擬機器建立快照,然後備份該快照以便稍後恢復?

答案1

這不是一個確切的答案,但會告訴你方法。

我們長期使用linux KVM。過去 qcow2 不支援快照。在我們的第一個 KVM 主機中,我們不想使用 LVM 快照,因此我們無法進行即時備份。

然後我們發現Linux 熱複製工具

使用該工具;我們可以凍結整個主機檔案系統並使用自訂備份腳本將 qcows 複製到外部磁碟。

我們的備份腳本是這樣的;

# Mount Usb
mount /dev/sdb1 /USBDISK
# Mount file system as ro to temp folder
hcp --read-only --mount-point /SNAPSHOT /dev/md1
# Copy files out
cp /SNAPSHOT/*.qcow2 /USBDISK
# Stop Hot Copy
hcp --remove /dev/hcp1
# Remove Usb
umount /USBDISK

答案2

我對 KVM 的經驗實際上非常有限,但處於非常相似的情況,這對我有用:

首先,我將名為 MACHINE 的虛擬機器的設定進行備份:

# virsh dumpxml MACHINE > /path/to/configfile.xml

然後我掛起名為 MACHINE 的虛擬機器以防止新建立的電腦出現損壞:

# virsh suspend MACHINE

接下來,我使用 qemu-img 命令從名為 MACHINE 的虛擬機器建立名為 MACHINE-BAK.qcow2 的快照,即使通常用於在格式之間進行轉換:

# qemu-img convert -O qcow2 /path/to/MACHINE.qcow2 /path/to/MACHINE-BAK.qcow2

接下來,我恢復名為 MACHINE 的原始虛擬機器的正常操作:

# virsh resume MACHINE

在透過 crontab 自動化運行的腳本中應用這些簡單的步驟,我能夠以最短的停機時間獲得正在運行的虛擬機的定期完整備份(取決於原始虛擬機的大小,因為如上所述,最好暫停複製時的原始虛擬機器)

相關內容