当你通过直接复制文件的方式来创建一个新的Libvirt/QEMU虚拟机后,需要做一些额外的工作来让Libvirt识别并管理这个新的虚拟机。以下是步骤说明:
1. 准备虚拟机磁盘和配置文件
确保你已经复制了原始虚拟机的磁盘文件(通常是.qcow2
或.img
等格式)以及其对应的XML配置文件。
2. 修改虚拟机配置文件
你需要修改新虚拟机的XML配置文件以避免与原有虚拟机发生冲突。主要需要更改的是:
<name>
标签中的虚拟机名称。<uuid>
标签中的UUID,每个虚拟机必须有一个唯一的UUID。<source file>
中的磁盘文件路径,确保指向正确的磁盘文件位置。- 如果使用了MAC地址,也需要修改
<mac address>
标签中的MAC地址。 - 如果使用了自定义的网络模型,如桥接或NAT网络,需要检查
<interface>
配置是否正确。
3. 注册虚拟机
使用Libvirt命令行工具将新虚拟机注册到Libvirt中:
1virsh define /path/to/new-vm.xml
4. 启动虚拟机
启动新注册的虚拟机:
1virsh start new-vm-name
5. 检查虚拟机状态
确认虚拟机是否正常启动:
1virsh list --all
6. 配置网络
如果虚拟机在启动过程中没有自动获取IP地址,你需要手动配置虚拟机内的网络设置。
示例 XML 文件
这里是一个简化的示例,展示如何修改 <name>
, <uuid>
, 和 <mac>
标签
1<domain type='qemu'>
2 <name>new-vm-name</name>
3 <uuid>7323b5a7-944f-4c37-9389-e8d5580f230b</uuid>
4 <memory unit='KiB'>524288</memory>
5 <vcpu placement='static'>2</vcpu>
6 <os>
7 <type arch='x86_64' machine='pc-i440fx-2.11'>hvm</type>
8 <boot dev='hd'/>
9 </os>
10 <features>
11 <acpi/>
12 <apic/>
13 <pae/>
14 </features>
15 <clock offset='utc'>
16 <timer name='rtc' tickpolicy='catchup'/>
17 <timer name='pit' tickpolicy='delay'/>
18 <timer name='hpet' present='no'/>
19 </clock>
20 <on_poweroff>destroy</on_poweroff>
21 <on_reboot>restart</on_reboot>
22 <on_crash>restart</on_crash>
23 <devices>
24 <emulator>/usr/bin/qemu-system-x86_64</emulator>
25 <disk type='file' device='disk'>
26 <driver name='qemu' type='qcow2'/>
27 <source file='/var/lib/libvirt/images/new-vm-disk.qcow2'/>
28 <target dev='vda' bus='virtio'/>
29 </disk>
30 <interface type='network'>
31 <mac address='52:54:00:ab:cd:ef'/>
32 <source network='default'/>
33 <model type='virtio'/>
34 </interface>
35 <serial type='pty'>
36 <target port='0'/>
37 </serial>
38 <console type='pty'>
39 <target type='serial' port='0'/>
40 </console>
41 <input type='mouse' bus='ps2'/>
42 <input type='keyboard' bus='ps2'/>
43 <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
44 <listen type='address' address='0.0.0.0'/>
45 </graphics>
46 <video>
47 <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
48 </video>
49 <memballoon model='virtio'/>
50 </devices>
51</domain>