
我的儲存設備安裝如下:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 193G 35G 148G 19% /
/dev/md4 492G 73M 466G 1% /mnt
我的 KVM 映像位於/kvm/vhdd/
分割區上/dev/md2
ls -l /kvm/vhdd/wwe.img
-rw------- 1 libvirt-qemu kvm 163611607040 Mar 9 09:12 /kvm/vhdd/wwe.img
我需要移動這個圖像分區/dev/md4
,即目錄/mnt
。
這個怎麼做?我可以停止我的虛擬機器。但停止後我該做什麼?我應該做嗎cp
?還是我應該編輯配置?我發現
grep -R "/kvm" /etc/
/etc/libvirt/qemu.conf:# "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
/etc/libvirt/storage/autostart/iso.xml: <path>/kvm/iso</path>
/etc/libvirt/storage/autostart/vhdd.xml: <path>/kvm/vhdd</path>
/etc/libvirt/storage/iso.xml: <path>/kvm/iso</path>
/etc/libvirt/storage/vhdd.xml: <path>/kvm/vhdd</path>
/etc/libvirt/qemu/wwe.xml: <emulator>/usr/bin/kvm-spice</emulator>
/etc/libvirt/qemu/wwe.xml: <source file='/kvm/vhdd/wwe.img'/>
/etc/libvirt/qemu/autostart/wwe.xml: <emulator>/usr/bin/kvm-spice</emulator>
/etc/libvirt/qemu/autostart/wwe.xml: <source file='/kvm/vhdd/wwe.img'/>
/etc/default/libvirtd:# Start libvirtd to handle qemu/kvm:
/etc/default/qemu-kvm:# /run/hugepages/kvm
/etc/apparmor.d/libvirt/libvirt-68d2ecf6-4569-49cc-871f-042a42ad1c03.files: "/kvm/vhdd/wwe.img" rwk,
/kvm/vhdd/
我應該在配置中替換此路徑嗎?請幫忙,我擔心服務崩潰,謝謝。
答案1
備份原始虛擬機器:
- virsh 關閉 WWE
- virsh 列表 --全部
- cp /etc/libvirt/qemu/wwe.xml /etc/libvirt/qemu/orig-wwe.xml
- cp /kvm/vhdd/wwe.img /kvm/vhdd/orig-wwe.img
將虛擬機器映像移到分割區 /mnt/kvm:
mkdir /mnt/kvm
MV /kvm/vhdd/wwe.img /mnt/kvm/wwe.img
編輯 XML 檔: vim /etc/libvirt/qemu/wwe.xml
From: <source file='/kvm/vhdd/wwe.img'/> To: <source file='/mnt/kvm/wwe.img'/>
維爾什開始WWE
筆記:您可以隨時使用原始檔案還原到原始狀態,但以下是用於在 KVM Infra 中複製和移動 VM 的替代方法。
KVM - 從可用影像複製訪客:
1-建立基礎虛擬機並安裝作業系統,關閉基礎虛擬機
virsh shutdown basevm
2- 將其 XML 檔案轉儲到 template.xml 並將其映像複製到 template.qcow2
virsh dumpxml basevm > /etc/libvirt/qemu/template.xml
cp /home/kvm/images/basevm.qcow2 /home/kvm/images/template.qcow2
3-在template.xml中將磁碟來源檔案指向template.qcow2
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/home/kvm/images/template.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
4- 在 template.qcow2 上執行 virt-sysprep。重置映像,例如刪除 SSH 金鑰、建立新的 MAC 位址、清理日誌檔案等。
virt-sysprep -a /home/kvm/images/template.qcow2
5-此後您不再需要基礎虛擬機器。如果不用則將其刪除。
virsh undefine basevm
rm /home/kvm/images/basevm.qcow2
6-從範本複製新虛擬機器:template.xml 和 template.qcow2
virt-clone --connect qemu:///system --original-xml /etc/libvirt/qemu/template.xml --name server --file /home/kvm/images/template.qcow2
KVM - 將訪客移到另一台主機:
1-完成上述步驟後,將 xml 和映像檔傳輸到新的主機 KVM:
scp /etc/libvirt/qemu/template.xml kvm02:/etc/libvirt/qemu/template.xml
scp /home/kvm/images/template.qcow2 kvm02:/home/kvm/images/template.qcow2
virt-sysprep -a /home/kvm/images/template.qcow2
virsh define /etc/libvirt/qemu/template.xml
virsh start vm
答案2
如果我理解,您需要將 /kvm/vhdd/wwe.img 移到 /mnt 中的某個位置(假設 /mnt/kvm/vhdd/wwe.img )?
如果是這樣我會:
停止虛擬機器(使用 poweroff 或虛擬機器本身的其他命令),然後等待 virt-manager(或 virsh)中的停止狀態
將圖像檔案移動到新位置
變更虛擬機器定義中的映像位置:
使用 virt-manager GUI(刪除虛擬機器定義中的硬碟並從新位置再次新增),
或使用 virsh(假設虛擬機器名稱為“wwe”),例如:
~# virsh dumpxml wwe > wwe.xml ~# sed "s[file='/kvm/vhdd/wwe.img'[file='/mnt/kvm/vhdd/wwe.img'[" wwe.xml > wwe_new.xml ~# diff wwe.xml wwe_new.xml
(僅將文件位置變更顯示為差異)
~# virsh undefine wwe ~# virsh define wwe_new.xml
重新啟動虛擬機器。
答案3
除了已經說過的內容之外,我建議使用virsh edit
而不是直接編輯 /etc 中的 xml 檔案。該文件中的註解說:
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit vmname
or other application using the libvirt API.
-->
所以實際的流程是這樣的:
virsh shutdown <vmname>
mv oldpath/image.qcow newpath/image.qcow
virsh edit <vmname>
搜尋標籤標籤<source file="...">
並相應地更改路徑。virsh start <vmname>