我使用 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 --atomic
RHEL 類型(包括 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 自動化運行的腳本中應用這些簡單的步驟,我能夠以最短的停機時間獲得正在運行的虛擬機的定期完整備份(取決於原始虛擬機的大小,因為如上所述,最好暫停複製時的原始虛擬機器)