【libvirt】手动迁移虚拟机的操作步骤

当你通过直接复制文件的方式来创建一个新的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>
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
libvirt是一种用于管理虚拟化平台的开源工具,可以通过它来管理KVM虚拟机libvirt提供了一组命令行工具和API来管理虚拟机,可以使用它来抓取KVM虚拟机的监控指标数据。 以下是使用libvirt抓取KVM虚拟机监控指标数据的步骤: 1. 安装libvirt工具及相关依赖 ```shell sudo apt-get install libvirt-bin libvirt-dev qemu-kvm ``` 2. 打开libvirt的API libvirt提供了多种语言的API,如C、Python、Java等,这里以Python为例,打开libvirt的API: ```python import libvirt conn = libvirt.open('qemu:///system') ``` 3. 获取虚拟机对象 使用`conn.listDomainsID()`函数获取所有虚拟机的ID列表,然后使用`conn.lookupByID(domain_id)`函数获取指定虚拟机的对象。 ```python domain_id_list = conn.listDomainsID() if len(domain_id_list) == 0: print('No active domains') else: for domain_id in domain_id_list: domain = conn.lookupByID(domain_id) ``` 4. 获取监控指标数据 可以使用`domain.info()`函数获取虚拟机的基本信息,如CPU使用率、内存使用情况等,也可以使用`domain.blockStats()`和`domain.interfaceStats()`函数获取虚拟机的磁盘和网络IO数据。 ```python # 获取虚拟机CPU使用率和内存使用情况 cpu_stats = domain.info()[4] mem_stats = domain.memoryStats() # 获取虚拟机磁盘IO数据 disk_stats = {} for disk in domain.listDisks(): block_info = domain.blockStats(disk) disk_stats[disk] = {'read_bytes': block_info[1], 'write_bytes': block_info[3]} # 获取虚拟机网络IO数据 net_stats = {} for interface in domain.interfaceAddresses(libvirt.VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT, 0): stats = domain.interfaceStats(interface) net_stats[interface] = {'rx_bytes': stats[0], 'tx_bytes': stats[4]} ``` 5. 关闭libvirt连接 ```python conn.close() ``` 以上就是使用libvirt抓取KVM虚拟机监控指标数据的步骤,可以根据自己的需求来调整获取的监控指标数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值