菜鸟科技网

KVM迁移虚拟机命令有哪些关键参数?

KVM(Kernel-based Virtual Machine)迁移虚拟机是虚拟化管理中的重要操作,主要用于实现负载均衡、资源优化或主机维护,迁移分为实时迁移(Live Migration)和冷迁移(Cold Migration),前者在虚拟机运行状态下完成,后者需关闭虚拟机,以下是KVM迁移虚拟机的详细命令及操作流程,涵盖不同场景下的实现方法。

KVM迁移虚拟机命令有哪些关键参数?-图1
(图片来源网络,侵删)

准备工作

迁移前需确保:

  1. 源主机和目标主机网络互通,且配置相同网段或使用隧道(如GRE、VXLAN)。
  2. 两台主机安装相同版本的KVM、QEMU和libvirt,并开启SSH免密登录。
  3. 共享存储(如NFS、iSCSI)或确保虚拟机磁盘文件可跨主机访问(若使用本地存储,需手动复制磁盘文件)。
  4. 防火墙允许libvirt默认端口(16509)及通信端口(如5900-5930用于VNC)。

实时迁移命令(在线迁移)

实时迁移通过virsh命令实现,核心命令为virsh migrate,语法如下:

virsh migrate --live [--p2p] [--tunnel] [--unsafe] [--persistent] [--verbose] [--bandwidth MB/s] 
DOMAIN qemu+ssh://USER@TARGET_HOST/system 
[migrate://]DISK_IMAGE_PATH 

参数说明:

  • --live:实时迁移(不关闭虚拟机)。
  • --p2p:点对点迁移(不通过libvirtd代理)。
  • --tunnel:通过SSH隧道传输数据(默认)。
  • --unsafe:强制迁移(可能导致数据不一致,慎用)。
  • --persistent:迁移后目标主机保留虚拟机配置。
  • --bandwidth:限制迁移带宽(单位MB/s)。
  • DOMAIN:虚拟机名称或ID。
  • qemu+ssh://USER@TARGET_HOST/system:目标主机连接URI(需SSH免密)。
  • DISK_IMAGE_PATH:磁盘路径(若使用共享存储可省略)。

示例:

  1. 基本实时迁移(通过SSH隧道,默认方式):

    virsh migrate --live myvm qemu+ssh://root@192.168.1.100/system
  2. 指定带宽限制(限制为100MB/s):

    KVM迁移虚拟机命令有哪些关键参数?-图2
    (图片来源网络,侵删)
    virsh migrate --live --bandwidth 100 myvm qemu+ssh://192.168.1.100/system
  3. 使用本地磁盘迁移(需提前将磁盘文件复制到目标主机):

    virsh migrate --live myvm qemu+ssh://192.168.1.100/system file:///var/lib/libvirt/images/myvm.qcow2

冷迁移命令(离线迁移)

冷迁移需先关闭虚拟机,再通过virsh define或手动复制文件实现。

步骤:

  1. 关闭虚拟机

    virsh shutdown myvm
  2. 导出虚拟机配置

    KVM迁移虚拟机命令有哪些关键参数?-图3
    (图片来源网络,侵删)
    virsh dumpxml myvm > myvm.xml
  3. 复制磁盘文件到目标主机

    scp /var/lib/libvirt/images/myvm.qcow2 root@192.168.1.100:/var/lib/libvirt/images/
  4. 在目标主机导入配置

    virsh define myvm.xml
  5. 启动虚拟机

    virsh start myvm

迁移后验证

  1. 检查虚拟机是否在目标主机运行:

    virsh list --all
  2. 确认虚拟机网络、存储等功能正常。

常见问题与解决

  1. 迁移失败,提示“permission denied”

    • 原因:SSH免密登录未配置或目标主机目录权限不足。
    • 解决:执行ssh-copy-id root@TARGET_HOST,并确保目标主机目录(如/var/lib/libvirt/images/)对源主机可写。
  2. 迁移卡顿或中断

    • 原因:网络带宽不足或磁盘I/O性能瓶颈。
    • 解决:增加--bandwidth参数限制流量,或优化网络配置(如使用万兆网络)。

FAQs

Q1: 实时迁移时虚拟机卡顿如何处理?
A: 可能是网络带宽不足或目标主机资源紧张,可通过virsh migrate --bandwidth限制迁移速率,或检查目标主机CPU、内存是否充足,确保两台主机间网络延迟低于5ms。

Q2: 冷迁移后虚拟机无法启动怎么办?
A: 检查目标主机磁盘路径是否正确,以及XML配置中的<source>路径是否与实际磁盘位置一致,可使用virsh edit myvm修改配置文件,确保<disk type='file' device='disk'>中的<source file='/path/to/disk'/>路径正确。

分享:
扫描分享到社交APP
上一篇
下一篇